You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by jp...@apache.org on 2010/03/23 00:04:39 UTC

svn commit: r926385 - in /incubator/chemistry/trunk/cmislib/src: cmislib/model.py tests/cmislibtest.py

Author: jpotts
Date: Mon Mar 22 23:04:39 2010
New Revision: 926385

URL: http://svn.apache.org/viewvc?rev=926385&view=rev
Log:
Resolved the following CMIS Jira issues: CMIS-158 (fixed support for non-ascii properties), CMIS-159 (order is now maintained on query results rather than being keyed off of object ID), CMIS-169 (removed testDuplicateFolder), CMIS-170 (modified testPropertyFilter to not look for the absence of filtered properties).

Modified:
    incubator/chemistry/trunk/cmislib/src/cmislib/model.py
    incubator/chemistry/trunk/cmislib/src/tests/cmislibtest.py

Modified: incubator/chemistry/trunk/cmislib/src/cmislib/model.py
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/cmislib/src/cmislib/model.py?rev=926385&r1=926384&r2=926385&view=diff
==============================================================================
--- incubator/chemistry/trunk/cmislib/src/cmislib/model.py (original)
+++ incubator/chemistry/trunk/cmislib/src/cmislib/model.py Mon Mar 22 23:04:39 2010
@@ -1337,11 +1337,11 @@ class ResultSet():
 
     def __iter__(self):
         ''' Iterator for the result set '''
-        return self.getResults().itervalues()
+        return iter(self.getResults())
 
     def __getitem__(self, index):
         ''' Getter for the result set '''
-        return self.getResults().values()[index]
+        return self.getResults()[index]
 
     def __len__(self):
         ''' Len method for the result set '''
@@ -1411,17 +1411,23 @@ class ResultSet():
 
         if self._xmlDoc:
             entryElements = self._xmlDoc.getElementsByTagNameNS(ATOM_NS, 'entry')
-            entries = {}
+            entries = []
             for entryElement in entryElements:
                 cmisObject = getSpecializedObject(CmisObject(self._cmisClient,
                                                              self._repository,
                                                              xmlDoc=entryElement))
-                entries[cmisObject.getObjectId()] = cmisObject
+                entries.append(cmisObject)
 
             self._results = entries
 
         return self._results
 
+    def hasObject(self, objectId):
+        for obj in self.getResults():
+            if obj.id == objectId:
+                return True
+        return False
+
     def getFirst(self):
 
         '''
@@ -3765,7 +3771,7 @@ def parsePropValue(value, nodeName):
     if nodeName == 'propertyId':
         return CmisId(value)
     elif nodeName == 'propertyString':
-        return str(value)
+        return value
     elif nodeName == 'propertyBoolean':
         bDict = {'false': False, 'true': True}
         return bDict[value.lower()]

Modified: incubator/chemistry/trunk/cmislib/src/tests/cmislibtest.py
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/cmislib/src/tests/cmislibtest.py?rev=926385&r1=926384&r2=926385&view=diff
==============================================================================
--- incubator/chemistry/trunk/cmislib/src/tests/cmislibtest.py (original)
+++ incubator/chemistry/trunk/cmislib/src/tests/cmislibtest.py Mon Mar 22 23:04:39 2010
@@ -477,6 +477,11 @@ class FolderTest(CmisTestBase):
         parentFolder = self._testFolder.createFolder(parentFolderName)
         subFolder = parentFolder.createFolder(subFolderName)
 
+        # Per CMIS-170, CMIS providers are not required to filter the
+        # properties returned. So these tests will check only for the presence
+        # of the properties asked for, not the absence of properties that
+        # should be filtered if the server chooses to do so.
+
         # test when used with getObjectByPath
         searchFolder = self._repo.getObjectByPath(settings.TEST_ROOT_PATH + \
                         "/".join([testFolderName, parentFolderName, subFolderName]), \
@@ -485,7 +490,6 @@ class FolderTest(CmisTestBase):
         self.assertTrue(searchFolder.getProperties().has_key('cmis:objectId'))
         self.assertTrue(searchFolder.getProperties().has_key('cmis:objectTypeId'))
         self.assertTrue(searchFolder.getProperties().has_key('cmis:baseTypeId'))
-        self.assertFalse(searchFolder.getProperties().has_key('cmis:name'))
 
         # test when used with getObjectByPath + reload
         searchFolder = self._repo.getObjectByPath(settings.TEST_ROOT_PATH + \
@@ -496,7 +500,6 @@ class FolderTest(CmisTestBase):
         self.assertTrue(searchFolder.getProperties().has_key('cmis:objectId'))
         self.assertTrue(searchFolder.getProperties().has_key('cmis:objectTypeId'))
         self.assertTrue(searchFolder.getProperties().has_key('cmis:baseTypeId'))
-        self.assertFalse(searchFolder.getProperties().has_key('cmis:name'))
 
         # test when used with getObject
         searchFolder = self._repo.getObject(subFolder.getObjectId(), \
@@ -505,7 +508,6 @@ class FolderTest(CmisTestBase):
         self.assertTrue(searchFolder.getProperties().has_key('cmis:objectId'))
         self.assertTrue(searchFolder.getProperties().has_key('cmis:objectTypeId'))
         self.assertTrue(searchFolder.getProperties().has_key('cmis:baseTypeId'))
-        self.assertFalse(searchFolder.getProperties().has_key('cmis:name'))
 
         # test when used with getObject + reload
         searchFolder = self._repo.getObject(subFolder.getObjectId(), \
@@ -515,7 +517,6 @@ class FolderTest(CmisTestBase):
         self.assertTrue(searchFolder.getProperties().has_key('cmis:objectId'))
         self.assertTrue(searchFolder.getProperties().has_key('cmis:objectTypeId'))
         self.assertTrue(searchFolder.getProperties().has_key('cmis:baseTypeId'))
-        self.assertFalse(searchFolder.getProperties().has_key('cmis:name'))
 
         # test that you can do a reload with a reset filter
         searchFolder.reload(filter='*')
@@ -568,16 +569,18 @@ class FolderTest(CmisTestBase):
                           firstFolder.createFolder,
                           'bad parent')
 
-    def testDuplicateFolder(self):
-        '''Try to create a folder that already exists'''
-        folderName = 'testDupFolder folder'
-        firstFolder = self._testFolder.createFolder(folderName)
-        self.assert_('cmis:objectId' in firstFolder.getProperties())
-        # really, this needs to be ContentAlreadyExistsException but
-        # not all CMIS providers report it as such
-        self.assertRaises(CmisException,
-                          self._testFolder.createFolder,
-                          folderName)
+# Per CMIS-169, nothing in the spec says that an exception should be thrown
+# when a duplicate folder is created, so this test is really not necessary.
+#    def testDuplicateFolder(self):
+#        '''Try to create a folder that already exists'''
+#        folderName = 'testDupFolder folder'
+#        firstFolder = self._testFolder.createFolder(folderName)
+#        self.assert_('cmis:objectId' in firstFolder.getProperties())
+#        # really, this needs to be ContentAlreadyExistsException but
+#        # not all CMIS providers report it as such
+#        self.assertRaises(CmisException,
+#                          self._testFolder.createFolder,
+#                          folderName)
 
 
 class ChangeEntryTest(CmisTestBase):
@@ -1159,7 +1162,7 @@ def isInResultSet(resultSet, targetDoc):
     """
     done = False
     while not done:
-        if resultSet.getResults().has_key(targetDoc.getObjectId()):
+        if resultSet.hasObject(targetDoc.getObjectId()):
             return True
         if resultSet.hasNext():
             resultSet.getNext()