[Commits] (vajda) - fixed bug 1187 and several other related bugs
commits at osafoundation.org
commits at osafoundation.org
Tue Feb 3 19:38:23 PST 2004
Commit by: vajda
Modified files:
osaf/chandler/Chandler/repository/item/Item.py 1.108 1.109
osaf/chandler/Chandler/repository/persistence/Repository.py 1.65 1.66
osaf/chandler/Chandler/repository/persistence/XMLRepository.py 1.62 1.63
osaf/chandler/Chandler/repository/persistence/XMLRepositoryView.py 1.26 1.27
osaf/chandler/Chandler/repository/tests/TestMove.py None 1.1
osaf/chandler/Chandler/repository/tests/.cvsignore 1.2 1.3
osaf/chandler/Chandler/repository/tests/TestItems.py 1.6 1.7
Log message:
- fixed bug 1187 and several other related bugs
- added TestMove unit test
ViewCVS links:
http://cvs.osafoundation.org/index.cgi/osaf/chandler/Chandler/repository/item/Item.py.diff?r1=text&tr1=1.108&r2=text&tr2=1.109
http://cvs.osafoundation.org/index.cgi/osaf/chandler/Chandler/repository/persistence/Repository.py.diff?r1=text&tr1=1.65&r2=text&tr2=1.66
http://cvs.osafoundation.org/index.cgi/osaf/chandler/Chandler/repository/persistence/XMLRepository.py.diff?r1=text&tr1=1.62&r2=text&tr2=1.63
http://cvs.osafoundation.org/index.cgi/osaf/chandler/Chandler/repository/persistence/XMLRepositoryView.py.diff?r1=text&tr1=1.26&r2=text&tr2=1.27
http://cvs.osafoundation.org/index.cgi/osaf/chandler/Chandler/repository/tests/TestMove.py?rev=1.1&content-type=text/vnd.viewcvs-markup
http://cvs.osafoundation.org/index.cgi/osaf/chandler/Chandler/repository/tests/.cvsignore.diff?r1=text&tr1=1.2&r2=text&tr2=1.3
http://cvs.osafoundation.org/index.cgi/osaf/chandler/Chandler/repository/tests/TestItems.py.diff?r1=text&tr1=1.6&r2=text&tr2=1.7
Index: osaf/chandler/Chandler/repository/persistence/XMLRepository.py
diff -u osaf/chandler/Chandler/repository/persistence/XMLRepository.py:1.62 osaf/chandler/Chandler/repository/persistence/XMLRepository.py:1.63
--- osaf/chandler/Chandler/repository/persistence/XMLRepository.py:1.62 Wed Jan 28 16:53:39 2004
+++ osaf/chandler/Chandler/repository/persistence/XMLRepository.py Tue Feb 3 19:37:51 2004
@@ -1,6 +1,6 @@
-__revision__ = "$Revision: 1.62 $"
-__date__ = "$Date: 2004/01/29 00:53:39 $"
+__revision__ = "$Revision: 1.63 $"
+__date__ = "$Date: 2004/02/04 03:37:51 $"
__copyright__ = "Copyright (c) 2002 Open Source Applications Foundation"
__license__ = "http://osafoundation.org/Chandler_0.1_license_terms.htm"
@@ -219,6 +219,10 @@
if (doc.getMetaData('', 'deleted', value) and
value.asString() == 'True'):
doc = None
+ else:
+ uuid = self.getDocUUID(doc)
+ if store._versions.getDocVersion(uuid, version) != ver:
+ doc = None
return doc
@@ -267,6 +271,9 @@
for name, (ver, doc) in roots.iteritems():
if (doc.getMetaData('', 'deleted', value) and
value.asString() == 'True'):
+ continue
+ uuid = self.getDocUUID(doc)
+ if store._versions.getDocVersion(uuid, version) != ver:
continue
if not name in view._roots:
view._loadDoc(doc)
Index: osaf/chandler/Chandler/repository/item/Item.py
diff -u osaf/chandler/Chandler/repository/item/Item.py:1.108 osaf/chandler/Chandler/repository/item/Item.py:1.109
--- osaf/chandler/Chandler/repository/item/Item.py:1.108 Mon Feb 2 19:29:12 2004
+++ osaf/chandler/Chandler/repository/item/Item.py Tue Feb 3 19:37:50 2004
@@ -1,6 +1,6 @@
-__revision__ = "$Revision: 1.108 $"
-__date__ = "$Date: 2004/02/03 03:29:12 $"
+__revision__ = "$Revision: 1.109 $"
+__date__ = "$Date: 2004/02/04 03:37:50 $"
__copyright__ = "Copyright (c) 2002 Open Source Applications Foundation"
__license__ = "http://osafoundation.org/Chandler_0.1_license_terms.htm"
@@ -474,7 +474,9 @@
def hasChild(self, name, load=True):
- return (self.__dict__.has_key('_children') and
+ return ('_children' in self.__dict__ and
+ not ('_notChildren' in self.__dict__ and
+ name in self._notChildren) and
self._children.has_key(name, load))
def hasChildren(self):
@@ -1099,6 +1101,7 @@
if parent._isRepository():
parent = parent.view
self._parent = parent
+ self._root = None
self._setRoot(parent._addItem(self, previous, next))
else:
self._parent = None
@@ -1127,7 +1130,13 @@
def _removeItem(self, item):
- del self._children[item.getItemName()]
+ name = item.getItemName()
+ del self._children[name]
+
+ if '_notChildren' in self.__dict__:
+ self._notChildren[name] = name
+ else:
+ self._notChildren = { name: name }
def getItemChild(self, name, load=True):
'Return the child as named or None if not found.'
@@ -1136,12 +1145,12 @@
raise ValueError, "item is stale: %s" %(self)
child = None
- if self.__dict__.has_key('_children'):
+ if '_children' in self.__dict__:
child = self._children.get(name, None, False)
if load and child is None:
- hasNot = self.__dict__.has_key('_notChildren')
- if not hasNot or not self._notChildren.has_key(name):
+ hasNot = '_notChildren' in self.__dict__
+ if not (hasNot and name in self._notChildren):
child = self.getRepository()._loadChild(self, name)
if child is None:
if not hasNot:
Index: osaf/chandler/Chandler/repository/persistence/Repository.py
diff -u osaf/chandler/Chandler/repository/persistence/Repository.py:1.65 osaf/chandler/Chandler/repository/persistence/Repository.py:1.66
--- osaf/chandler/Chandler/repository/persistence/Repository.py:1.65 Sun Feb 1 19:08:34 2004
+++ osaf/chandler/Chandler/repository/persistence/Repository.py Tue Feb 3 19:37:51 2004
@@ -1,6 +1,6 @@
-__revision__ = "$Revision: 1.65 $"
-__date__ = "$Date: 2004/02/02 03:08:34 $"
+__revision__ = "$Revision: 1.66 $"
+__date__ = "$Date: 2004/02/04 03:37:51 $"
__copyright__ = "Copyright (c) 2002 Open Source Applications Foundation"
__license__ = "http://osafoundation.org/Chandler_0.1_license_terms.htm"
@@ -503,13 +503,10 @@
def _addItem(self, item, previous=None, next=None):
- try:
- name = item.getItemName()
- current = self._roots[name]
- except KeyError:
- pass
- else:
- current.delete()
+ name = item.getItemName()
+
+ if name in self._roots:
+ raise ValueError, "A root named '%s' exists already" %(name)
self._roots[name] = item
@@ -658,7 +655,8 @@
self._hooks = None
self.version = repository.store.getVersion()
-
+ self._notRoots = {}
+
def _loadDoc(self, doc):
try:
@@ -720,6 +718,14 @@
return self._loadChild(None, name)
+ def getRoots(self, load=True):
+ 'Return a list of the roots in the repository.'
+
+ if load:
+ self.repository.store.loadRoots(self.version)
+
+ return super(OnDemandRepositoryView, self).getRoots(load)
+
def _loadChild(self, parent, name):
if parent is not None and parent is not self:
@@ -765,6 +771,31 @@
self._hooks = hooks
self.setLoading(loading)
+ def _addItem(self, item, previous=None, next=None):
+
+ super(OnDemandRepositoryView, self)._addItem(item, previous, next)
+
+ name = item.getItemName()
+ if name in self._notRoots:
+ del self._notRoots[name]
+
+ return item
+
+ def _removeItem(self, item):
+
+ super(OnDemandRepositoryView, self)._removeItem(item)
+
+ name = item.getItemName()
+ self._notRoots[name] = name
+
+ def getRoot(self, name, load=True):
+
+ if not name in self._notRoots:
+ return super(OnDemandRepositoryView, self).getRoot(name, load)
+
+ return None
+
+
class RepositoryNotifications(dict):
@@ -821,8 +852,6 @@
def run(self):
try:
- result = attachCurrentThread(super(RepositoryThread, self))
+ return attachCurrentThread(super(RepositoryThread, self))
finally:
self.repository.closeView()
-
- return result
Index: osaf/chandler/Chandler/repository/persistence/XMLRepositoryView.py
diff -u osaf/chandler/Chandler/repository/persistence/XMLRepositoryView.py:1.26 osaf/chandler/Chandler/repository/persistence/XMLRepositoryView.py:1.27
--- osaf/chandler/Chandler/repository/persistence/XMLRepositoryView.py:1.26 Mon Jan 26 19:10:54 2004
+++ osaf/chandler/Chandler/repository/persistence/XMLRepositoryView.py Tue Feb 3 19:37:51 2004
@@ -1,6 +1,6 @@
-__revision__ = "$Revision: 1.26 $"
-__date__ = "$Date: 2004/01/27 03:10:54 $"
+__revision__ = "$Revision: 1.27 $"
+__date__ = "$Date: 2004/02/04 03:37:51 $"
__copyright__ = "Copyright (c) 2002 Open Source Applications Foundation"
__license__ = "http://osafoundation.org/Chandler_0.1_license_terms.htm"
@@ -34,14 +34,6 @@
self._log = []
self._notifications = RepositoryNotifications(repository)
- def getRoots(self, load=True):
- 'Return a list of the roots in the repository.'
-
- if load:
- self.repository.store.loadRoots(self.version)
-
- return super(XMLRepositoryView, self).getRoots()
-
def logItem(self, item):
if super(XMLRepositoryView, self).logItem(item):
@@ -66,6 +58,7 @@
item._unloadItem()
del self._log[:]
+ self._notRoots.clear()
def queryItems(self, query, load=True):
@@ -262,12 +255,14 @@
if lock:
env.lock_put(lock)
+ self._notRoots.clear()
self._notifications.dispatchChanges()
if count > 0:
self.logger.info('%s committed %d items (%ld bytes) in %s',
self, count, size,
datetime.now() - before)
+
return
def _saveItem(self, item, newVersion, data, versions, history):
Index: osaf/chandler/Chandler/repository/tests/.cvsignore
diff -u osaf/chandler/Chandler/repository/tests/.cvsignore:1.2 osaf/chandler/Chandler/repository/tests/.cvsignore:1.3
--- osaf/chandler/Chandler/repository/tests/.cvsignore:1.2 Sat Jan 3 00:41:49 2004
+++ osaf/chandler/Chandler/repository/tests/.cvsignore Tue Feb 3 19:37:52 2004
@@ -1,2 +1,3 @@
*.pyc *.pyo
__repository__
+RepositoryUnitTest-Repository
Index: osaf/chandler/Chandler/repository/tests/TestItems.py
diff -u osaf/chandler/Chandler/repository/tests/TestItems.py:1.6 osaf/chandler/Chandler/repository/tests/TestItems.py:1.7
--- osaf/chandler/Chandler/repository/tests/TestItems.py:1.6 Sun Jan 11 22:28:50 2004
+++ osaf/chandler/Chandler/repository/tests/TestItems.py Tue Feb 3 19:37:52 2004
@@ -2,8 +2,8 @@
Basic Unit tests for Chandler repository
"""
-__revision__ = "$Revision: 1.6 $"
-__date__ = "$Date: 2004/01/12 06:28:50 $"
+__revision__ = "$Revision: 1.7 $"
+__date__ = "$Date: 2004/02/04 03:37:52 $"
__copyright__ = "Copyright (c) 2003 Open Source Applications Foundation"
__license__ = "http://osafoundation.org/Chandler_0.1_license_terms.htm"
@@ -149,9 +149,8 @@
item = self._find('//test')
child1 = item['child1']
child2 = item['child2']
- child3 = child2['child3']
+ child3 = self.rep['child3']
- child3.move(self.rep)
self.assert_(child3 in self.rep.getRoots())
self.assertItemPathEqual(child3, '//child3')
self.assertIsRoot(child3.getRoot())
More information about the Commits
mailing list