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/10/27 01:47:03 UTC

svn commit: r1027775 - in /incubator/chemistry/cmislib/trunk/src: cmislib.egg-info/SOURCES.txt cmislib/model.py tests/cmislibtest.py tests/settings.py

Author: jpotts
Date: Tue Oct 26 23:47:03 2010
New Revision: 1027775

URL: http://svn.apache.org/viewvc?rev=1027775&view=rev
Log:
Support for extended args on CmisClient constructor per CMIS-263

Modified:
    incubator/chemistry/cmislib/trunk/src/cmislib.egg-info/SOURCES.txt
    incubator/chemistry/cmislib/trunk/src/cmislib/model.py
    incubator/chemistry/cmislib/trunk/src/tests/cmislibtest.py
    incubator/chemistry/cmislib/trunk/src/tests/settings.py

Modified: incubator/chemistry/cmislib/trunk/src/cmislib.egg-info/SOURCES.txt
URL: http://svn.apache.org/viewvc/incubator/chemistry/cmislib/trunk/src/cmislib.egg-info/SOURCES.txt?rev=1027775&r1=1027774&r2=1027775&view=diff
==============================================================================
--- incubator/chemistry/cmislib/trunk/src/cmislib.egg-info/SOURCES.txt (original)
+++ incubator/chemistry/cmislib/trunk/src/cmislib.egg-info/SOURCES.txt Tue Oct 26 23:47:03 2010
@@ -4,6 +4,8 @@ NOTICE.txt
 README.txt
 setup.cfg
 setup.py
+dist/hash-sign.sh
+dist/release.sh
 src/cmislib/__init__.py
 src/cmislib/exceptions.py
 src/cmislib/messages.py

Modified: incubator/chemistry/cmislib/trunk/src/cmislib/model.py
URL: http://svn.apache.org/viewvc/incubator/chemistry/cmislib/trunk/src/cmislib/model.py?rev=1027775&r1=1027774&r2=1027775&view=diff
==============================================================================
--- incubator/chemistry/cmislib/trunk/src/cmislib/model.py (original)
+++ incubator/chemistry/cmislib/trunk/src/cmislib/model.py Tue Oct 26 23:47:03 2010
@@ -88,7 +88,7 @@ class CmisClient(object):
     Handles all communication with the CMIS provider.
     """
 
-    def __init__(self, repositoryUrl, username, password):
+    def __init__(self, repositoryUrl, username, password, **kwargs):
 
         """
         This is the entry point to the API. You need to know the
@@ -102,6 +102,7 @@ class CmisClient(object):
         self.repositoryUrl = repositoryUrl
         self.username = username
         self.password = password
+        self.extArgs = kwargs
 
     def __str__(self):
         """To string"""
@@ -120,7 +121,7 @@ class CmisClient(object):
         [{'repositoryName': u'Main Repository', 'repositoryId': u'83beb297-a6fa-4ac5-844b-98c871c0eea9'}]
         """
 
-        result = self.get(self.repositoryUrl)
+        result = self.get(self.repositoryUrl, **self.extArgs)
         if (type(result) == HTTPError):
             raise RuntimeException()
 
@@ -146,7 +147,7 @@ class CmisClient(object):
         u'Main Repository'
         """
 
-        doc = self.get(self.repositoryUrl)
+        doc = self.get(self.repositoryUrl, **self.extArgs)
         workspaceElements = doc.getElementsByTagNameNS(APP_NS, 'workspace')
 
         for workspaceElement in workspaceElements:
@@ -168,7 +169,7 @@ class CmisClient(object):
         u'83beb297-a6fa-4ac5-844b-98c871c0eea9'
         """
 
-        doc = self.get(self.repositoryUrl)
+        doc = self.get(self.repositoryUrl, **self.extArgs)
         workspaceElements = doc.getElementsByTagNameNS(APP_NS, 'workspace')
         # instantiate a Repository object with the first workspace
         # element we find
@@ -188,6 +189,10 @@ class CmisClient(object):
         there.
         """
 
+        # merge the cmis client extended args with the ones that got passed in
+        if (len(self.extArgs) > 0):
+            kwargs.update(self.extArgs)
+
         result = Rest().get(url,
                             username=self.username,
                             password=self.password,
@@ -208,6 +213,10 @@ class CmisClient(object):
         to delete a document you'd call :class:`Document.delete`.
         """
 
+        # merge the cmis client extended args with the ones that got passed in
+        if (len(self.extArgs) > 0):
+            kwargs.update(self.extArgs)
+
         result = Rest().delete(url,
                                username=self.username,
                                password=self.password,
@@ -229,6 +238,10 @@ class CmisClient(object):
         been checked out, you'd call :class:`Document.checkin` on the PWC.
         """
 
+        # merge the cmis client extended args with the ones that got passed in
+        if (len(self.extArgs) > 0):
+            kwargs.update(self.extArgs)
+
         result = Rest().post(url,
                              payload,
                              contentType,
@@ -254,6 +267,10 @@ class CmisClient(object):
         been checked out, you'd call :class:`Document.checkin` on the PWC.
         """
 
+        # merge the cmis client extended args with the ones that got passed in
+        if (len(self.extArgs) > 0):
+            kwargs.update(self.extArgs)
+
         result = Rest().put(url,
                             payload,
                             contentType,
@@ -2536,7 +2553,8 @@ class Document(CmisObject):
             # the cmis client class parses non-error responses
             result = Rest().get(srcUrl,
                                 username=self._cmisClient.username,
-                                password=self._cmisClient.password)
+                                password=self._cmisClient.password,
+                                **self._cmisClient.extArgs)
             if result.code != 200:
                 raise CmisException(result.code)
             return result

Modified: incubator/chemistry/cmislib/trunk/src/tests/cmislibtest.py
URL: http://svn.apache.org/viewvc/incubator/chemistry/cmislib/trunk/src/tests/cmislibtest.py?rev=1027775&r1=1027774&r2=1027775&view=diff
==============================================================================
--- incubator/chemistry/cmislib/trunk/src/tests/cmislibtest.py (original)
+++ incubator/chemistry/cmislib/trunk/src/tests/cmislibtest.py Tue Oct 26 23:47:03 2010
@@ -41,7 +41,7 @@ class CmisTestBase(unittest.TestCase):
 
     def setUp(self):
         """ Create a root test folder for the test. """
-        self._cmisClient = CmisClient(settings.REPOSITORY_URL, settings.USERNAME, settings.PASSWORD)
+        self._cmisClient = CmisClient(settings.REPOSITORY_URL, settings.USERNAME, settings.PASSWORD, **settings.EXT_ARGS)
         self._repo = self._cmisClient.getDefaultRepository()
         self._rootFolder = self._repo.getObjectByPath(TEST_ROOT_PATH)
         self._folderName = " ".join(['cmislib', self.__class__.__name__, str(time())])
@@ -58,14 +58,14 @@ class CmisClientTest(unittest.TestCase):
 
     def testCmisClient(self):
         '''Instantiate a CmisClient object'''
-        cmisClient = CmisClient(settings.REPOSITORY_URL, settings.USERNAME, settings.PASSWORD)
+        cmisClient = CmisClient(settings.REPOSITORY_URL, settings.USERNAME, settings.PASSWORD, **settings.EXT_ARGS)
         self.assert_(cmisClient != None)
 
     def testGetRepositories(self):
         '''Call getRepositories and make sure at least one comes back with
         an ID and a name
         '''
-        cmisClient = CmisClient(settings.REPOSITORY_URL, settings.USERNAME, settings.PASSWORD)
+        cmisClient = CmisClient(settings.REPOSITORY_URL, settings.USERNAME, settings.PASSWORD, **settings.EXT_ARGS)
         repoInfo = cmisClient.getRepositories()
         self.assert_(len(repoInfo) >= 1)
         self.assert_('repositoryId' in repoInfo[0])
@@ -73,14 +73,14 @@ class CmisClientTest(unittest.TestCase):
 
     def testDefaultRepository(self):
         '''Get the default repository by calling the repo's service URL'''
-        cmisClient = CmisClient(settings.REPOSITORY_URL, settings.USERNAME, settings.PASSWORD)
+        cmisClient = CmisClient(settings.REPOSITORY_URL, settings.USERNAME, settings.PASSWORD, **settings.EXT_ARGS)
         repo = cmisClient.getDefaultRepository()
         self.assert_(repo != None)
         self.assert_(repo.getRepositoryId() != None)
 
     def testGetRepository(self):
         '''Get a repository by repository ID'''
-        cmisClient = CmisClient(settings.REPOSITORY_URL, settings.USERNAME, settings.PASSWORD)
+        cmisClient = CmisClient(settings.REPOSITORY_URL, settings.USERNAME, settings.PASSWORD, **settings.EXT_ARGS)
         repo = cmisClient.getDefaultRepository()
         defaultRepoId = repo.getRepositoryId()
         defaultRepoName = repo.getRepositoryName()
@@ -91,7 +91,7 @@ class CmisClientTest(unittest.TestCase):
     # Error conditions
     def testCmisClientBadUrl(self):
         '''Try to instantiate a CmisClient object with a known bad URL'''
-        cmisClient = CmisClient(settings.REPOSITORY_URL + 'foobar', settings.USERNAME, settings.PASSWORD)
+        cmisClient = CmisClient(settings.REPOSITORY_URL + 'foobar', settings.USERNAME, settings.PASSWORD, **settings.EXT_ARGS)
         self.assertRaises(CmisException, cmisClient.getRepositories)
 
     def testCmisClientBadAuth(self):
@@ -102,7 +102,7 @@ class CmisClientTest(unittest.TestCase):
 
     def testGetRepositoryBadId(self):
         '''Try to get a repository with a bad repo ID'''
-        cmisClient = CmisClient(settings.REPOSITORY_URL, settings.USERNAME, settings.PASSWORD)
+        cmisClient = CmisClient(settings.REPOSITORY_URL, settings.USERNAME, settings.PASSWORD, **settings.EXT_ARGS)
         self.assertRaises(ObjectNotFoundException,
                           cmisClient.getRepository,
                           '123FOO')
@@ -1061,7 +1061,7 @@ class TypeTest(unittest.TestCase):
     def testTypeDescendants(self):
         '''Get the descendant types of the repository.'''
 
-        cmisClient = CmisClient(settings.REPOSITORY_URL, settings.USERNAME, settings.PASSWORD)
+        cmisClient = CmisClient(settings.REPOSITORY_URL, settings.USERNAME, settings.PASSWORD, **settings.EXT_ARGS)
         repo = cmisClient.getDefaultRepository()
         typeDefs = repo.getTypeDescendants()
         folderDef = None
@@ -1079,7 +1079,7 @@ class TypeTest(unittest.TestCase):
         #This test would be more interesting if there was a standard way to
         #deploy a custom model. Then we could look for custom types.
 
-        cmisClient = CmisClient(settings.REPOSITORY_URL, settings.USERNAME, settings.PASSWORD)
+        cmisClient = CmisClient(settings.REPOSITORY_URL, settings.USERNAME, settings.PASSWORD, **settings.EXT_ARGS)
         repo = cmisClient.getDefaultRepository()
         typeDefs = repo.getTypeChildren()
         folderDef = None
@@ -1092,7 +1092,7 @@ class TypeTest(unittest.TestCase):
 
     def testTypeDefinition(self):
         '''Get the cmis:document type and test a few props of the type.'''
-        cmisClient = CmisClient(settings.REPOSITORY_URL, settings.USERNAME, settings.PASSWORD)
+        cmisClient = CmisClient(settings.REPOSITORY_URL, settings.USERNAME, settings.PASSWORD, **settings.EXT_ARGS)
         repo = cmisClient.getDefaultRepository()
         docTypeDef = repo.getTypeDefinition('cmis:document')
         self.assertEquals('cmis:document', docTypeDef.getTypeId())
@@ -1100,7 +1100,7 @@ class TypeTest(unittest.TestCase):
 
     def testTypeProperties(self):
         '''Get the properties for a type.'''
-        cmisClient = CmisClient(settings.REPOSITORY_URL, settings.USERNAME, settings.PASSWORD)
+        cmisClient = CmisClient(settings.REPOSITORY_URL, settings.USERNAME, settings.PASSWORD, **settings.EXT_ARGS)
         repo = cmisClient.getDefaultRepository()
         docTypeDef = repo.getTypeDefinition('cmis:document')
         self.assertEquals('cmis:document', docTypeDef.getTypeId())

Modified: incubator/chemistry/cmislib/trunk/src/tests/settings.py
URL: http://svn.apache.org/viewvc/incubator/chemistry/cmislib/trunk/src/tests/settings.py?rev=1027775&r1=1027774&r2=1027775&view=diff
==============================================================================
--- incubator/chemistry/cmislib/trunk/src/tests/settings.py (original)
+++ incubator/chemistry/cmislib/trunk/src/tests/settings.py Tue Oct 26 23:47:03 2010
@@ -19,7 +19,7 @@
 #REPOSITORY_URL = 'http://cmis.alfresco.com/s/cmis'
 #REPOSITORY_URL = 'http://localhost:8080/cmis/repository' # Apache Chemistry
 #REPOSITORY_URL = 'http://cmis.dnsdojo.com:8080/p8cmis/resources/DaphneA/Service'
-REPOSITORY_URL = 'http://localhost:8080/alfresco/s/cmis'  # Alfresco
+REPOSITORY_URL = 'http://localhost:8080/alfresco/s/api/cmis'  # Alfresco
 #REPOSITORY_URL = 'http://cmis.demo.nuxeo.org/nuxeo/site/cmis/repository'
 #REPOSITORY_URL = 'http://localhost:8080/opencmis/atom'  # OpenCMIS from the OpenText guys
 #REPOSITORY_URL = 'http://ec2-174-129-218-67.compute-1.amazonaws.com/cmis/atom' #OpenText on Amazon
@@ -32,10 +32,12 @@ PASSWORD = 'admin'
 #PASSWORD = 'Administrator'  # Nuxeo
 #USERNAME = 'cmisuser'
 #PASSWORD = 'otcmis'
+EXT_ARGS = {}
+#EXT_ARGS = {'alf_ticket': 'TICKET_cef29079d8d5341338bf372b08278bc30ec89380'}
 # Absolute path to a directory where test folders can be created, including
 # the trailing slash.
 #TEST_ROOT_PATH = '/default-domain/jeff test'  # No trailing slash
-TEST_ROOT_PATH = '/cmislib test'  # No trailing slash
+TEST_ROOT_PATH = '/cmislib'  # No trailing slash
 #TEST_ROOT_PATH = '/'
 # Binary test files. Assumed to exist in the same dir as this python script
 TEST_BINARY_1 = '250px-Cmis_logo.png'