Cleanup inline docs to close #CMIS-873. Add/edit RST (doc) files to be up-to-date with project restructure

git-svn-id: https://svn.apache.org/repos/asf/chemistry/cmislib/trunk@1776507 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/cmislib/atompub/__init__.py b/src/cmislib/atompub/__init__.py
index 6e30c70..cf0a677 100644
--- a/src/cmislib/atompub/__init__.py
+++ b/src/cmislib/atompub/__init__.py
@@ -1 +1,21 @@
-__author__ = 'jpotts'
+#
+#      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.
+#
+from cmislib.atompub.binding import AtomPubBinding, RepositoryService
+
+__all__ = ["AtomPubBinding", "RepositoryService"]
diff --git a/src/cmislib/browser/__init__.py b/src/cmislib/browser/__init__.py
index 6e30c70..da03f15 100644
--- a/src/cmislib/browser/__init__.py
+++ b/src/cmislib/browser/__init__.py
@@ -1 +1,21 @@
-__author__ = 'jpotts'
+#
+#      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.
+#
+from cmislib.browser.binding import BrowserBinding, RepositoryService
+
+__all__ = ["BrowserBinding", "RepositoryService"]
diff --git a/src/cmislib/cmis_services.py b/src/cmislib/cmis_services.py
index 4659d02..28d78d4 100644
--- a/src/cmislib/cmis_services.py
+++ b/src/cmislib/cmis_services.py
@@ -19,7 +19,7 @@
 #
 
 """
-Module containing the base Binding class and other service objects.
+This module contains the base Binding class and other service objects.
 """
 from cmislib.exceptions import CmisException, RuntimeException, \
     ObjectNotFoundException, InvalidArgumentException, \
diff --git a/src/cmislib/domain.py b/src/cmislib/domain.py
index 6287a94..b9a73bc 100644
--- a/src/cmislib/domain.py
+++ b/src/cmislib/domain.py
@@ -18,7 +18,7 @@
 #      under the License.
 #
 """
-Module containing the domain objects used to work with a CMIS provider.
+This module contains the domain objects used to work with a CMIS provider.
 """
 import logging
 
@@ -161,7 +161,7 @@
         u'someFolder2'
         >>> props = {'cmis:name': 'someFolderFoo'}
         >>> folder.updateProperties(props)
-        <cmislib.model.Folder object at 0x103ab1210>
+        <cmislib.atompub.binding.AtomPubFolder object at 0x103ab1210>
         >>> folder.getName()
         u'someFolderFoo'
 
@@ -269,7 +269,7 @@
 
         >>> acl = folder.getACL()
         >>> acl.getEntries()
-        {u'GROUP_EVERYONE': <cmislib.model.ACE object at 0x10071a8d0>, 'jdoe': <cmislib.model.ACE object at 0x10071a590>}
+        {u'GROUP_EVERYONE': <cmislib.atompub.binding.AtomPubACE object at 0x10071a8d0>, 'jdoe': <cmislib.atompub.binding.AtomPubACE object at 0x10071a590>}
 
         The optional onlyBasicPermissions argument is currently not supported.
         """
@@ -286,7 +286,7 @@
         >>> acl = folder.getACL()
         >>> acl.addEntry(ACE('jdoe', 'cmis:write', 'true'))
         >>> acl.getEntries()
-        {u'GROUP_EVERYONE': <cmislib.model.ACE object at 0x10071a8d0>, 'jdoe': <cmislib.model.ACE object at 0x10071a590>}
+        {u'GROUP_EVERYONE': <cmislib.atompub.binding.AtomPubACE object at 0x10071a8d0>, 'jdoe': <cmislib.atompub.binding.AtomPubACE object at 0x10071a590>}
         """
 
         pass
@@ -853,7 +853,7 @@
         with a StringIO and then calls createDocument.
 
         >>> repo.createDocumentFromString('testdoc5', parentFolder=testFolder, contentString='Hello, World!', contentType='text/plain')
-        <cmislib.model.Document object at 0x101352ed0>
+        <cmislib.atompub.binding.AtomPubDocument object at 0x101352ed0>
         """
 
         pass
@@ -878,7 +878,7 @@
 
         >>> f = open('sample-a.pdf', 'rb')
         >>> doc = folder.createDocument('sample-a.pdf', contentFile=f)
-        <cmislib.model.Document object at 0x105be5e10>
+        <cmislib.atompub.binding.AtomPubDocument object at 0x105be5e10>
         >>> f.close()
         >>> doc.getTitle()
         u'sample-a.pdf'
@@ -1037,7 +1037,7 @@
         >>> for result in resultSet.getResults():
         ...     result
         ...
-        <cmislib.model.Document object at 0x104851810>
+        <cmislib.atompub.binding.AtomPubDocument object at 0x104851810>
         """
 
         pass
@@ -1064,7 +1064,7 @@
         >>> for result in results:
         ...     result
         ...
-        <cmislib.model.Document object at 0x10480bc90>
+        <cmislib.atompub.binding.AtomPubDocument object at 0x10480bc90>
         """
 
         pass
@@ -1081,7 +1081,7 @@
         >>> for result in results:
         ...     result
         ...
-        <cmislib.model.Document object at 0x10480bc90>
+        <cmislib.atompub.binding.AtomPubDocument object at 0x10480bc90>
         """
 
         pass
@@ -1097,7 +1097,7 @@
         >>> for result in results:
         ...     result
         ...
-        <cmislib.model.Document object at 0x10480bc90>
+        <cmislib.atompub.binding.AtomPubDocument object at 0x10480bc90>
         """
 
         pass
@@ -1115,7 +1115,7 @@
         >>> for result in results:
         ...     result
         ...
-        <cmislib.model.Document object at 0x10480bc90>
+        <cmislib.atompub.binding.AtomPubDocument object at 0x10480bc90>
         """
 
         pass
@@ -1217,7 +1217,7 @@
         >>> doc.isCheckedOut()
         False
         >>> doc.checkout()
-        <cmislib.model.Document object at 0x103a25ad0>
+        <cmislib.atompub.binding.AtomPubDocument object at 0x103a25ad0>
         >>> pwc = doc.getPrivateWorkingCopy()
         >>> pwc.getTitle()
         u'sample-b (Working Copy).pdf'
@@ -1263,7 +1263,7 @@
         >>> doc.isCheckedOut()
         True
         >>> pwc.checkin()
-        <cmislib.model.Document object at 0x103a8ae90>
+        <cmislib.atompub.binding.AtomPubDocument object at 0x103a8ae90>
         >>> doc.isCheckedOut()
         False
 
@@ -1461,7 +1461,7 @@
 
         >>> f = open('250px-Cmis_logo.png', 'rb')
         >>> subFolder.createDocument('logo.png', contentFile=f)
-        <cmislib.model.Document object at 0x10410fa10>
+        <cmislib.atompub.binding.AtomPubDocument object at 0x10410fa10>
         >>> f.close()
 
         If you wanted to set one or more properties when creating the doc, pass
@@ -1470,7 +1470,7 @@
         >>> props = {'cmis:someProp':'someVal'}
         >>> f = open('250px-Cmis_logo.png', 'rb')
         >>> subFolder.createDocument('logo.png', props, contentFile=f)
-        <cmislib.model.Document object at 0x10410fa10>
+        <cmislib.atompub.binding.AtomPubDocument object at 0x10410fa10>
         >>> f.close()
 
         To specify a custom object type, pass in a property called
@@ -1926,7 +1926,7 @@
         >>> acl.addEntry('jpotts', 'cmis:read', 'true')
         >>> acl.addEntry('jsmith', 'cmis:write', 'true')
         >>> acl.getEntries()
-        {u'GROUP_EVERYONE': <cmislib.model.ACE object at 0x100731410>, u'jdoe': <cmislib.model.ACE object at 0x100731150>, 'jpotts': <cmislib.model.ACE object at 0x1005a22d0>, 'jsmith': <cmislib.model.ACE object at 0x1005a2210>}
+        {u'GROUP_EVERYONE': <cmislib.atompub.binding.AtomPubACE object at 0x100731410>, u'jdoe': <cmislib.atompub.binding.AtomPubACE object at 0x100731150>, 'jpotts': <cmislib.atompub.binding.AtomPubACE object at 0x1005a22d0>, 'jsmith': <cmislib.atompub.binding.AtomPubACE object at 0x1005a2210>}
         """
 
         pass
@@ -1937,10 +1937,10 @@
         Removes the :class:`ACE` entry given a specific principalId.
 
         >>> acl.getEntries()
-        {u'GROUP_EVERYONE': <cmislib.model.ACE object at 0x100731410>, u'jdoe': <cmislib.model.ACE object at 0x100731150>, 'jpotts': <cmislib.model.ACE object at 0x1005a22d0>, 'jsmith': <cmislib.model.ACE object at 0x1005a2210>}
+        {u'GROUP_EVERYONE': <cmislib.atompub.binding.AtomPubACE object at 0x100731410>, u'jdoe': <cmislib.atompub.binding.AtomPubACE object at 0x100731150>, 'jpotts': <cmislib.atompub.binding.AtomPubACE object at 0x1005a22d0>, 'jsmith': <cmislib.atompub.binding.AtomPubACE object at 0x1005a2210>}
         >>> acl.removeEntry('jsmith')
         >>> acl.getEntries()
-        {u'GROUP_EVERYONE': <cmislib.model.ACE object at 0x100731410>, u'jdoe': <cmislib.model.ACE object at 0x100731150>, 'jpotts': <cmislib.model.ACE object at 0x1005a22d0>}
+        {u'GROUP_EVERYONE': <cmislib.atompub.binding.AtomPubACE object at 0x100731410>, u'jdoe': <cmislib.atompub.binding.AtomPubACE object at 0x100731150>, 'jpotts': <cmislib.atompub.binding.AtomPubACE object at 0x1005a22d0>}
         """
 
         pass
@@ -1955,7 +1955,7 @@
         >>> acl.addEntry(ACE('jsmith', 'cmis:write', 'true'))
         >>> acl.addEntry(ACE('jpotts', 'cmis:write', 'true'))
         >>> acl.entries
-        {'jpotts': <cmislib.model.ACE object at 0x1012c7310>, 'jsmith': <cmislib.model.ACE object at 0x100528490>}
+        {'jpotts': <cmislib.atompub.binding.AtomPubACE object at 0x1012c7310>, 'jsmith': <cmislib.atompub.binding.AtomPubACE object at 0x100528490>}
         >>> acl.getXmlDoc()
         <xml.dom.minidom.Document instance at 0x1012cbb90>
         >>> acl.clearEntries()
diff --git a/src/cmislib/exceptions.py b/src/cmislib/exceptions.py
index 58d601d..9bbe630 100644
--- a/src/cmislib/exceptions.py
+++ b/src/cmislib/exceptions.py
@@ -19,7 +19,7 @@
 #
 
 """
-Module containing exceptions.
+This module contains exceptions used throughout the API.
 """
 class CmisException(Exception):
 
diff --git a/src/cmislib/messages.py b/src/cmislib/messages.py
index 0d49756..67be0ec 100644
--- a/src/cmislib/messages.py
+++ b/src/cmislib/messages.py
@@ -19,7 +19,7 @@
 #
 
 """
-Common strings.
+This module contains common strings.
 """
 NO_ACL_SUPPORT = 'This repository does not support ACLs'
 NO_CHANGE_LOG_SUPPORT = 'This repository does not support change logs'
diff --git a/src/cmislib/model.py b/src/cmislib/model.py
index 03ede82..8333122 100644
--- a/src/cmislib/model.py
+++ b/src/cmislib/model.py
@@ -18,7 +18,7 @@
 #      under the License.
 #
 """
-Module containing the CmisClient object, which is responsible for
+The model module contains the CmisClient object, which is responsible for
 keeping track of connection information. The name 'model' is no longer
 really appropriate, but it is kept for backwards compatibility.
 """
diff --git a/src/cmislib/util.py b/src/cmislib/util.py
index 00b9c70..85a40dd 100644
--- a/src/cmislib/util.py
+++ b/src/cmislib/util.py
@@ -18,7 +18,7 @@
 #      under the License.
 #
 """
-Module containing handy utility functions.
+This module contains handy utility functions.
 """
 import re
 import iso8601
diff --git a/src/doc/src/about.rst b/src/doc/src/about.rst
index 00697ad..1adf74b 100644
--- a/src/doc/src/about.rst
+++ b/src/doc/src/about.rst
@@ -22,37 +22,18 @@
 
 The library is being developed with the following guidelines:
  * Developers using this API should be able to work with CMIS domain objects without having to worry about the underlying implementation details.
- * The library will use the Resftul AtomPub Binding.
- * The library will conform to the `CMIS spec <http://docs.oasisopen.org/cmis/CMIS/v1.0/cd06/cmis-spec-v1.0.pdf>`_ as closely as possible. Several public CMIS repositories are being used to test the API. 
+ * The library will use the Resftul AtomPub Binding and the Browser Binding (added with CMIS 1.1).
+ * The library will conform to the `CMIS spec <http://docs.oasis-open.org/cmis/CMIS/v1.1/CMIS-v1.1.html>`_ as closely as possible. Several public CMIS repositories are being used to test the API.
  * The library should have no hard-coded URL's. It should be able to get everything it needs regarding how to work with the CMIS service from the CMIS service URL response and subsequent calls.
  * There shouldn't have to be a vendor-specific version of this library. The goal is for it to be interoperable with CMIS-compliant providers.
 
 Quick Example
 -------------
 This should give you an idea of how easy and natural it is to work with the API:
-  >>> cmisClient = cmislib.CmisClient('http://localhost:8080/alfresco/cmisatom', 'admin', 'admin')
+  >>> cmisClient = cmislib.CmisClient('http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom', 'admin', 'admin')
   >>> repo = cmisClient.defaultRepository
   >>> rootFolder = repo.rootFolder
   >>> children = rootFolder.getChildren()
   >>> newFolder = rootFolder.createFolder('testDeleteFolder folder')
   >>> props = newFolder.properties
   >>> newFolder.delete()
-
-To-Do's
--------
-Miscellaneous
- * createDocumentFromSource
- * getProperties filter
- * getContentStream stream id
-
-Unfiling/multifiling support
- * createDocument without a parent folder (unfiled)
-
-  * The spec does not yet support this. Although the spec does say that a folder ID is optional, it does not specify which URL to post the unfiled document to.
-
-Policies
- * Policy object
- * createPolicy
- * applyPolicy
- * removePolicy
- * getAppliedPolicies
diff --git a/src/doc/src/bindings.rst b/src/doc/src/bindings.rst
new file mode 100644
index 0000000..072d8e2
--- /dev/null
+++ b/src/doc/src/bindings.rst
@@ -0,0 +1,59 @@
+..
+   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.
+
+Bindings
+========
+
+The CMIS specification supports multiple bindings. You can think of a binding as
+a communication protocol. The specification provides for three bindings:
+
+ * Atom Pub
+ * Browser (JSON)
+ * Web Services (SOAP)
+
+Although the spec supports three, cmislib supports only two of these bindings:
+Atom Pub and Browser.
+
+When instantiating a :class:`CmisClient`, if you do not specify a binding, cmislib
+will use the Atom Pub binding, by default.
+
+To use a different binding, such as the Browser binding, import it, then pass it
+to the CmisClient constructor, like this:
+
+    >>> from cmislib.browser.binding import BrowserBinding
+    >>> client = CmisClient('http://localhost:8080/alfresco/api/-default-/cmis/versions/1.1/browser', 'admin', 'admin', binding=BrowserBinding())
+
+Make sure you specify the appropriate service URL for the binding you've chosen,
+otherwise cmislib will be unable to parse the response appropriately.
+
+Each of the two bindings modules contain implementations of the classes defined
+in :mod:`cmislib.domain`. So, for example, if you execute a query that returns
+documents and you are using the Atom Pub binding, what you'll get back are instances
+of :class:`cmislib.atompub.AtomPubDocument` which implements :class:`cmislib.domain.Document`.
+
+The :mod:`cmislib.atompub` Module
+---------------------------------
+
+.. automodule:: cmislib.atompub
+   :members:
+
+The :mod:`cmislib.browser` Module
+---------------------------------
+
+.. automodule:: cmislib.browser
+   :members:
diff --git a/src/doc/src/code.rst b/src/doc/src/code.rst
index 04db5b6..dde85c1 100644
--- a/src/doc/src/code.rst
+++ b/src/doc/src/code.rst
@@ -22,21 +22,21 @@
 The :mod:`cmislib.model` Module
 -------------------------------
 
-The :mod:`cmislib.model` Module contains all the CMIS domain objects. The ones you will work with are listed as top level package elements. When working with the repository, the first thing you need to do is grab an instance of :class:`cmislib.CmisClient`, passing it the repository endpoint URL, username, and password.
+When working with the repository, the first thing you need to do is grab an instance of :class:`cmislib.CmisClient`, passing it the repository endpoint URL, username, and password.
 
-For example, in Alfresco 4 and higher, the repository endpoint is
-'http://localhost:8080/alfresco/cmisatom'. In earlier versions of
-Alfresco, the endpoint is
-'http://localhost:8080/alfresco/s/api/cmis'. In both cases, the
-default username and password are 'admin' and 'admin'.
+For example, in Alfresco 4.2 and higher, the repository endpoint for CMIS 1.1 and the Atom Pub binding is
+'http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom'. Earlier versions have different URLs.
+The default username and password are typically 'admin' and 'admin'.
 
->>> cmisClient = cmislib.CmisClient('http://localhost:8080/alfresco/s/cmis', 'admin', 'admin')
+So, to connect to an Alfresco server running on localhost, you would use:
+
+>>> cmisClient = cmislib.CmisClient('http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom', 'admin', 'admin')
 
 From there you can get the default repository...
 
 >>> repo = cmisClient.defaultRepository
 
-or a specific repository if you know the repository ID.
+An Alfresco server has a single repository. Servers from other vendors may have multiple repositories. In those cases, you can get a specific repository if you know the repository ID.
 
 >>> repo = cmisClient.getRepository('83beb297-a6fa-4ac5-844b-98c871c0eea9')
 
@@ -45,6 +45,14 @@
 .. automodule:: cmislib.model
    :members:
 
+The :mod:`cmislib.domain` Module
+--------------------------------
+
+These are the generic domain objects that establish the interface to the cmislib API. Regardless of which actual binding you use (AtomPub or Browser), you will work with these objects.
+
+.. automodule:: cmislib.domain
+   :members:
+
 The :mod:`cmislib.net` Module
 -----------------------------
 
@@ -52,7 +60,7 @@
 
 .. automodule:: cmislib.net
    :members: RESTService
-   
+
 The :mod:`tests` Module
 -------------------------------
 
diff --git a/src/doc/src/codemisc.rst b/src/doc/src/codemisc.rst
new file mode 100644
index 0000000..78a272b
--- /dev/null
+++ b/src/doc/src/codemisc.rst
@@ -0,0 +1,46 @@
+..
+   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.
+
+Miscellaneous Code
+==================
+
+This page documents modules of lesser importance.
+
+The :mod:`cmislib.cmis_services` Module
+---------------------------------------
+
+.. automodule:: cmislib.cmis_services
+   :members:
+
+The :mod:`cmislib.exceptions` Module
+------------------------------------
+
+.. automodule:: cmislib.exceptions
+   :members:
+
+The :mod:`cmislib.messages` Module
+------------------------------------
+
+.. automodule:: cmislib.messages
+  :members:
+
+The :mod:`cmislib.util` Module
+------------------------------
+
+.. automodule:: cmislib.util
+   :members:
diff --git a/src/doc/src/conf.py b/src/doc/src/conf.py
index 1d28cdb..01794e4 100644
--- a/src/doc/src/conf.py
+++ b/src/doc/src/conf.py
@@ -59,7 +59,7 @@
 
 # General information about the project.
 project = u'Apache Chemistry cmislib'
-copyright = u'2013, Apache Software Foundation'
+copyright = u'2016, Apache Software Foundation'
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
@@ -266,7 +266,7 @@
 epub_title = u'Apache Chemistry cmislib Documentation'
 epub_author = u'Jeff Potts'
 epub_publisher = u'Jeff Potts'
-epub_copyright = u'2013, Apache Software Foundation'
+epub_copyright = u'2016, Apache Software Foundation'
 
 # The language of the text. It defaults to the language option
 # or en if the language is not set.
diff --git a/src/doc/src/examples.rst b/src/doc/src/examples.rst
index fd6bb79..123880e 100644
--- a/src/doc/src/examples.rst
+++ b/src/doc/src/examples.rst
@@ -23,7 +23,7 @@
 ========
 There's nothing in cmislib that is specific to any particular vendor. Once you give it your CMIS provider's service URL and some credentials, it figures out where to go from there.
 
-Let's look at some examples using Alfresco's public CMIS repository.
+Let's look at some examples using a local install of Alfresco Community Edition.
 
 -----------------------
 Get a Repository object
@@ -34,33 +34,36 @@
 
     >>> from cmislib import CmisClient
 
- #. Point the CmisClient at the repository's service URL 
+ #. Point the CmisClient at the repository's service URL
 
-    >>> client = CmisClient('http://cmis.alfresco.com/cmisatom', 'admin', 'admin')
+    >>> client = CmisClient('http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom', 'admin', 'admin')
 
  #. Get the default repository for the service
 
     >>> repo = client.defaultRepository
     >>> repo.id
-    u'83beb297-a6fa-4ac5-844b-98c871c0eea9'
+    u'-default-'
 
  #. Get the repository's properties. This for-loop spits out everything cmislib knows about the repo.
 
     >>> repo.name
-    u'Main Repository'
+    u''
     >>> info = repo.info
     >>> for k,v in info.items():
         ...     print "%s:%s" % (k,v)
         ...
-        cmisSpecificationTitle:Version 1.0 Committee Draft 04
-        cmisVersionSupported:1.0
+        cmisVersionSupported:1.1
+        principalAnonymous:guest
+        principalAnyone:GROUP_EVERYONE
         repositoryDescription:None
-        productVersion:3.2.0 (r2 2440)
-        rootFolderId:workspace://SpacesStore/aa1ecedf-9551-49c5-831a-0502bb43f348
-        repositoryId:83beb297-a6fa-4ac5-844b-98c871c0eea9
-        repositoryName:Main Repository
+        changesOnType:cmis:folder
+        changesIncomplete:true
+        productVersion:5.2.0 (r133656-b12)
+        rootFolderId:000f9013-af35-430e-912f-67328f106279
+        repositoryId:-default-
+        repositoryName:None
         vendorName:Alfresco
-        productName:Alfresco Repository (Community)
+        productName:Alfresco Community
 
 -------------------
 Folders & Documents
@@ -73,7 +76,7 @@
     >>> root = repo.rootFolder
     >>> someFolder = root.createFolder('someFolder')
     >>> someFolder.id
-    u'workspace://SpacesStore/91f344ef-84e7-43d8-b379-959c0be7e8fc'
+    u'92133bfd-8b69-4e97-9af2-761a09f29e01'
 
  #. Then, you can create some content:
 
@@ -87,12 +90,12 @@
     ...     print '%s:%s' % (k,v)
     ...
     cmis:contentStreamMimeType:text/plain
-    cmis:creationDate:2009-12-18T10:59:26.667-06:00
+    cmis:creationDate:2016-12-29 14:53:47.430000-06:00
     cmis:baseTypeId:cmis:document
     cmis:isLatestMajorVersion:false
     cmis:isImmutable:false
     cmis:isMajorVersion:false
-    cmis:objectId:workspace://SpacesStore/2cf36ad5-92b0-4731-94a4-9f3fef25b479
+    cmis:objectId:c4bc9d00-5bf0-404d-8f0a-a6260f6d21ae;1.0
 
 ----------------------------------
 Searching For & Retrieving Objects
@@ -102,11 +105,8 @@
  * You can run a CMIS query
  * You can ask the repository to give you one for a specific path or object ID
  * You can traverse the repository using a folder's children and/or descendants
- 
+
  #. Let's find the doc we just created with a full-text search.
-  
-    .. note::
-       Note that I'm currently seeing a problem with Alfresco in which the CMIS service returns one less result than what's really there):
 
     >>> results = repo.query("select * from cmis:document where contains('test')")
     >>> for result in results:
@@ -119,19 +119,19 @@
 
     >>> someDoc = repo.getObjectByPath('/someFolder/Test Document')
     >>> someDoc.id
-    u'workspace://SpacesStore/2cf36ad5-92b0-4731-94a4-9f3fef25b479'
+    'c4bc9d00-5bf0-404d-8f0a-a6260f6d21ae;1.0'
 
  #. Or their object ID, like this:
- 
-    >>> someDoc = repo.getObject('workspace://SpacesStore/2cf36ad5-92b0-4731-94a4-9f3fef25b479')
+
+    >>> someDoc = repo.getObject('c4bc9d00-5bf0-404d-8f0a-a6260f6d21ae;1.0')
     >>> someDoc.name
     u'Test Document'
- 
+
  #. Folder objects have getChildren() and getDescendants() methods that will return a list of :class:`CmisObject` objects:
- 
-	>>> children= someFolder.getChildren()
+
+	>>> children = someFolder.getChildren()
 	>>> for child in children:
 	...     print child.name
-	... 
+	...
 	Test Document
-	Test Document2  
+	Test Document2
diff --git a/src/doc/src/index.rst b/src/doc/src/index.rst
index 4656ebc..1605a9b 100644
--- a/src/doc/src/index.rst
+++ b/src/doc/src/index.rst
@@ -32,11 +32,12 @@
    about.rst
    install.rst
    examples.rst
+   bindings.rst
    code.rst
+   codemisc.rst
    devguide.rst
    tests.rst
    docs.rst
-   sample-data.rst
 
 Indices and tables
 ==================
@@ -44,4 +45,3 @@
 * :ref:`genindex`
 * :ref:`modindex`
 * :ref:`search`
-
diff --git a/src/doc/src/install.rst b/src/doc/src/install.rst
index d535d7b..9d44681 100644
--- a/src/doc/src/install.rst
+++ b/src/doc/src/install.rst
@@ -22,15 +22,15 @@
 Requirements
 ------------
 These requirements must be met:
- - Python 2.6.x
- - CMIS provider compliant with CMIS 1.0
+ - Python 2.6.x or Python 2.7.x. Python 3.x is not supported.
+ - CMIS provider compliant with CMIS 1.0 or CMIS 1.1
 
 Steps
 -----
  #. If you don't have `Python <http://www.python.org>`_ installed already, do so.
  #. If you don't have `setuptools <http://pypi.python.org/pypi/setuptools>`_ installed already, do so.
  #. Once setuptools is installed, type `easy_install cmislib`
- #. That's it! 
+ #. That's it!
 
 Once you do that, you should be able to fire up Python on the command-line and import cmislib successfully.
 
diff --git a/src/doc/src/sample-data.rst b/src/doc/src/sample-data.rst
deleted file mode 100644
index 6a345d7..0000000
--- a/src/doc/src/sample-data.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-..
-   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.
-
-Sample Data
-===========
-
-The /path/to/cmislib/src/data directory contains some sample XML responses from a CMIS service. These are for sample and development purposes and can safely be ignored if you are an end-user of the library.
-
-In some cases there are two files for the same response. For example, 'types.xml' came from Alfresco while 'types.chemistry.xml' came from the simple Apache Chemistry test server.
diff --git a/src/doc/src/tests.rst b/src/doc/src/tests.rst
index da1431a..7a6f0c9 100644
--- a/src/doc/src/tests.rst
+++ b/src/doc/src/tests.rst
@@ -31,7 +31,7 @@
    python cmislibtest.py
 
 .. note::
-   http://cmis.alfresco.com is a freely-available, hosted CMIS service. If you want to use that for testing, the URL is http://cmis.alfresco.com/s/cmis and the username and password are admin/admin. See the wiki for other known CMIS test servers.
+   See the wiki for other known CMIS test servers.
 
 If everything goes well, you should see::
 
diff --git a/src/tests/__init__.py b/src/tests/__init__.py
index a716331..b1e560b 100644
--- a/src/tests/__init__.py
+++ b/src/tests/__init__.py
@@ -16,4 +16,4 @@
 #      specific language governing permissions and limitations
 #      under the License.
 #
-from cmislibtests import *
+from tests import *