[Commits] (vajda) - merging children collections with same names ->
RENAME error
commits at osafoundation.org
commits at osafoundation.org
Wed Sep 15 15:43:17 PDT 2004
Commit by: vajda
Modified files:
chandler/repository/item/ItemRef.py 1.95 1.96
chandler/repository/persistence/RepositoryError.py 1.5 1.6
chandler/repository/persistence/XMLRefDict.py 1.9 1.10
chandler/repository/tests/TestMerge.py 1.3 1.4
Log message:
- merging children collections with same names -> RENAME error
ViewCVS links:
http://cvs.osafoundation.org/index.cgi/chandler/repository/item/ItemRef.py.diff?r1=text&tr1=1.95&r2=text&tr2=1.96
http://cvs.osafoundation.org/index.cgi/chandler/repository/persistence/RepositoryError.py.diff?r1=text&tr1=1.5&r2=text&tr2=1.6
http://cvs.osafoundation.org/index.cgi/chandler/repository/persistence/XMLRefDict.py.diff?r1=text&tr1=1.9&r2=text&tr2=1.10
http://cvs.osafoundation.org/index.cgi/chandler/repository/tests/TestMerge.py.diff?r1=text&tr1=1.3&r2=text&tr2=1.4
Index: chandler/repository/item/ItemRef.py
diff -u chandler/repository/item/ItemRef.py:1.95 chandler/repository/item/ItemRef.py:1.96
--- chandler/repository/item/ItemRef.py:1.95 Wed Sep 15 12:41:32 2004
+++ chandler/repository/item/ItemRef.py Wed Sep 15 15:43:14 2004
@@ -1,6 +1,6 @@
-__revision__ = "$Revision: 1.95 $"
-__date__ = "$Date: 2004/09/15 19:41:32 $"
+__revision__ = "$Revision: 1.96 $"
+__date__ = "$Date: 2004/09/15 22:43:14 $"
__copyright__ = "Copyright (c) 2002 Open Source Applications Foundation"
__license__ = "http://osafoundation.org/Chandler_0.1_license_terms.htm"
@@ -107,7 +107,7 @@
if isinstance(old, RefDict):
old._removeRef(item._uuid)
- old._item.setDirty(item.VDIRTY, otherName)
+ old._item.setDirty(item.RDIRTY, otherName)
else:
other._removeRef(otherName)
other.setDirty(item.VDIRTY, otherName)
Index: chandler/repository/persistence/RepositoryError.py
diff -u chandler/repository/persistence/RepositoryError.py:1.5 chandler/repository/persistence/RepositoryError.py:1.6
--- chandler/repository/persistence/RepositoryError.py:1.5 Mon Sep 13 14:29:09 2004
+++ chandler/repository/persistence/RepositoryError.py Wed Sep 15 15:43:14 2004
@@ -1,6 +1,6 @@
-__revision__ = "$Revision: 1.5 $"
-__date__ = "$Date: 2004/09/13 21:29:09 $"
+__revision__ = "$Revision: 1.6 $"
+__date__ = "$Date: 2004/09/15 22:43:14 $"
__copyright__ = "Copyright (c) 2002 Open Source Applications Foundation"
__license__ = "http://osafoundation.org/Chandler_0.1_license_terms.htm"
@@ -29,17 +29,23 @@
class MergeError(VersionConflictError):
- "(%s) merging %s failed because %s"
+ "(%s) merging %s failed because %s, reason code: %s"
def __str__(self):
- return self.__doc__ %(self.args[0], self.args[1].itsPath, self.args[2])
+ return self.__doc__ %(self.args[0], self.args[1].itsPath, self.args[2],
+ self.getReasonCodeName())
def getReasonCode(self):
return self.args[3]
+ def getReasonCodeName(self):
+ return MergeError.codeNames.get(self.args[3], str(self.args[3]))
+
def getItem(self):
return self.args[1]
BUG = 0
RENAME = 1
MOVE = 2
+
+ codeNames = { BUG: 'BUG', RENAME: 'RENAME', 'MOVE': MOVE }
Index: chandler/repository/persistence/XMLRefDict.py
diff -u chandler/repository/persistence/XMLRefDict.py:1.9 chandler/repository/persistence/XMLRefDict.py:1.10
--- chandler/repository/persistence/XMLRefDict.py:1.9 Tue Sep 14 20:35:48 2004
+++ chandler/repository/persistence/XMLRefDict.py Wed Sep 15 15:43:14 2004
@@ -1,6 +1,6 @@
-__revision__ = "$Revision: 1.9 $"
-__date__ = "$Date: 2004/09/15 03:35:48 $"
+__revision__ = "$Revision: 1.10 $"
+__date__ = "$Date: 2004/09/15 22:43:14 $"
__copyright__ = "Copyright (c) 2002 Open Source Applications Foundation"
__license__ = "http://osafoundation.org/Chandler_0.1_license_terms.htm"
@@ -534,6 +534,9 @@
if oldAlias != alias and link._alias != alias:
raise MergeError, ('merging children', self.item,
'child %s renamed to %s and %s' %(oldAlias, link._alias, alias), MergeError.RENAME)
+ elif link._alias in self._aliases:
+ raise MergeError, ('merging children', self.item,
+ 'child %s conflicts with other child %s, both are named %s' %(child, self._aliases[link._alias], link._alias), MergeError.RENAME)
if prev is None:
if exists:
Index: chandler/repository/tests/TestMerge.py
diff -u chandler/repository/tests/TestMerge.py:1.3 chandler/repository/tests/TestMerge.py:1.4
--- chandler/repository/tests/TestMerge.py:1.3 Mon Sep 13 14:29:10 2004
+++ chandler/repository/tests/TestMerge.py Wed Sep 15 15:43:15 2004
@@ -2,8 +2,8 @@
Test merging of items
"""
-__revision__ = "$Revision: 1.3 $"
-__date__ = "$Date: 2004/09/13 21:29:10 $"
+__revision__ = "$Revision: 1.4 $"
+__date__ = "$Date: 2004/09/15 22:43:15 $"
__copyright__ = "Copyright (c) 2003 Open Source Applications Foundation"
__license__ = "http://osafoundation.org/Chandler_0.1_license_terms.htm"
@@ -42,12 +42,12 @@
ko = self.rep.findPath('//Schema/Core/Item')
ao = []
for i in xrange(o):
- ao.append(ko.itsKind.newItem('ao_%02d' %(i), po))
+ ao.append(ko.newItem('ao_%02d' %(i), po))
view.commit()
view = self.rep.setCurrentView(main)
for i in xrange(m):
- am.append(km.itsKind.newItem('am_%02d' %(i), pm))
+ am.append(km.newItem('am_%02d' %(i), pm))
main.commit()
ic = [c.itsName for c in pm.iterChildren()]
@@ -158,6 +158,30 @@
self.move('foo', 'bar')
except MergeError, e:
self.assert_(e.getReasonCode() == MergeError.MOVE)
+ else:
+ self.assert_(False)
+
+ def testCreateSameName(self):
+ view = self.rep.createView('view')
+ main = self.rep.setCurrentView(view)
+ po = self.rep['p']
+ ko = self.rep.findPath('//Schema/Core/Item')
+
+ ko.newItem('foo', po)
+ view.commit()
+
+ view = self.rep.setCurrentView(main)
+ pm = self.rep['p']
+ km = self.rep.findPath('//Schema/Core/Item')
+
+ ko.newItem('foo', pm)
+
+ try:
+ main.commit()
+ except MergeError, e:
+ self.assert_(e.getReasonCode() == MergeError.RENAME)
+ else:
+ self.assert_(False)
if __name__ == "__main__":
More information about the Commits
mailing list