[CalendarServer-changes] [5394] CalendarServer/trunk/txdav/propertystore

source_changes at macosforge.org source_changes at macosforge.org
Wed Mar 24 20:29:41 PDT 2010


Revision: 5394
          http://trac.macosforge.org/projects/calendarserver/changeset/5394
Author:   wsanchez at apple.com
Date:     2010-03-24 20:29:38 -0700 (Wed, 24 Mar 2010)
Log Message:
-----------
Keys must be PropertyName objects

Modified Paths:
--------------
    CalendarServer/trunk/txdav/propertystore/base.py
    CalendarServer/trunk/txdav/propertystore/none.py
    CalendarServer/trunk/txdav/propertystore/test/base.py
    CalendarServer/trunk/txdav/propertystore/xattr.py

Modified: CalendarServer/trunk/txdav/propertystore/base.py
===================================================================
--- CalendarServer/trunk/txdav/propertystore/base.py	2010-03-25 03:03:45 UTC (rev 5393)
+++ CalendarServer/trunk/txdav/propertystore/base.py	2010-03-25 03:29:38 UTC (rev 5394)
@@ -20,6 +20,7 @@
 
 __all__ = [
     "AbstractPropertyStore",
+    "PropertyName",
 ]
 
 from zope.interface import implements
@@ -167,3 +168,9 @@
     def update(other=None):
         # FIXME
         raise NotImplementedError()
+
+
+def validKey(key):
+    # Used by implementations to verify that keys are valid
+    if not isinstance(key, PropertyName):
+        raise TypeError("Not a PropertyName: %r" % (key,))

Modified: CalendarServer/trunk/txdav/propertystore/none.py
===================================================================
--- CalendarServer/trunk/txdav/propertystore/none.py	2010-03-25 03:03:45 UTC (rev 5393)
+++ CalendarServer/trunk/txdav/propertystore/none.py	2010-03-25 03:29:38 UTC (rev 5394)
@@ -24,7 +24,7 @@
     "PropertyStore",
 ]
 
-from txdav.propertystore.base import AbstractPropertyStore
+from txdav.propertystore.base import AbstractPropertyStore, validKey
 from txdav.idav import PropertyChangeNotAllowedError
 
 
@@ -43,21 +43,29 @@
     #
 
     def __delitem__(self, key):
+        validKey(key)
+
         if key in self.modified:
             del self.modified[key]
         else:
             raise KeyError(key)
 
     def __getitem__(self, key):
+        validKey(key)
+
         if key in self.modified:
             return self.modified[key]
         else:
             raise KeyError(key)
 
     def __contains__(self, key):
+        validKey(key)
+
         return key in self.modified
 
     def __setitem__(self, key, value):
+        validKey(key)
+
         self.modified[key] = value
 
     def __iter__(self):

Modified: CalendarServer/trunk/txdav/propertystore/test/base.py
===================================================================
--- CalendarServer/trunk/txdav/propertystore/test/base.py	2010-03-25 03:03:45 UTC (rev 5393)
+++ CalendarServer/trunk/txdav/propertystore/test/base.py	2010-03-25 03:29:38 UTC (rev 5394)
@@ -78,10 +78,32 @@
         self.assertEquals(set(store.keys()), names)
         self.assertEquals(len(store), len(names))
 
-        # FIXME: Not done here
+    def test_delete_none(self):
+        def doDelete():
+            del self.propertyStore[propertyName("xyzzy")]
 
+        self.assertRaises(KeyError, doDelete)
 
+    def test_keyInPropertyName(self):
+        store = self.propertyStore
 
+        def doGet():
+            store["xyzzy"]
+
+        def doSet():
+            store["xyzzy"] = propertyValue("Hello, World!")
+
+        def doDelete():
+            del store["xyzzy"]
+
+        def doContains():
+            "xyzzy" in store
+
+        self.assertRaises(TypeError, doGet)
+        self.assertRaises(TypeError, doSet)
+        self.assertRaises(TypeError, doDelete)
+        self.assertRaises(TypeError, doContains)
+
     def test_flush(self):
         store = self.propertyStore
 

Modified: CalendarServer/trunk/txdav/propertystore/xattr.py
===================================================================
--- CalendarServer/trunk/txdav/propertystore/xattr.py	2010-03-25 03:03:45 UTC (rev 5393)
+++ CalendarServer/trunk/txdav/propertystore/xattr.py	2010-03-25 03:29:38 UTC (rev 5394)
@@ -33,7 +33,7 @@
 
 from twext.web2.dav.davxml import WebDAVDocument
 
-from txdav.propertystore.base import AbstractPropertyStore, PropertyName
+from txdav.propertystore.base import AbstractPropertyStore, PropertyName, validKey
 from txdav.idav import PropertyStoreError
 
 
@@ -96,6 +96,8 @@
     #
 
     def __delitem__(self, key):
+        validKey(key)
+
         if key in self.modified:
             del self.modified[key]
         elif self._encodeKey(key) not in self.attrs:
@@ -104,6 +106,8 @@
         self.removed.add(key)
 
     def __getitem__(self, key):
+        validKey(key)
+
         if key in self.modified:
             return self.modified[key]
 
@@ -156,6 +160,8 @@
         return doc.root_element
 
     def __contains__(self, key):
+        validKey(key)
+
         if key in self.modified:
             return True
         if key in self.removed:
@@ -163,6 +169,8 @@
         return self._encodeKey(key) in self.attrs
 
     def __setitem__(self, key, value):
+        validKey(key)
+
         if key in self.removed:
             self.removed.remove(key)
         self.modified[key] = value
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20100324/aee21dfe/attachment-0001.html>


More information about the calendarserver-changes mailing list