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 2013/02/10 01:16:53 UTC

svn commit: r1444466 [5/5] - in /chemistry/cmislib/branches/binding_refactor/src: cmislib/ tests/

Added: chemistry/cmislib/branches/binding_refactor/src/cmislib/util.py
URL: http://svn.apache.org/viewvc/chemistry/cmislib/branches/binding_refactor/src/cmislib/util.py?rev=1444466&view=auto
==============================================================================
--- chemistry/cmislib/branches/binding_refactor/src/cmislib/util.py (added)
+++ chemistry/cmislib/branches/binding_refactor/src/cmislib/util.py Sun Feb 10 00:16:52 2013
@@ -0,0 +1,111 @@
+#
+#      Licensed to the Apache Software Foundation (ASF) under one
+#      or more contributor license agreements.  See the NOTICE file
+#      distributed with this work for additional information
+#      regarding copyright ownership.  The ASF licenses this file
+#      to you under the Apache License, Version 2.0 (the
+#      "License"); you may not use this file except in compliance
+#      with the License.  You may obtain a copy of the License at
+#
+#        http://www.apache.org/licenses/LICENSE-2.0
+#
+#      Unless required by applicable law or agreed to in writing,
+#      software distributed under the License is distributed on an
+#      "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#      KIND, either express or implied.  See the License for the
+#      specific language governing permissions and limitations
+#      under the License.
+#
+"""
+Module containing handy utility functions.
+"""
+import re
+import iso8601
+import logging
+from cmislib.domain import CmisId, Document, Folder
+
+moduleLogger = logging.getLogger('cmislib.util')
+
+def multiple_replace(aDict, text):
+
+    """
+    Replace in 'text' all occurences of any key in the given
+    dictionary by its corresponding value.  Returns the new string.
+
+    See http://code.activestate.com/recipes/81330/
+    """
+
+    # Create a regular expression  from the dictionary keys
+    regex = re.compile("(%s)" % "|".join(map(re.escape, aDict.keys())))
+
+    # For each match, look-up corresponding value in dictionary
+    return regex.sub(lambda mo: aDict[mo.string[mo.start():mo.end()]], text)
+
+def parsePropValue(value, nodeName):
+
+    """
+    Returns a properly-typed object based on the type as specified in the
+    node's element name.
+    """
+
+    moduleLogger.debug('Inside parsePropValue')
+
+    if nodeName == 'propertyId':
+        return CmisId(value)
+    elif nodeName == 'propertyString':
+        return value
+    elif nodeName == 'propertyBoolean':
+        bDict = {'false': False, 'true': True}
+        return bDict[value.lower()]
+    elif nodeName == 'propertyInteger':
+        return int(value)
+    elif nodeName == 'propertyDecimal':
+        return float(value)
+    elif nodeName == 'propertyDateTime':
+        #%z doesn't seem to work, so I'm going to trunc the offset
+        #not all servers return microseconds, so those go too
+        return parseDateTimeValue(value)
+    else:
+        return value
+
+
+def parseDateTimeValue(value):
+
+    """
+    Utility function to return a datetime from a string.
+    """
+    return iso8601.parse_date(value)
+
+
+def parseBoolValue(value):
+
+    """
+    Utility function to parse booleans and none from strings
+    """
+
+    if value == 'false':
+        return False
+    elif value == 'true':
+        return True
+    elif value == 'none':
+        return None
+    else:
+        return value
+
+
+def toCMISValue(value):
+
+    """
+    Utility function to convert Python values to CMIS string values
+    """
+
+    if value == False:
+        return 'false'
+    elif value == True:
+        return 'true'
+    elif value == None:
+        return 'none'
+    else:
+        return value
+
+

Modified: chemistry/cmislib/branches/binding_refactor/src/tests/cmislibtest.py
URL: http://svn.apache.org/viewvc/chemistry/cmislib/branches/binding_refactor/src/tests/cmislibtest.py?rev=1444466&r1=1444465&r2=1444466&view=diff
==============================================================================
--- chemistry/cmislib/branches/binding_refactor/src/tests/cmislibtest.py (original)
+++ chemistry/cmislib/branches/binding_refactor/src/tests/cmislibtest.py Sun Feb 10 00:16:52 2013
@@ -23,7 +23,8 @@ Unit tests for cmislib
 '''
 import unittest
 from unittest import TestSuite, TestLoader
-from cmislib.model import CmisClient, ACE
+from cmislib.model import CmisClient
+from cmislib.domain import ACE
 from cmislib.exceptions import \
                           ObjectNotFoundException, \
                           CmisException, \
@@ -1397,8 +1398,8 @@ class ACLTest(CmisTestBase):
         if not self._repo.getSupportedPermissions() in ['both', 'basic']:
             print 'Repository needs to support either both or basic permissions for this test'
             return
-        acl = self._testFolder.getACL()
-        acl.addEntry(ACE(settings.TEST_PRINCIPAL_ID, 'cmis:write', 'true'))
+        acl = self._testFolder.getACL()        
+        acl.addEntry(settings.TEST_PRINCIPAL_ID, 'cmis:write', 'true')
         acl = self._testFolder.applyACL(acl)
         # would be good to check that the permission we get back is what we set
         # but at least one server (Alf) appears to map the basic perm to a

Modified: chemistry/cmislib/branches/binding_refactor/src/tests/settings.py
URL: http://svn.apache.org/viewvc/chemistry/cmislib/branches/binding_refactor/src/tests/settings.py?rev=1444466&r1=1444465&r2=1444466&view=diff
==============================================================================
--- chemistry/cmislib/branches/binding_refactor/src/tests/settings.py (original)
+++ chemistry/cmislib/branches/binding_refactor/src/tests/settings.py Sun Feb 10 00:16:52 2013
@@ -22,8 +22,8 @@
 #
 # CMIS repository's service URL
 #REPOSITORY_URL = 'http://cmis.alfresco.com/s/cmis' # Alfresco demo
-#REPOSITORY_URL = 'http://localhost:8080/chemistry/atom' # Apache Chemistry
-REPOSITORY_URL = 'http://localhost:8080/alfresco/cmisatom'  # Alfresco 4.0
+REPOSITORY_URL = 'http://localhost:8080/chemistry/atom' # Apache Chemistry
+#REPOSITORY_URL = 'http://localhost:8080/alfresco/cmisatom'  # Alfresco 4.0
 #REPOSITORY_URL = 'http://localhost:8080/alfresco/s/api/cmis'  # Alfresco
 #REPOSITORY_URL = 'http://cmis.demo.nuxeo.org/nuxeo/atom/cmis' # Nuxeo demo
 #REPOSITORY_URL = 'http://localhost:8080/nuxeo/atom/cmis' # Nuxeo local