[CalendarServer-changes] [1198]
CalendarServer/branches/users/cdaboo/sqlprops-1126/twistedcaldav
source_changes at macosforge.org
source_changes at macosforge.org
Fri Feb 16 13:53:21 PST 2007
Revision: 1198
http://trac.macosforge.org/projects/calendarserver/changeset/1198
Author: cdaboo at apple.com
Date: 2007-02-16 13:53:21 -0800 (Fri, 16 Feb 2007)
Log Message:
-----------
Use pickle to serialize properties to the database, which is much faster when reading them back in.
Note that this currently fails on unknown property elements as exposed by a test. A fix is needed.
Modified Paths:
--------------
CalendarServer/branches/users/cdaboo/sqlprops-1126/twistedcaldav/sqlprops.py
CalendarServer/branches/users/cdaboo/sqlprops-1126/twistedcaldav/test/test_sqlprops.py
Modified: CalendarServer/branches/users/cdaboo/sqlprops-1126/twistedcaldav/sqlprops.py
===================================================================
--- CalendarServer/branches/users/cdaboo/sqlprops-1126/twistedcaldav/sqlprops.py 2007-02-16 21:43:26 UTC (rev 1197)
+++ CalendarServer/branches/users/cdaboo/sqlprops-1126/twistedcaldav/sqlprops.py 2007-02-16 21:53:21 UTC (rev 1198)
@@ -21,8 +21,6 @@
#
# DRI: Wilfredo Sanchez, wsanchez at apple.com
##
-from twistedcaldav.root import RootResource
-from twisted.python import log
"""
DAV Property store an sqlite database.
@@ -33,13 +31,14 @@
__all__ = ["sqlPropertyStore"]
+import cPickle
import os
-import urllib
+from twisted.python import log
from twisted.web2 import responsecode
from twisted.web2.http import HTTPError, StatusResponse
-from twisted.web2.dav import davxml
+from twistedcaldav.root import RootResource
from twistedcaldav.sql import AbstractSQLDatabase
class sqlPropertyStore (object):
@@ -93,10 +92,8 @@
"No such property: {%s}%s" % qname
))
- doc = davxml.WebDAVDocument.fromString(value)
+ return cPickle.loads(value)
- return doc.root_element
-
def getAll(self, qnames):
"""
Read properties from index.
@@ -117,8 +114,7 @@
results = []
for value in values.itervalues():
- doc = davxml.WebDAVDocument.fromString(value)
- results.append(doc.root_element)
+ results.append(cPickle.loads(value))
return results
def getAllResources(self, qnames):
@@ -143,8 +139,7 @@
for key, value in values.iteritems():
pvalues = []
for pvalue in value.itervalues():
- doc = davxml.WebDAVDocument.fromString(pvalue)
- pvalues.append(doc.root_element)
+ pvalues.append(cPickle.loads(pvalue))
results[key] = pvalues
return results
@@ -157,7 +152,7 @@
"""
if self.index:
- self.index.setPropertyValue(self.rname, self._encode(property.qname()), property.toxml())
+ self.index.setPropertyValue(self.rname, self._encode(property.qname()), cPickle.dumps(property))
def delete(self, qname):
"""
@@ -222,7 +217,7 @@
def __init__(self, path):
path = os.path.join(path, SQLPropertiesDatabase.dbFilename)
- super(SQLPropertiesDatabase, self).__init__(path, SQLPropertiesDatabase.dbFormatVersion)
+ super(SQLPropertiesDatabase, self).__init__(path, SQLPropertiesDatabase.dbFormatVersion, utf8=True)
def setPropertyValue(self, rname, pname, pvalue):
"""
Modified: CalendarServer/branches/users/cdaboo/sqlprops-1126/twistedcaldav/test/test_sqlprops.py
===================================================================
--- CalendarServer/branches/users/cdaboo/sqlprops-1126/twistedcaldav/test/test_sqlprops.py 2007-02-16 21:43:26 UTC (rev 1197)
+++ CalendarServer/branches/users/cdaboo/sqlprops-1126/twistedcaldav/test/test_sqlprops.py 2007-02-16 21:53:21 UTC (rev 1198)
@@ -15,6 +15,7 @@
#
# DRI: Wilfredo Sanchez, wsanchez at apple.com
##
+from twisted.web2.dav.element.base import WebDAVUnknownElement
import time
from twistedcaldav.root import RootResource
from twistedcaldav import customxml
@@ -126,6 +127,10 @@
for prop in SQLProps.props:
self._setOnePropertyAndTest(prop)
+ def test_setunknownproperty(self):
+ doc = davxml.WebDAVDocument.fromString("""<?xml version="1.0" encoding="utf-8" ?><guess/>""")
+ self._setOnePropertyAndTest(doc.root_element)
+
def test_setmultipleproperties(self):
index = self._setUpIndex()
for prop in SQLProps.props:
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20070216/b8ddf3e2/attachment.html
More information about the calendarserver-changes
mailing list