[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