Added: 
websites/staging/chemistry/trunk/content/docs/cmis-samples/mkdocs/search_index.json
==============================================================================
--- 
websites/staging/chemistry/trunk/content/docs/cmis-samples/mkdocs/search_index.json
 (added)
+++ 
websites/staging/chemistry/trunk/content/docs/cmis-samples/mkdocs/search_index.json
 Fri Jun 24 10:34:43 2016
@@ -0,0 +1,749 @@
+{
+    "docs": [
+        {
+            "location": "/index.html", 
+            "text": "Apache Chemistry CMIS Code Samples\n\n\n\n\n\n\nCMIS 
(Content Management Interoperability Services)\n is an OASIS standard enabling 
information sharing between different Content Management 
Systems.\n\n\n\n\n\n\n\nThis is a collection of code samples for 
\n\n\n\n\n\n\nApache Chemistry OpenCMIS\n - a CMIS library for Java\n\n\nApache 
Chemistry PortCMIS\n - a CMIS library for.Net\n\n\n\n\n\n\nUnder 
Development\n\n\nThis sample collection is under development. Some areas are 
only sparely covered or not covered at all, yet.\nAlso some code samples lack a 
meaningful description. If you want help, please see the \nabout 
page\n.\n\n\n\n\n\n\nApache Chemistry\n\n\nApache Chemistry\n provides open 
source client and server implementations of \nCMIS 1.0\n and \nCMIS 1.1\n for 
multiple programming languages (Java, .Net, Python, PHP, Objective-C, 
JavaScript, \n).  \n\n\n\n\nDo you want to know more about CMIS and Apache 
Chemistry?\n\n\n\n\nThe book \nCMIS and Apache Chemistry
  in Action\n is a comprehensive guide to the CMIS standard and related ECM 
concepts. In it, you\nll tackle hands-on examples for building applications on 
CMIS repositories from both the client and the server sides. You\nll find 
working examples using the Apache Chemistry APIs for Java, Python, C#, 
Objective-C, and PHP, but you can use the techniques you\nll learn in this book 
to work with CMIS repositories using any language that can speak HTTP - 
including JavaScript.\n\n\n\n\n\n\n\nOpenCMIS\n\n\nOpenCMIS\n is a CMIS client 
library and a CMIS server framework for Java. It also provides developer tools 
such as the \nCMIS Workbench\n and the \nInMemory Repository\n. OpenCMIS runs 
on servers, desktops, and Android.\n\n\nThe code samples in this documentation 
cover the OpenCMIS client API. If you want to build a CMIS server with 
OpenCMIS, refer to the \nOpenCMIS Server Development Guide\n.\n\n\nTo get 
started with OpenCMIS, download the \nOpenCMIS client libraries\n or use Maven 
or Grad
 le to get the client libraries.\n\n\nMaven\n\n\nReplace \n[OpenCMIS version]\n 
with the latest version number, e.g. \n0.14.0\n.\n\n\ndependency\n\n    
\ngroupId\norg.apache.chemistry.opencmis\n/groupId\n\n    
\nartifactId\nchemistry-opencmis-client-impl\n/artifactId\n\n    
\nversion\n[OpenCMIS version]\n/version\n\n\n/dependency\n\n\n\n\n\nFor 
Android:\n\n\ndependency\n\n    
\ngroupId\norg.apache.chemistry.opencmis\n/groupId\n\n    
\nartifactId\nchemistry-opencmis-android-client\n/artifactId\n\n    
\nversion\n[OpenCMIS 
version]\n/version\n\n\n/dependency\n\n\n\n\n\nGradle\n\n\nReplace \n[OpenCMIS 
version]\n with the latest version number, e.g. \n0.14.0\n.\n\n\ncompile group: 
'org.apache.chemistry.opencmis', name: 'chemistry-opencmis-client-impl', 
version: '[OpenCMIS version]'\n\n\n\n\nFor Android:\n\n\ncompile group: 
'org.apache.chemistry.opencmis', name: 'chemistry-opencmis-android-client', 
version: '[OpenCMIS version]'\n\n\n\n\nPortCMIS\n\n\nPortCMIS\n is a CMIS 
client library for
  .Net. It is a Portable Class Library that runs on servers, desktops, and 
Windows Mobile.\n\n\nTo get started with PortCMIS, download the \nPortCMIS 
client binaries\n. You have the choice of either plain DLLs or NUPGK packages. 
It is also availabe on \nnuget\n:\n\n\nPM\n Install-Package PortCMIS 
\n\n\n\n\nDotCMIS\n\n\nDotCMIS\n is the predecessor of \nPortCMIS\n.\nThe APIs 
are very similar and most of the PortCMIS samples should also work with 
DotCMIS.\n\n\nThe high-level differences between DotCMIS and PortCMIS are 
described on \nthis page\n.\nFor new projects it is recommend to use 
PortCMIS.", 
+            "title": "Home"
+        }, 
+        {
+            "location": "/index.html#apache-chemistry-cmis-code-samples", 
+            "text": "CMIS (Content Management Interoperability Services)  is 
an OASIS standard enabling information sharing between different Content 
Management Systems.    This is a collection of code samples for     Apache 
Chemistry OpenCMIS  - a CMIS library for Java  Apache Chemistry PortCMIS  - a 
CMIS library for.Net    Under Development  This sample collection is under 
development. Some areas are only sparely covered or not covered at all, 
yet.\nAlso some code samples lack a meaningful description. If you want help, 
please see the  about page .", 
+            "title": "Apache Chemistry CMIS Code Samples"
+        }, 
+        {
+            "location": "/index.html#apache-chemistry", 
+            "text": "Apache Chemistry  provides open source client and server 
implementations of  CMIS 1.0  and  CMIS 1.1  for multiple programming languages 
(Java, .Net, Python, PHP, Objective-C, JavaScript,  ).     Do you want to know 
more about CMIS and Apache Chemistry?   The book  CMIS and Apache Chemistry in 
Action  is a comprehensive guide to the CMIS standard and related ECM concepts. 
In it, you ll tackle hands-on examples for building applications on CMIS 
repositories from both the client and the server sides. You ll find working 
examples using the Apache Chemistry APIs for Java, Python, C#, Objective-C, and 
PHP, but you can use the techniques you ll learn in this book to work with CMIS 
repositories using any language that can speak HTTP - including JavaScript.", 
+            "title": "Apache Chemistry™"
+        }, 
+        {
+            "location": "/index.html#opencmis", 
+            "text": "OpenCMIS  is a CMIS client library and a CMIS server 
framework for Java. It also provides developer tools such as the  CMIS 
Workbench  and the  InMemory Repository . OpenCMIS runs on servers, desktops, 
and Android.  The code samples in this documentation cover the OpenCMIS client 
API. If you want to build a CMIS server with OpenCMIS, refer to the  OpenCMIS 
Server Development Guide .  To get started with OpenCMIS, download the  
OpenCMIS client libraries  or use Maven or Gradle to get the client 
libraries.", 
+            "title": "OpenCMIS"
+        }, 
+        {
+            "location": "/index.html#maven", 
+            "text": "Replace  [OpenCMIS version]  with the latest version 
number, e.g.  0.14.0 .  dependency \n     groupId org.apache.chemistry.opencmis 
/groupId \n     artifactId chemistry-opencmis-client-impl /artifactId \n     
version [OpenCMIS version] /version  /dependency   For Android:  dependency \n  
   groupId org.apache.chemistry.opencmis /groupId \n     artifactId 
chemistry-opencmis-android-client /artifactId \n     version [OpenCMIS version] 
/version  /dependency", 
+            "title": "Maven"
+        }, 
+        {
+            "location": "/index.html#gradle", 
+            "text": "Replace  [OpenCMIS version]  with the latest version 
number, e.g.  0.14.0 .  compile group: 'org.apache.chemistry.opencmis', name: 
'chemistry-opencmis-client-impl', version: '[OpenCMIS version]'  For Android:  
compile group: 'org.apache.chemistry.opencmis', name: 
'chemistry-opencmis-android-client', version: '[OpenCMIS version]'", 
+            "title": "Gradle"
+        }, 
+        {
+            "location": "/index.html#portcmis", 
+            "text": "PortCMIS  is a CMIS client library for .Net. It is a 
Portable Class Library that runs on servers, desktops, and Windows Mobile.  To 
get started with PortCMIS, download the  PortCMIS client binaries . You have 
the choice of either plain DLLs or NUPGK packages. It is also availabe on  
nuget :  PM  Install-Package PortCMIS", 
+            "title": "PortCMIS"
+        }, 
+        {
+            "location": "/index.html#dotcmis", 
+            "text": "DotCMIS  is the predecessor of  PortCMIS .\nThe APIs are 
very similar and most of the PortCMIS samples should also work with DotCMIS.  
The high-level differences between DotCMIS and PortCMIS are described on  this 
page .\nFor new projects it is recommend to use PortCMIS.", 
+            "title": "DotCMIS"
+        }, 
+        {
+            "location": "/samples/create-session/index.html", 
+            "text": "Creating a Session\n\n\nA session is the entry point to 
the content repository. Creating a session is the first thing an application 
has to do to interact with the repository.\n\n\nA few details such as the URL 
of the repository endpoint, the user name and the user\ns credentials are 
necessary to establish a session.\nBeyond that more details might be required, 
depending on the repository and the environment. Those details are controlled 
by session parameters.\n\n\nA complete list of all session parameters for 
OpenCMIS can be found in the JavaDoc. For PortCMIS, please refer to the help 
file that is contained in the binary packages.\n\n\n\n\nWhich binding should I 
use?\n\n\nThe \nBrowser Binding\n is the fastest binding and is recommended for 
\nCMIS 1.1\n repositories.\n\nChoose the \nAtomPub Binding\n for \nCMIS 1.0\n 
repositories.\n\nThe Web Services Binding is the last resort and should be 
avoided. It is the slowest binding and is the most complex to set up.\n
 \n\n\n\nAtomPub Binding\n\n\nCMIS 1.0\n\n\nCMIS 1.1\n\n\nOpenCMIS 
(Java)\n\n\n// default factory implementation\nSessionFactory factory = 
SessionFactoryImpl.newInstance();\nMap\nString, String\n parameters = new 
HashMap\nString, String\n();\n\n// user 
credentials\nparameters.put(SessionParameter.USER, 
\nOtto\n);\nparameters.put(SessionParameter.PASSWORD, \n****\n);\n\n// 
connection settings\nparameters.put(SessionParameter.ATOMPUB_URL, 
\nhttp://\nhost\n:\nport\n/cmis/atom\n);\nparameters.put(SessionParameter.BINDING_TYPE,
 BindingType.ATOMPUB.value());\nparameters.put(SessionParameter.REPOSITORY_ID, 
\nmyRepository\n);\n\n// create session\nSession session = 
factory.createSession(parameters);\n\n\n\n\nPortCMIS (C#)\n\n\n// default 
factory implementation\nSessionFactory factory = 
SessionFactory.NewInstance();\nDictionary\nstring, string\n parameters = new 
Dictionary\nstring, string\n();\n\n// user 
credentials\nparameters[SessionParameter.User] = 
\nOtto\n;\nparameters[SessionParameter.P
 assword] = \n****\n;\n\n// connection 
settings\nparameters[SessionParameter.AtomPubUrl] = 
\nhttp://\nhost\n:\nport\n/cmis/atom\n;\nparameters[SessionParameter.BindingType]
 = BindingType.AtomPub;\nparameters[SessionParameter.RepositoryId] = 
\nmyRepository\n;\n\n// create session\nISession session = 
factory.CreateSession(parameters);\n\n\n\n\nBrowser Binding\n\n\nCMIS 
1.1\n\n\nOpenCMIS (Java)\n\n\n// default factory implementation\nSessionFactory 
factory = SessionFactoryImpl.newInstance();\nMap\nString, String\n parameters = 
new HashMap\nString, String\n();\n\n// user 
credentials\nparameters.put(SessionParameter.USER, 
\nOtto\n);\nparameters.put(SessionParameter.PASSWORD, \n****\n);\n\n// 
connection settings\nparameters.put(SessionParameter.BROWSER_URL, 
\nhttp://\nhost\n:\nport\n/cmis/browser\n);\nparameters.put(SessionParameter.BINDING_TYPE,
 BindingType.BROWSER.value());\nparameters.put(SessionParameter.REPOSITORY_ID, 
\nmyRepository\n);\n\n// create session\nSession session = factory.
 createSession(parameters);\n\n\n\n\nPortCMIS (C#)\n\n\n// default factory 
implementation\nSessionFactory factory = 
SessionFactory.NewInstance();\nDictionary\nstring, string\n parameters = new 
Dictionary\nstring, string\n();\n\n// user 
credentials\nparameters[SessionParameter.User] = 
\nOtto\n;\nparameters[SessionParameter.Password] = \n****\n;\n\n// connection 
settings\nparameters[SessionParameter.BrowserUrl] = 
\nhttp://\nhost\n:\nport\n/cmis/browser\n;\nparameters[SessionParameter.BindingType]
 = BindingType.Browser;\nparameters[SessionParameter.RepositoryId] = 
\nmyRepository\n;\n\n// create session\nISession session = 
factory.CreateSession(parameters);\n\n\n\n\nWeb Services Binding\n\n\nCMIS 
1.0\n\n\nCMIS 1.1\n\n\nPortCMIS does not support the Web Service 
binding.\n\n\nOpenCMIS (Java)\n\n\n// default factory 
implementation\nSessionFactory factory = 
SessionFactoryImpl.newInstance();\nMap\nString, String\n parameters = new 
HashMap\nString, String\n();\n\n// user credentials\nparameter
 s.put(SessionParameter.USER, 
\nOtto\n);\nparameters.put(SessionParameter.PASSWORD, \n****\n);\n\n// 
connection settings\nparameters.put(SessionParameter.BINDING_TYPE, 
BindingType.WEBSERVICES.value());\nparameters.put(SessionParameter.WEBSERVICES_ACL_SERVICE,
 
\nhttp://\nhost\n:\nport\n/cmis/services/ACLService?wsdl\n);\nparameters.put(SessionParameter.WEBSERVICES_DISCOVERY_SERVICE,
 
\nhttp://\nhost\n:\nport\n/cmis/services/DiscoveryService?wsdl\n);\nparameters.put(SessionParameter.WEBSERVICES_MULTIFILING_SERVICE,
 
\nhttp://\nhost\n:\nport\n/cmis/services/MultiFilingService?wsdl\n);\nparameters.put(SessionParameter.WEBSERVICES_NAVIGATION_SERVICE,
 
\nhttp://\nhost\n:\nport\n/cmis/services/NavigationService?wsdl\n);\nparameters.put(SessionParameter.WEBSERVICES_OBJECT_SERVICE,
 
\nhttp://\nhost\n:\nport\n/cmis/services/ObjectService?wsdl\n);\nparameters.put(SessionParameter.WEBSERVICES_POLICY_SERVICE,
 
\nhttp://\nhost\n:\nport\n/cmis/services/PolicyService?wsdl\n);\nparameters.put(SessionParam
 eter.WEBSERVICES_RELATIONSHIP_SERVICE, 
\nhttp://\nhost\n:\nport\n/cmis/services/RelationshipService?wsdl\n);\nparameters.put(SessionParameter.WEBSERVICES_REPOSITORY_SERVICE,
 
\nhttp://\nhost\n:\nport\n/cmis/services/RepositoryService?wsdl\n);\nparameters.put(SessionParameter.WEBSERVICES_VERSIONING_SERVICE,
 
\nhttp://\nhost\n:\nport\n/cmis/services/VersioningService?wsdl\n);\nparameters.put(SessionParameter.REPOSITORY_ID,
 \nmyRepository\n);\n\n// create session\nSession session = 
factory.createSession(parameters);\n\n\n\n\nLocal Binding\n\n\nCMIS 
1.0\n\n\nCMIS 1.1\n\n\nThe local binding is specific to OpenCMIS. It lets an 
OpenCMIS client connect to an OpenCMIS server in the same JVM.\nThere is no 
PortCMIS equivalent.\n\n\nOpenCMIS (Java)\n\n\n// default factory 
implementation\nSessionFactory factory = 
SessionFactoryImpl.newInstance();\nMap\nString, String\n parameters = new 
HashMap\nString, String\n();\n\n// user 
credentials\nparameters.put(SessionParameter.USER, \nOtto\n);\nparameters
 .put(SessionParameter.PASSWORD, \n****\n);\n\n// connection 
settings\nparameters.put(SessionParameter.BINDING_TYPE, 
BindingType.LOCAL.value());\nparameters.put(SessionParameter.LOCAL_FACTORY, 
\nmy.local.factory\n);\nparameters.put(SessionParameter.REPOSITORY_ID, 
\nmyRepository\n);\n\n// create session\nSession session = 
factory.createSession(parameters);\n\n\n\n\nConnecting to the First 
Repository\n\n\nSome CMIS endpoints only provide one repository. In this case 
it is not necessary to provide its repository ID.\nThe following code snippet 
gets the list of all available repositories and connects to the first 
one.\n\n\nOpenCMIS (Java)\n\n\nSessionFactory factory = 
SessionFactoryImpl.newInstance();\nList\nRepository\n repositories = 
factory.getRepositories(parameters);\nSession session = 
repositories.get(0).createSession();\n\n\n\n\nPortCMIS (C#)\n\n\nSessionFactory 
factory = SessionFactory.NewInstance();\nISession session = 
factory.GetRepositories(parameters)[0].CreateSession();", 
+            "title": "Creating a Session"
+        }, 
+        {
+            "location": 
"/samples/create-session/index.html#creating-a-session", 
+            "text": "A session is the entry point to the content repository. 
Creating a session is the first thing an application has to do to interact with 
the repository.  A few details such as the URL of the repository endpoint, the 
user name and the user s credentials are necessary to establish a 
session.\nBeyond that more details might be required, depending on the 
repository and the environment. Those details are controlled by session 
parameters.  A complete list of all session parameters for OpenCMIS can be 
found in the JavaDoc. For PortCMIS, please refer to the help file that is 
contained in the binary packages.   Which binding should I use?  The  Browser 
Binding  is the fastest binding and is recommended for  CMIS 1.1  repositories. 
\nChoose the  AtomPub Binding  for  CMIS 1.0  repositories. \nThe Web Services 
Binding is the last resort and should be avoided. It is the slowest binding and 
is the most complex to set up.", 
+            "title": "Creating a Session"
+        }, 
+        {
+            "location": "/samples/create-session/index.html#atompub-binding", 
+            "text": "CMIS 1.0  CMIS 1.1  OpenCMIS (Java)  // default factory 
implementation\nSessionFactory factory = SessionFactoryImpl.newInstance();\nMap 
String, String  parameters = new HashMap String, String ();\n\n// user 
credentials\nparameters.put(SessionParameter.USER,  Otto 
);\nparameters.put(SessionParameter.PASSWORD,  **** );\n\n// connection 
settings\nparameters.put(SessionParameter.ATOMPUB_URL,  http:// host : port 
/cmis/atom );\nparameters.put(SessionParameter.BINDING_TYPE, 
BindingType.ATOMPUB.value());\nparameters.put(SessionParameter.REPOSITORY_ID,  
myRepository );\n\n// create session\nSession session = 
factory.createSession(parameters);  PortCMIS (C#)  // default factory 
implementation\nSessionFactory factory = 
SessionFactory.NewInstance();\nDictionary string, string  parameters = new 
Dictionary string, string ();\n\n// user 
credentials\nparameters[SessionParameter.User] =  Otto 
;\nparameters[SessionParameter.Password] =  **** ;\n\n// connection 
settings\nparamete
 rs[SessionParameter.AtomPubUrl] =  http:// host : port /cmis/atom 
;\nparameters[SessionParameter.BindingType] = 
BindingType.AtomPub;\nparameters[SessionParameter.RepositoryId] =  myRepository 
;\n\n// create session\nISession session = factory.CreateSession(parameters);", 
+            "title": "AtomPub Binding"
+        }, 
+        {
+            "location": "/samples/create-session/index.html#browser-binding", 
+            "text": "CMIS 1.1  OpenCMIS (Java)  // default factory 
implementation\nSessionFactory factory = SessionFactoryImpl.newInstance();\nMap 
String, String  parameters = new HashMap String, String ();\n\n// user 
credentials\nparameters.put(SessionParameter.USER,  Otto 
);\nparameters.put(SessionParameter.PASSWORD,  **** );\n\n// connection 
settings\nparameters.put(SessionParameter.BROWSER_URL,  http:// host : port 
/cmis/browser );\nparameters.put(SessionParameter.BINDING_TYPE, 
BindingType.BROWSER.value());\nparameters.put(SessionParameter.REPOSITORY_ID,  
myRepository );\n\n// create session\nSession session = 
factory.createSession(parameters);  PortCMIS (C#)  // default factory 
implementation\nSessionFactory factory = 
SessionFactory.NewInstance();\nDictionary string, string  parameters = new 
Dictionary string, string ();\n\n// user 
credentials\nparameters[SessionParameter.User] =  Otto 
;\nparameters[SessionParameter.Password] =  **** ;\n\n// connection 
settings\nparameters[Sess
 ionParameter.BrowserUrl] =  http:// host : port /cmis/browser 
;\nparameters[SessionParameter.BindingType] = 
BindingType.Browser;\nparameters[SessionParameter.RepositoryId] =  myRepository 
;\n\n// create session\nISession session = factory.CreateSession(parameters);", 
+            "title": "Browser Binding"
+        }, 
+        {
+            "location": 
"/samples/create-session/index.html#web-services-binding", 
+            "text": "CMIS 1.0  CMIS 1.1  PortCMIS does not support the Web 
Service binding.  OpenCMIS (Java)  // default factory 
implementation\nSessionFactory factory = SessionFactoryImpl.newInstance();\nMap 
String, String  parameters = new HashMap String, String ();\n\n// user 
credentials\nparameters.put(SessionParameter.USER,  Otto 
);\nparameters.put(SessionParameter.PASSWORD,  **** );\n\n// connection 
settings\nparameters.put(SessionParameter.BINDING_TYPE, 
BindingType.WEBSERVICES.value());\nparameters.put(SessionParameter.WEBSERVICES_ACL_SERVICE,
  http:// host : port /cmis/services/ACLService?wsdl 
);\nparameters.put(SessionParameter.WEBSERVICES_DISCOVERY_SERVICE,  http:// 
host : port /cmis/services/DiscoveryService?wsdl 
);\nparameters.put(SessionParameter.WEBSERVICES_MULTIFILING_SERVICE,  http:// 
host : port /cmis/services/MultiFilingService?wsdl 
);\nparameters.put(SessionParameter.WEBSERVICES_NAVIGATION_SERVICE,  http:// 
host : port /cmis/services/NavigationService?wsdl );\npar
 ameters.put(SessionParameter.WEBSERVICES_OBJECT_SERVICE,  http:// host : port 
/cmis/services/ObjectService?wsdl 
);\nparameters.put(SessionParameter.WEBSERVICES_POLICY_SERVICE,  http:// host : 
port /cmis/services/PolicyService?wsdl 
);\nparameters.put(SessionParameter.WEBSERVICES_RELATIONSHIP_SERVICE,  http:// 
host : port /cmis/services/RelationshipService?wsdl 
);\nparameters.put(SessionParameter.WEBSERVICES_REPOSITORY_SERVICE,  http:// 
host : port /cmis/services/RepositoryService?wsdl 
);\nparameters.put(SessionParameter.WEBSERVICES_VERSIONING_SERVICE,  http:// 
host : port /cmis/services/VersioningService?wsdl 
);\nparameters.put(SessionParameter.REPOSITORY_ID,  myRepository );\n\n// 
create session\nSession session = factory.createSession(parameters);", 
+            "title": "Web Services Binding"
+        }, 
+        {
+            "location": "/samples/create-session/index.html#local-binding", 
+            "text": "CMIS 1.0  CMIS 1.1  The local binding is specific to 
OpenCMIS. It lets an OpenCMIS client connect to an OpenCMIS server in the same 
JVM.\nThere is no PortCMIS equivalent.  OpenCMIS (Java)  // default factory 
implementation\nSessionFactory factory = SessionFactoryImpl.newInstance();\nMap 
String, String  parameters = new HashMap String, String ();\n\n// user 
credentials\nparameters.put(SessionParameter.USER,  Otto 
);\nparameters.put(SessionParameter.PASSWORD,  **** );\n\n// connection 
settings\nparameters.put(SessionParameter.BINDING_TYPE, 
BindingType.LOCAL.value());\nparameters.put(SessionParameter.LOCAL_FACTORY,  
my.local.factory );\nparameters.put(SessionParameter.REPOSITORY_ID,  
myRepository );\n\n// create session\nSession session = 
factory.createSession(parameters);", 
+            "title": "Local Binding"
+        }, 
+        {
+            "location": 
"/samples/create-session/index.html#connecting-to-the-first-repository", 
+            "text": "Some CMIS endpoints only provide one repository. In this 
case it is not necessary to provide its repository ID.\nThe following code 
snippet gets the list of all available repositories and connects to the first 
one.  OpenCMIS (Java)  SessionFactory factory = 
SessionFactoryImpl.newInstance();\nList Repository  repositories = 
factory.getRepositories(parameters);\nSession session = 
repositories.get(0).createSession();  PortCMIS (C#)  SessionFactory factory = 
SessionFactory.NewInstance();\nISession session = 
factory.GetRepositories(parameters)[0].CreateSession();", 
+            "title": "Connecting to the First Repository"
+        }, 
+        {
+            "location": "/samples/capabilities/index.html", 
+            "text": "Getting Repository Capabilities\n\n\nCMIS 1.0\n\n\nCMIS 
1.1\n\n\nSpec 2.1.1.1\n\n\nQuery Capability\n\n\nCheck whether the repository 
supports queries or not.\n\n\nOpenCMIS (Java)\n\n\nRepositoryInfo info = 
session.getRepositoryInfo();\n\nCapabilityQuery capabilityQuery = 
info.getCapabilities().getQueryCapability(); \nboolean supportsQuery = 
capabilityQuery != null \n capabilityQuery != 
CapabilityQuery.NONE;\n\n\n\n\nACL Capability\n\n\nCheck whether the repository 
supports ACLs or not.\n\n\nOpenCMIS (Java)\n\n\nRepositoryInfo info = 
session.getRepositoryInfo();\n\nCapabilityAcl capabilityAcl = 
info.getCapabilities().getAclCapability();\nboolean supportsAcls = 
capabilityAcl != null \n capabilityAcl != CapabilityAcl.NONE;\nboolean 
manageAcls = capabilityAcl == CapabilityAcl.MANAGE; // supports 
applyACL()\n\n\n\n\nMulti-Filing Capability\n\n\nCheck whether the repository 
supports multi-filing or not.\n\n\nOpenCMIS (Java)\n\n\nRepositoryInfo info = 
session.getRepos
 itoryInfo();\n\nboolean supportsMultiFiling = 
Boolean.TRUE.equals(info.getCapabilities().isMultifilingSupported());\n\n\n\n\nUnfiling
 Capability\n\n\nCheck whether the repository supports unfiling or 
not.\n\n\nOpenCMIS (Java)\n\n\nRepositoryInfo info = 
session.getRepositoryInfo();\n\nboolean supportsUnfiling = 
Boolean.TRUE.equals(info.getCapabilities().isUnfilingSupported());", 
+            "title": "Getting Repository Capabilities"
+        }, 
+        {
+            "location": 
"/samples/capabilities/index.html#getting-repository-capabilities", 
+            "text": "CMIS 1.0  CMIS 1.1  Spec 2.1.1.1", 
+            "title": "Getting Repository Capabilities"
+        }, 
+        {
+            "location": "/samples/capabilities/index.html#query-capability", 
+            "text": "Check whether the repository supports queries or not.  
OpenCMIS (Java)  RepositoryInfo info = 
session.getRepositoryInfo();\n\nCapabilityQuery capabilityQuery = 
info.getCapabilities().getQueryCapability(); \nboolean supportsQuery = 
capabilityQuery != null   capabilityQuery != CapabilityQuery.NONE;", 
+            "title": "Query Capability"
+        }, 
+        {
+            "location": "/samples/capabilities/index.html#acl-capability", 
+            "text": "Check whether the repository supports ACLs or not.  
OpenCMIS (Java)  RepositoryInfo info = 
session.getRepositoryInfo();\n\nCapabilityAcl capabilityAcl = 
info.getCapabilities().getAclCapability();\nboolean supportsAcls = 
capabilityAcl != null   capabilityAcl != CapabilityAcl.NONE;\nboolean 
manageAcls = capabilityAcl == CapabilityAcl.MANAGE; // supports applyACL()", 
+            "title": "ACL Capability"
+        }, 
+        {
+            "location": 
"/samples/capabilities/index.html#multi-filing-capability", 
+            "text": "Check whether the repository supports multi-filing or 
not.  OpenCMIS (Java)  RepositoryInfo info = 
session.getRepositoryInfo();\n\nboolean supportsMultiFiling = 
Boolean.TRUE.equals(info.getCapabilities().isMultifilingSupported());", 
+            "title": "Multi-Filing Capability"
+        }, 
+        {
+            "location": 
"/samples/capabilities/index.html#unfiling-capability", 
+            "text": "Check whether the repository supports unfiling or not.  
OpenCMIS (Java)  RepositoryInfo info = session.getRepositoryInfo();\n\nboolean 
supportsUnfiling = 
Boolean.TRUE.equals(info.getCapabilities().isUnfilingSupported());", 
+            "title": "Unfiling Capability"
+        }, 
+        {
+            "location": "/samples/types/index.html", 
+            "text": "Working with Types\n\n\nGetting Type 
Definitions\n\n\nCMIS 1.0\n\n\nCMIS 1.1\n\n\nSpec 2.1.3\n\n\nGetting a Specific 
Type Definition\n\n\nOpenCMIS (Java)\n\n\nObjectType type = 
session.getTypeDefinition(\ncmis:document\n);\n\nif (type instanceof 
DocumentType) {\n    DocumentType docType = (DocumentType) type;\n    boolean 
isVersionable = docType.isVersionable();\n} else if (type instanceof 
RelationshipType) {\n    RelationshipType relType = (RelationshipType) type;\n} 
else {\n    ...\n}\n\n\n\n\nPortCMIS (C#)\n\n\nIObjectType type = 
session.GetTypeDefinition(\ncmis:document\n);\n\nif (type is IDocumentType) {\n 
   IDocumentType docType = type as IDocumentType;\n    bool isVersionable = 
docType.Versionable;\n} else if (type is IRelationshipType) {\n    
IRelationshipType relType = type as IRelationshipType;\n} else {\n    
...\n}\n\n\n\n\nChecking whether a Specific Type Definition 
Exists\n\n\nOpenCMIS (Java)\n\n\nboolean typeExists = true;\n\ntry {\n    
session.ge
 tTypeDefinition(\nmy:Type\n);\n}\ncatch (CmisObjectNotFoundException e) {\n    
typeExists = false;\n}\n\n\n\n\nPortCMIS (C#)\n\n\nbool typeExists = 
true;\n\ntry {\n    session.GetTypeDefinition(\nmy:Type\n);\n}\ncatch 
(CmisObjectNotFoundException) {\n    typeExists = false;\n}\n\n\n\n\nBrowsing 
Type Definitions\n\n\nCreating, Updating, and Deleting Types\n\n\nCMIS 
1.1\n\n\nSpec 2.1.10\n\n\n\n\nReading and Writing Type Definitions\n\n\nThe 
class \nTypeUtils\n in OpenCMIS provides methods to read and write\ntype 
defintions from XML and JSON. It also offers methods to check whether\na type 
defintion is valid and complete.\n\n\n\n\nCreating a Type\n\n\nOpenCMIS 
(Java)\n\n\nTypeDefinition typeDef = ...\n\nObjectType createdType = 
session.createType(typeDef);\n\n\n\n\nPortCMIS (C#)\n\n\nITypeDefinition 
typeDef = ...\n\nIObjectType createdType = 
session.CreateType(typeDef);\n\n\n\n\nUpdating a Type\n\n\nOpenCMIS 
(Java)\n\n\nTypeDefinition typeDef = ...\n\nObjectType updatedType = session.u
 pdateType(typeDef);\n\n\n\n\nPortCMIS (C#)\n\n\nITypeDefinition typeDef = 
...\n\nIObjectType updatedType = session.UpdateType(typeDef);\n\n\n\n\nDeleting 
a Type\n\n\nA type can only be deleted if no object of that type exists in the 
repository.\n\n\nOpenCMIS 
(Java)\n\n\nsession.deleteType(\nmy:uselessType\n);\n\n\n\n\nPortCMIS 
(C#)\n\n\nsession.DeleteType(\nmy:uselessType\n);", 
+            "title": "Working with Types"
+        }, 
+        {
+            "location": "/samples/types/index.html#working-with-types", 
+            "text": "", 
+            "title": "Working with Types"
+        }, 
+        {
+            "location": "/samples/types/index.html#getting-type-definitions", 
+            "text": "CMIS 1.0  CMIS 1.1  Spec 2.1.3", 
+            "title": "Getting Type Definitions"
+        }, 
+        {
+            "location": 
"/samples/types/index.html#getting-a-specific-type-definition", 
+            "text": "OpenCMIS (Java)  ObjectType type = 
session.getTypeDefinition( cmis:document );\n\nif (type instanceof 
DocumentType) {\n    DocumentType docType = (DocumentType) type;\n    boolean 
isVersionable = docType.isVersionable();\n} else if (type instanceof 
RelationshipType) {\n    RelationshipType relType = (RelationshipType) type;\n} 
else {\n    ...\n}  PortCMIS (C#)  IObjectType type = 
session.GetTypeDefinition( cmis:document );\n\nif (type is IDocumentType) {\n   
 IDocumentType docType = type as IDocumentType;\n    bool isVersionable = 
docType.Versionable;\n} else if (type is IRelationshipType) {\n    
IRelationshipType relType = type as IRelationshipType;\n} else {\n    ...\n}", 
+            "title": "Getting a Specific Type Definition"
+        }, 
+        {
+            "location": 
"/samples/types/index.html#checking-whether-a-specific-type-definition-exists", 
+            "text": "OpenCMIS (Java)  boolean typeExists = true;\n\ntry {\n    
session.getTypeDefinition( my:Type );\n}\ncatch (CmisObjectNotFoundException e) 
{\n    typeExists = false;\n}  PortCMIS (C#)  bool typeExists = true;\n\ntry 
{\n    session.GetTypeDefinition( my:Type );\n}\ncatch 
(CmisObjectNotFoundException) {\n    typeExists = false;\n}", 
+            "title": "Checking whether a Specific Type Definition Exists"
+        }, 
+        {
+            "location": "/samples/types/index.html#browsing-type-definitions", 
+            "text": "", 
+            "title": "Browsing Type Definitions"
+        }, 
+        {
+            "location": 
"/samples/types/index.html#creating-updating-and-deleting-types", 
+            "text": "CMIS 1.1  Spec 2.1.10   Reading and Writing Type 
Definitions  The class  TypeUtils  in OpenCMIS provides methods to read and 
write\ntype defintions from XML and JSON. It also offers methods to check 
whether\na type defintion is valid and complete.", 
+            "title": "Creating, Updating, and Deleting Types"
+        }, 
+        {
+            "location": "/samples/types/index.html#creating-a-type", 
+            "text": "OpenCMIS (Java)  TypeDefinition typeDef = 
...\n\nObjectType createdType = session.createType(typeDef);  PortCMIS (C#)  
ITypeDefinition typeDef = ...\n\nIObjectType createdType = 
session.CreateType(typeDef);", 
+            "title": "Creating a Type"
+        }, 
+        {
+            "location": "/samples/types/index.html#updating-a-type", 
+            "text": "OpenCMIS (Java)  TypeDefinition typeDef = 
...\n\nObjectType updatedType = session.updateType(typeDef);  PortCMIS (C#)  
ITypeDefinition typeDef = ...\n\nIObjectType updatedType = 
session.UpdateType(typeDef);", 
+            "title": "Updating a Type"
+        }, 
+        {
+            "location": "/samples/types/index.html#deleting-a-type", 
+            "text": "A type can only be deleted if no object of that type 
exists in the repository.  OpenCMIS (Java)  session.deleteType( my:uselessType 
);  PortCMIS (C#)  session.DeleteType( my:uselessType );", 
+            "title": "Deleting a Type"
+        }, 
+        {
+            "location": "/samples/exceptions/index.html", 
+            "text": "Exceptions\n\n\nCMIS 1.0\n\n\nCMIS 1.1\n\n\nSpec 
2.2.1.4\n\n\nExceptions are divided into three groups: general exceptions, 
specific exceptions, and implementation exceptions.\n\nGeneral exceptions and 
specific exceptions are defined in the CMIS specification.\nImplementation 
exceptions are exceptions introduced by OpenCMIS and PortCMIS. Those exceptions 
handle connection and authentication problems.\n\n\nGeneral 
Exceptions\n\n\nGeneral exceptions may be returned by a repository in response 
to any CMIS service method call.\n\n\ninvalidArgument\n\n\nOne or more of the 
input parameters is missing or invalid.\n\n\nnotSupported\n\n\nThe CMIS 
operation is not supported by the repository.\n\n\nobjectNotFound\n\n\nThe 
object, or object type, or repository does not exist or the current user has no 
permission to see it.\n\n\npermissionDenied\n\n\nThe user does not have 
sufficient permissions to perform the operation.\n\n\nruntime\n\n\nAny other 
cause not expressible by a
 nother CMIS exception.\n\n\nSpecific Exceptions\n\n\nThe following exceptions 
may be returned by a repository in response to one or more CMIS service 
methods\ncalls.\n\n\nconstraint\n\n\nThe operation violates a repository- or 
object-level constraint defined in the CMIS domain 
model.\n\n\ncontentAlreadyExists\n\n\nThe operation attempts to set the content 
stream for a document that already has a content stream without explicitly 
specifying the \noverwriteFlag\n parameter.\n\n\nfilterNotValid\n\n\nThe 
property filter or rendition filter input to the operation is not 
valid.\n\n\nnameConstraintViolation\n\n\nThe repository is not able to store 
the object that the user is creating/updating due to a name constraint 
violation.\nThere could already be an object with the same name or the name 
contains a character that is not allowed.\n\n\nstorage\n\n\nThe repository is 
not able to store the object that the user is creating/updating due to an 
internal storage problem.\n\n\nstreamNotSupported
 \n\n\nThe operation is attempting to get or set a content stream for a 
document whose object type specifies that a content stream\nis not allowed for 
documents of that type.\n\n\nupdateConflict\n\n\nThe operation is attempting to 
update an object that is no longer current (as determined by the 
repository).\n\n\nversioning\n\n\nThe operation is attempting to perform an 
action on a non-current version of a document that cannot be performed on a 
non-current version.\n\n\nImplementation Exceptions\n\n\nbase\n\n\nThe OpenCMIS 
and PortCMIS exceptions are all derived from the CMIS base exception. If you 
want handle all CMIS exceptions at once, catch the 
\nCmisBaseException\n.\n\n\nconnection\n\n\nThe client could not connect to the 
repository for some reason. Check if you need to configure a proxy 
server.\n\n\nunauthorized\n\n\nUser authentication 
failed.\n\n\nproxyAuthentication\n\n\nProxy authentication 
failed.\n\n\nserviceUnavailable\n\n\nThe server reported that the CMIS service 
is cur
 rently not available.", 
+            "title": "CMIS Exceptions"
+        }, 
+        {
+            "location": "/samples/exceptions/index.html#exceptions", 
+            "text": "CMIS 1.0  CMIS 1.1  Spec 2.2.1.4  Exceptions are divided 
into three groups: general exceptions, specific exceptions, and implementation 
exceptions. \nGeneral exceptions and specific exceptions are defined in the 
CMIS specification.\nImplementation exceptions are exceptions introduced by 
OpenCMIS and PortCMIS. Those exceptions handle connection and authentication 
problems.", 
+            "title": "Exceptions"
+        }, 
+        {
+            "location": "/samples/exceptions/index.html#general-exceptions", 
+            "text": "General exceptions may be returned by a repository in 
response to any CMIS service method call.", 
+            "title": "General Exceptions"
+        }, 
+        {
+            "location": "/samples/exceptions/index.html#invalidargument", 
+            "text": "One or more of the input parameters is missing or 
invalid.", 
+            "title": "invalidArgument"
+        }, 
+        {
+            "location": "/samples/exceptions/index.html#notsupported", 
+            "text": "The CMIS operation is not supported by the repository.", 
+            "title": "notSupported"
+        }, 
+        {
+            "location": "/samples/exceptions/index.html#objectnotfound", 
+            "text": "The object, or object type, or repository does not exist 
or the current user has no permission to see it.", 
+            "title": "objectNotFound"
+        }, 
+        {
+            "location": "/samples/exceptions/index.html#permissiondenied", 
+            "text": "The user does not have sufficient permissions to perform 
the operation.", 
+            "title": "permissionDenied"
+        }, 
+        {
+            "location": "/samples/exceptions/index.html#runtime", 
+            "text": "Any other cause not expressible by another CMIS 
exception.", 
+            "title": "runtime"
+        }, 
+        {
+            "location": "/samples/exceptions/index.html#specific-exceptions", 
+            "text": "The following exceptions may be returned by a repository 
in response to one or more CMIS service methods\ncalls.", 
+            "title": "Specific Exceptions"
+        }, 
+        {
+            "location": "/samples/exceptions/index.html#constraint", 
+            "text": "The operation violates a repository- or object-level 
constraint defined in the CMIS domain model.", 
+            "title": "constraint"
+        }, 
+        {
+            "location": "/samples/exceptions/index.html#contentalreadyexists", 
+            "text": "The operation attempts to set the content stream for a 
document that already has a content stream without explicitly specifying the  
overwriteFlag  parameter.", 
+            "title": "contentAlreadyExists"
+        }, 
+        {
+            "location": "/samples/exceptions/index.html#filternotvalid", 
+            "text": "The property filter or rendition filter input to the 
operation is not valid.", 
+            "title": "filterNotValid"
+        }, 
+        {
+            "location": 
"/samples/exceptions/index.html#nameconstraintviolation", 
+            "text": "The repository is not able to store the object that the 
user is creating/updating due to a name constraint violation.\nThere could 
already be an object with the same name or the name contains a character that 
is not allowed.", 
+            "title": "nameConstraintViolation"
+        }, 
+        {
+            "location": "/samples/exceptions/index.html#storage", 
+            "text": "The repository is not able to store the object that the 
user is creating/updating due to an internal storage problem.", 
+            "title": "storage"
+        }, 
+        {
+            "location": "/samples/exceptions/index.html#streamnotsupported", 
+            "text": "The operation is attempting to get or set a content 
stream for a document whose object type specifies that a content stream\nis not 
allowed for documents of that type.", 
+            "title": "streamNotSupported"
+        }, 
+        {
+            "location": "/samples/exceptions/index.html#updateconflict", 
+            "text": "The operation is attempting to update an object that is 
no longer current (as determined by the repository).", 
+            "title": "updateConflict"
+        }, 
+        {
+            "location": "/samples/exceptions/index.html#versioning", 
+            "text": "The operation is attempting to perform an action on a 
non-current version of a document that cannot be performed on a non-current 
version.", 
+            "title": "versioning"
+        }, 
+        {
+            "location": 
"/samples/exceptions/index.html#implementation-exceptions", 
+            "text": "", 
+            "title": "Implementation Exceptions"
+        }, 
+        {
+            "location": "/samples/exceptions/index.html#base", 
+            "text": "The OpenCMIS and PortCMIS exceptions are all derived from 
the CMIS base exception. If you want handle all CMIS exceptions at once, catch 
the  CmisBaseException .", 
+            "title": "base"
+        }, 
+        {
+            "location": "/samples/exceptions/index.html#connection", 
+            "text": "The client could not connect to the repository for some 
reason. Check if you need to configure a proxy server.", 
+            "title": "connection"
+        }, 
+        {
+            "location": "/samples/exceptions/index.html#unauthorized", 
+            "text": "User authentication failed.", 
+            "title": "unauthorized"
+        }, 
+        {
+            "location": "/samples/exceptions/index.html#proxyauthentication", 
+            "text": "Proxy authentication failed.", 
+            "title": "proxyAuthentication"
+        }, 
+        {
+            "location": "/samples/exceptions/index.html#serviceunavailable", 
+            "text": "The server reported that the CMIS service is currently 
not available.", 
+            "title": "serviceUnavailable"
+        }, 
+        {
+            "location": "/samples/retrieve-objects/index.html", 
+            "text": "Retrieving Objects\n\n\nCMIS 1.0\n\n\nCMIS 
1.1\n\n\nGetting the Root Folder\n\n\nAll repositories have to provide a root 
folder. It\ns the entry point for \nbrowsing\n the repository content. The root 
folder might be completely empty and useless for repositories that only support 
\nunfiled\n objects.\n\n\nOpenCMIS (Java)\n\n\nFolder rootFolder = 
session.getRootFolder();\n\n\n\n\nPortCMIS (C#)\n\n\nIFolder rootFolder = 
Session.GetRootFolder();\n\n\n\n\nGetting Objects by ID\n\n\nAll objects in a 
repository must have a unique object ID and can be retrieved by this ID. If the 
user has no permissions to see the object, an \nobjectNotFound\n exception is 
thrown.\n\n\nUse an \nOperation Context\n to define which details of the object 
should be returned.\n\n\nOpenCMIS (Java)\n\n\nCmisObject cmisObject = 
session.getObject(id);\n\nif (cmisObject instanceof Document) {\n    Document 
document = (Document) cmisObject;\n} else if (cmisObject instanceof Folder) {\n 
   Folder 
 folder = (Folder) cmisDocument;\n} else {\n    ...\n}\n\n\n\n\nPortCMIS 
(C#)\n\n\nICmisObject cmisObject = Session.GetObject(id);\n\nif (cmisObject is 
IDocument) {\n    IDocument document = cmisObject as IDocument;\n} else if 
(cmisObject is IFolder) {\n    IFolder folder = cmisDocument as IFolder;\n} 
else {\n    ...\n}\n\n\n\n\nGetting Objects by Path\n\n\nA \nfiled\n object has 
one or more paths and can be retrieved by this path. If the user has no 
permissions to see the object, an \nobjectNotFound\n exception is 
thrown.\n\n\nMost repositories use the \ncmis:name\n property of the folders 
and the object to assemble the path. But it is possible that the path segments 
don\u2019t match the names.\n\n\nUse an \nOperation Context\n to define which 
details of the object should be returned.\n\n\nOpenCMIS (Java)\n\n\nString path 
= \n/User Homes/customer1/document.odt\n;\nCmisObject cmisObject = 
session.getObjectByPath(path);\n\n// get the object ID\nString id = 
cmisObject.getId();\n\n// we
  know it is a filable object, we just retrieved it by path\nFileableCmisObject 
fileableCmisObject = (FileableCmisObject) cmisObject;\n\n// get all paths, 
there must be at least one\nList\nString\n paths = 
fileableCmisObject.getPaths();\n\n// get all parent folders, there must be at 
least one\nList\nFolder\n parents = 
fileableCmisObject.getParents();\n\n\n\n\nPortCMIS (C#)\n\n\nstring path = 
\n/User Homes/customer1/document.odt\n;\nICmisObject cmisObject = 
Session.GetObjectByPath(path);\n\n// get the object ID\nstring id = 
cmisObject.Id;\n\n// we know it is a filable object, we just retrieved it by 
path\nIFileableCmisObject fileableCmisObject = cmisObject as 
IFileableCmisObject;\n\n// get all paths, there must be at least 
one\nIList\nstring\n paths = fileableCmisObject.Paths;\n\n// get all parent 
folders, there must be at least one\nIList\nIFolder\n parents = 
fileableCmisObject.Parents;\n\n\n\n\nGetting Folder Children\n\n\nThe page 
about \nlists\n explains how paging works.\n\n\nUse
  an \nOperation Context\n to define which details of the objects should be 
returned.\n\n\nOpenCMIS (Java)\n\n\nFolder folder = ...\n\nfor (CmisObject 
child: folder.getChildren()) {\n    
System.out.println(child.getName());\n}\n\n\n\n\nPortCMIS (C#)\n\n\nIFolder 
folder = ...\n\nforeach (ICmisObject child in folder.GetChildren()) {\n    
Console.WriteLine(child.Name);\n}\n\n\n\n\nUnderstanding the Object 
Cache\n\n\nBy default, OpenCMIS and PortCMIS cache objects. That is, the object 
returned by \ngetObject()\n or \ngetObjectbyPath()\n\ncan be stale. There are 
multiple ways to deal with that.\n\n\nRefresh the object data that is returned 
from \ngetObject()\n\n\nOpenCMIS (Java)\n\n\nCmisObject cmisObject = 
session.getObject(id);\ncmisObject.refresh(); // contacts the repository and 
refreshes the object\ncmisObject.refreshIfOld(60 * 1000); // ... or refreshes 
the object only if the data is older than a minute\n\n\n\n\nPortCMIS 
(C#)\n\n\nICmisObject cmisObject = Session.GetObject(id);\ncmi
 sObject.Refresh(); // contacts the repository and refreshes the 
object\ncmisObject.RefreshIfOld(60 * 1000); // ... or refreshes the object only 
if the data is older than a minute\n\n\n\n\nTurn off the session cache 
completely\n\n\nOpenCMIS 
(Java)\n\n\nsession.getDefaultContext().setCacheEnabled(false);\n\n\n\n\nPortCMIS
 (C#)\n\n\nSession.DefaultContext.CacheEnabled = false;\n\n\n\n\nTurn off 
caching for this \ngetObject()\n call\n\n\nSee also the page about the 
\nOperation Context\n.\n\n\nOpenCMIS (Java)\n\n\nOperationContext oc = 
session.createOperationContext();\noc.setCacheEnabled(false);\n\nCmisObject 
cmisObject = session.getObject(id, oc);\n\n\n\n\nPortCMIS 
(C#)\n\n\nIOperationContext oc = 
session.CreateOperationContext();\noc.CacheEnabled = false;\n\nICmisObject 
cmisObject = Session.GetObject(id, oc);\n\n\n\n\nClear the session 
cache\n\n\nThis is not recommended!\n\n\nOpenCMIS 
(Java)\n\n\nsession.clear();\n\n\n\n\nPortCMIS (C#)\n\n\nSession.Clear();", 
+            "title": "Retrieving Objects"
+        }, 
+        {
+            "location": 
"/samples/retrieve-objects/index.html#retrieving-objects", 
+            "text": "CMIS 1.0  CMIS 1.1", 
+            "title": "Retrieving Objects"
+        }, 
+        {
+            "location": 
"/samples/retrieve-objects/index.html#getting-the-root-folder", 
+            "text": "All repositories have to provide a root folder. It s the 
entry point for  browsing  the repository content. The root folder might be 
completely empty and useless for repositories that only support  unfiled  
objects.  OpenCMIS (Java)  Folder rootFolder = session.getRootFolder();  
PortCMIS (C#)  IFolder rootFolder = Session.GetRootFolder();", 
+            "title": "Getting the Root Folder"
+        }, 
+        {
+            "location": 
"/samples/retrieve-objects/index.html#getting-objects-by-id", 
+            "text": "All objects in a repository must have a unique object ID 
and can be retrieved by this ID. If the user has no permissions to see the 
object, an  objectNotFound  exception is thrown.  Use an  Operation Context  to 
define which details of the object should be returned.  OpenCMIS (Java)  
CmisObject cmisObject = session.getObject(id);\n\nif (cmisObject instanceof 
Document) {\n    Document document = (Document) cmisObject;\n} else if 
(cmisObject instanceof Folder) {\n    Folder folder = (Folder) cmisDocument;\n} 
else {\n    ...\n}  PortCMIS (C#)  ICmisObject cmisObject = 
Session.GetObject(id);\n\nif (cmisObject is IDocument) {\n    IDocument 
document = cmisObject as IDocument;\n} else if (cmisObject is IFolder) {\n    
IFolder folder = cmisDocument as IFolder;\n} else {\n    ...\n}", 
+            "title": "Getting Objects by ID"
+        }, 
+        {
+            "location": 
"/samples/retrieve-objects/index.html#getting-objects-by-path", 
+            "text": "A  filed  object has one or more paths and can be 
retrieved by this path. If the user has no permissions to see the object, an  
objectNotFound  exception is thrown.  Most repositories use the  cmis:name  
property of the folders and the object to assemble the path. But it is possible 
that the path segments don\u2019t match the names.  Use an  Operation Context  
to define which details of the object should be returned.  OpenCMIS (Java)  
String path =  /User Homes/customer1/document.odt ;\nCmisObject cmisObject = 
session.getObjectByPath(path);\n\n// get the object ID\nString id = 
cmisObject.getId();\n\n// we know it is a filable object, we just retrieved it 
by path\nFileableCmisObject fileableCmisObject = (FileableCmisObject) 
cmisObject;\n\n// get all paths, there must be at least one\nList String  paths 
= fileableCmisObject.getPaths();\n\n// get all parent folders, there must be at 
least one\nList Folder  parents = fileableCmisObject.getParents();  PortCMIS 
(C#)  
 string path =  /User Homes/customer1/document.odt ;\nICmisObject cmisObject = 
Session.GetObjectByPath(path);\n\n// get the object ID\nstring id = 
cmisObject.Id;\n\n// we know it is a filable object, we just retrieved it by 
path\nIFileableCmisObject fileableCmisObject = cmisObject as 
IFileableCmisObject;\n\n// get all paths, there must be at least one\nIList 
string  paths = fileableCmisObject.Paths;\n\n// get all parent folders, there 
must be at least one\nIList IFolder  parents = fileableCmisObject.Parents;", 
+            "title": "Getting Objects by Path"
+        }, 
+        {
+            "location": 
"/samples/retrieve-objects/index.html#getting-folder-children", 
+            "text": "The page about  lists  explains how paging works.  Use an 
 Operation Context  to define which details of the objects should be returned.  
OpenCMIS (Java)  Folder folder = ...\n\nfor (CmisObject child: 
folder.getChildren()) {\n    System.out.println(child.getName());\n}  PortCMIS 
(C#)  IFolder folder = ...\n\nforeach (ICmisObject child in 
folder.GetChildren()) {\n    Console.WriteLine(child.Name);\n}", 
+            "title": "Getting Folder Children"
+        }, 
+        {
+            "location": 
"/samples/retrieve-objects/index.html#understanding-the-object-cache", 
+            "text": "By default, OpenCMIS and PortCMIS cache objects. That is, 
the object returned by  getObject()  or  getObjectbyPath() \ncan be stale. 
There are multiple ways to deal with that.", 
+            "title": "Understanding the Object Cache"
+        }, 
+        {
+            "location": 
"/samples/retrieve-objects/index.html#refresh-the-object-data-that-is-returned-from-getobject",
 
+            "text": "OpenCMIS (Java)  CmisObject cmisObject = 
session.getObject(id);\ncmisObject.refresh(); // contacts the repository and 
refreshes the object\ncmisObject.refreshIfOld(60 * 1000); // ... or refreshes 
the object only if the data is older than a minute  PortCMIS (C#)  ICmisObject 
cmisObject = Session.GetObject(id);\ncmisObject.Refresh(); // contacts the 
repository and refreshes the object\ncmisObject.RefreshIfOld(60 * 1000); // ... 
or refreshes the object only if the data is older than a minute", 
+            "title": "Refresh the object data that is returned from 
getObject()"
+        }, 
+        {
+            "location": 
"/samples/retrieve-objects/index.html#turn-off-the-session-cache-completely", 
+            "text": "OpenCMIS (Java)  
session.getDefaultContext().setCacheEnabled(false);  PortCMIS (C#)  
Session.DefaultContext.CacheEnabled = false;", 
+            "title": "Turn off the session cache completely"
+        }, 
+        {
+            "location": 
"/samples/retrieve-objects/index.html#turn-off-caching-for-this-getobject-call",
 
+            "text": "See also the page about the  Operation Context .  
OpenCMIS (Java)  OperationContext oc = 
session.createOperationContext();\noc.setCacheEnabled(false);\n\nCmisObject 
cmisObject = session.getObject(id, oc);  PortCMIS (C#)  IOperationContext oc = 
session.CreateOperationContext();\noc.CacheEnabled = false;\n\nICmisObject 
cmisObject = Session.GetObject(id, oc);", 
+            "title": "Turn off caching for this getObject() call"
+        }, 
+        {
+            "location": 
"/samples/retrieve-objects/index.html#clear-the-session-cache", 
+            "text": "This is not recommended!  OpenCMIS (Java)  
session.clear();  PortCMIS (C#)  Session.Clear();", 
+            "title": "Clear the session cache"
+        }, 
+        {
+            "location": "/samples/create-objects/index.html", 
+            "text": "Creating Objects\n\n\nTo create an object a client has to 
provide a least the two properties \ncmis:name\n and 
\ncmis:objectTypeId\n.\n\n\ncmis:name\n sets the name of the object and 
\ncmis:objectTypeId\n sets its object type.\n\nDepending on the object type, 
more properties can be set or must be set. See also the page about 
\nproperties\n.\n\n\nCreating a Folder\n\n\nCMIS 1.0\n\n\nCMIS 1.1\n\n\nSpec 
2.1.5\n\n\nA folder is always a \nfiled\n object. That is, you always need a 
parent folder.\n\n\nOpenCMIS (Java)\n\n\nFolder parent = ....\n\n// prepare 
properties\nMap\nString, Object\n properties = new HashMap\nString, 
Object\n();\nproperties.put(PropertyIds.NAME, \na new 
folder\n);\nproperties.put(PropertyIds.OBJECT_TYPE_ID, \ncmis:folder\n);\n\n// 
create the folder\nFolder newFolder = 
parent.createFolder(properties);\n\n\n\n\nPortCMIS (C#)\n\n\nIFolder parent = 
....\n\n// prepare properties\nIDictionary\nstring, object\n properties = new 
Dictionary\nstring, obje
 ct\n();\nproperties[PropertyIds.Name] = \na new 
folder\n;\nproperties[PropertyIds.ObjectTypeId] = \ncmis:folder\n;\n\n// create 
the folder\nIFolder newFolder = 
parent.CreateFolder(properties);\n\n\n\n\nCreating a Document\n\n\nCMIS 
1.0\n\n\nCMIS 1.1\n\n\nSpec 2.1.4\n\n\nDocuments can be \nfiled\n and 
\nunfiled\n. The following samples show how to create a \nfiled\n document. Use 
the session object to create an \nunfiled\n document.\n\n\nSee also the \npage 
about content\n how to work with content streams.\n\n\nOpenCMIS 
(Java)\n\n\nFolder parent = ....\n\nString textFileName = \ntest.txt\n;\n\n// 
prepare content - a simple text file\nString content = \nHello 
World!\n;\n\nString filename = textFileName;\nString mimetype = \ntext/plain; 
charset=UTF-8\n;\n\nbyte[] contentBytes = 
content.getBytes(\nUTF-8\n);\nByteArrayInputStream stream = new 
ByteArrayInputStream(contentBytes);\n\nContentStream contentStream = 
session.getObjectFactory().createContentStream(filename, contentBytes.length, 
 mimetype, stream);\n\n// prepare properties\nMap\nString, Object\n properties 
= new HashMap\nString, Object\n();\nproperties.put(PropertyIds.NAME, 
textFileName);\nproperties.put(PropertyIds.OBJECT_TYPE_ID, 
\ncmis:document\n);\n\n// create the document\nDocument newDoc = 
parent.createDocument(properties, contentStream, 
VersioningState.NONE);\n\n\n\n\nPortCMIS (C#)\n\n\nIFolder parent = 
....\n\nstring textFileName = \ntest.txt\n;\n\n// prepare content - a simple 
text file\nstring content = \nHello World!\n;\n\nstring filename = 
textFileName;\nstring mimetype = \ntext/plain; charset=UTF-8\n;\n\nbyte[] 
contentBytes = Encoding.UTF8.GetBytes(content);\nStream stream = new 
MemoryStream(contentBytes);\n\nIContentStream contentStream = 
session.ObjectFactory.CreateContentStream(filename, contentBytes.length, 
mimetype, stream);\n\n// prepare properties\nIDictionary\nstring, object\n 
properties = new Dictionary\nstring, object\n();\nproperties[PropertyIds.Name] 
= textFileName;\nproperties[Prope
 rtyIds.ObjectTypeId] = \ncmis:document\n;\n\n// create the document\nIDocument 
newDoc = parent.CreateDocument(properties, contentStream, 
VersioningState.None);\n\n\n\n\nCreating a Documet from Source (Copy 
Content)\n\n\nOpenCMIS (Java)\n\n\nFolder folder = ...\nDocument doc = 
...\n\ndoc.copy(folder); // create a copy of the document in this 
folder\n\n\n\n\nPortCMIS (C#)\n\n\nIFolder folder = ...\nIDocument doc = 
...\n\ndoc.Copy(folder); // create a copy of the document in this 
folder\n\n\n\n\nCreating a Relationship\n\n\nCMIS 1.0\n\n\nCMIS 1.1\n\n\nSpec 
2.1.6\n\n\nRelationships are always \nunfiled\n objects. The ID of the source 
object and the ID of the target object must be provided.\nSee the \npage about 
types\n how to discover relationship types and their properties.\n\n\nOpenCMIS 
(Java)\n\n\nString sourceId = ...\nString targetId = ...\n\nMap\nString, 
Object\n properties = new HashMap\nString, 
Object\n();\nproperties.put(PropertyIds.NAME, \na new 
relationship\n);\nproperties.pu
 t(PropertyIds.OBJECT_TYPE_ID, 
\nmy:relationsip\n);\nproperties.put(PropertyIds.SOURCE_ID, 
sourceId);\nproperties.put(PropertyIds.TARGET_ID, targetId);\n\nObjectId 
newRelId = session.createRelationship(properties);\n\n\n\n\nPortCMIS 
(C#)\n\n\nstring sourceId = ...\nstring targetId = ...\n\nIDictionary\nstring, 
object\n properties = new Dictionary\nstring, 
object\n();\nproperties[PropertyIds.Name] = \na new 
relationship\n;\nproperties[PropertyIds.ObjectTypeId] = 
\nmy:relationsip\n;\nproperties[PropertyIds.SourceId] = 
sourceId;\nproperties[PropertyIds.TargetId] = targetId;\n\nIObjectId newRelId = 
session.CreateRelationship(properties);\n\n\n\n\nCreating a Policy\n\n\nCMIS 
1.0\n\n\nCMIS 1.1\n\n\nSpec 2.1.7\n\n\nPolicies can be \nfiled\n and 
\nunfiled\n. The following samples show how to create a \nfiled\n policy. Use 
the session object to create an \nunfiled\n policy.\n\n\nIn most cases it 
doesn\nt make sense to create an policies of the type \ncmis:policy\n because 
it has no semantics.
  Usually, the repository provides specific policy types with or without 
additional properties. See the \npage about types\n how to discover policy 
types and their properties.\n\n\nOpenCMIS (Java)\n\n\nFolder parent = 
....\n\n// prepare properties\nMap\nString, Object\n properties = new 
HashMap\nString, Object\n();\nproperties.put(PropertyIds.NAME, \na new 
policy\n);\nproperties.put(PropertyIds.OBJECT_TYPE_ID, 
\nmy:policy\n);\nproperties.put(PropertyIds.POLICY_TEXT, \nmy policy 
description\n);\n\n// create the policy\nPolicy newPolicy = 
parent.createPolicy(properties);\n\n\n\n\nPortCMIS (C#)\n\n\nIFolder parent = 
....\n\n// prepare properties\nIDictionary\nstring, object\n properties = new 
Dictionary\nstring, object\n();\nproperties[PropertyIds.Name] = \na new 
policy\n;\nproperties[PropertyIds.ObjectTypeId] = 
\nmy:policy\n;\nproperties[PropertyIds.PolicyText] = \nmy policy 
description\n;\n\n// create the policy\nIPolicy newPolicy = 
parent.CreatePolicy(properties);\n\n\n\n\nCreating a
 n Item\n\n\nCMIS 1.1\n\n\nSpec 2.1.8\n\n\nItems can be \nfiled\n and 
\nunfiled\n. The following samples show how to create a \nfiled\n item. Use the 
session object to create an \nunfiled\n item.\n\n\nIn most cases it doesn\nt 
make sense to create an item of the type \ncmis:item\n. Usually, the repository 
provides specific item types with or without additional properties. See the 
\npage about types\n how to discover item types and their 
properties.\n\n\nOpenCMIS (Java)\n\n\nFolder parent = ....\n\n// prepare 
properties\nMap\nString, Object\n properties = new HashMap\nString, 
Object\n();\nproperties.put(PropertyIds.NAME, \na new 
item\n);\nproperties.put(PropertyIds.OBJECT_TYPE_ID, \nmy:item\n);\n\n// create 
the item\nItem newItem = parent.createItem(properties);\n\n\n\n\nPortCMIS 
(C#)\n\n\nIFolder parent = ....\n\n// prepare properties\nIDictionary\nstring, 
object\n properties = new Dictionary\nstring, 
object\n();\nproperties[PropertyIds.Name] = \na new 
item\n;\nproperties[PropertyIds
 .ObjectTypeId] = \ncmis:item\n;\n\n// create the item\nIItem newItem = 
parent.CreateItem(properties);\n\n\n\n\nCreating object with a Folder Object vs 
Creating object with the Session Object\n\n\nOpenCMIS and PortCMIS provide two 
ways to create objects.\nThe code samples above create objects in a folder. It 
is also possible to create an object with the session object\nand without 
getting the parent folder first.\n\n\nOpenCMIS (Java)\n\n\nMap\nString, 
Object\n properties = new HashMap\nString, 
Object\n();\nproperties.put(PropertyIds.OBJECT_TYPE_ID, 
\ncmis:folder\n);\nproperties.put(PropertyIds.NAME, \na new 
folder\n);\n\nObjectId newFolderId = session.createFolder(properties, 
parentId);\n\n\n\n\nBoth approaches have advantages and 
disadvantages.\n\n\nCreating an object with a folder object is more convenient. 
The create methods return the newly created object.\n\n\nCreating an object 
with the session object is faster because it only needs one round-trip to the 
server. But it only ret
 urns the ID of the newly created object.\n\n\nUnfiled objects can only be 
created with the session object.", 
+            "title": "Creating Objects"
+        }, 
+        {
+            "location": "/samples/create-objects/index.html#creating-objects", 
+            "text": "To create an object a client has to provide a least the 
two properties  cmis:name  and  cmis:objectTypeId .  cmis:name  sets the name 
of the object and  cmis:objectTypeId  sets its object type. \nDepending on the 
object type, more properties can be set or must be set. See also the page about 
 properties .", 
+            "title": "Creating Objects"
+        }, 
+        {
+            "location": 
"/samples/create-objects/index.html#creating-a-folder", 
+            "text": "CMIS 1.0  CMIS 1.1  Spec 2.1.5  A folder is always a  
filed  object. That is, you always need a parent folder.  OpenCMIS (Java)  
Folder parent = ....\n\n// prepare properties\nMap String, Object  properties = 
new HashMap String, Object ();\nproperties.put(PropertyIds.NAME,  a new folder 
);\nproperties.put(PropertyIds.OBJECT_TYPE_ID,  cmis:folder );\n\n// create the 
folder\nFolder newFolder = parent.createFolder(properties);  PortCMIS (C#)  
IFolder parent = ....\n\n// prepare properties\nIDictionary string, object  
properties = new Dictionary string, object ();\nproperties[PropertyIds.Name] =  
a new folder ;\nproperties[PropertyIds.ObjectTypeId] =  cmis:folder ;\n\n// 
create the folder\nIFolder newFolder = parent.CreateFolder(properties);", 
+            "title": "Creating a Folder"
+        }, 
+        {
+            "location": 
"/samples/create-objects/index.html#creating-a-document", 
+            "text": "CMIS 1.0  CMIS 1.1  Spec 2.1.4  Documents can be  filed  
and  unfiled . The following samples show how to create a  filed  document. Use 
the session object to create an  unfiled  document.  See also the  page about 
content  how to work with content streams.  OpenCMIS (Java)  Folder parent = 
....\n\nString textFileName =  test.txt ;\n\n// prepare content - a simple text 
file\nString content =  Hello World! ;\n\nString filename = 
textFileName;\nString mimetype =  text/plain; charset=UTF-8 ;\n\nbyte[] 
contentBytes = content.getBytes( UTF-8 );\nByteArrayInputStream stream = new 
ByteArrayInputStream(contentBytes);\n\nContentStream contentStream = 
session.getObjectFactory().createContentStream(filename, contentBytes.length, 
mimetype, stream);\n\n// prepare properties\nMap String, Object  properties = 
new HashMap String, Object ();\nproperties.put(PropertyIds.NAME, 
textFileName);\nproperties.put(PropertyIds.OBJECT_TYPE_ID,  cmis:document 
);\n\n// create the document\nD
 ocument newDoc = parent.createDocument(properties, contentStream, 
VersioningState.NONE);  PortCMIS (C#)  IFolder parent = ....\n\nstring 
textFileName =  test.txt ;\n\n// prepare content - a simple text file\nstring 
content =  Hello World! ;\n\nstring filename = textFileName;\nstring mimetype = 
 text/plain; charset=UTF-8 ;\n\nbyte[] contentBytes = 
Encoding.UTF8.GetBytes(content);\nStream stream = new 
MemoryStream(contentBytes);\n\nIContentStream contentStream = 
session.ObjectFactory.CreateContentStream(filename, contentBytes.length, 
mimetype, stream);\n\n// prepare properties\nIDictionary string, object  
properties = new Dictionary string, object ();\nproperties[PropertyIds.Name] = 
textFileName;\nproperties[PropertyIds.ObjectTypeId] =  cmis:document ;\n\n// 
create the document\nIDocument newDoc = parent.CreateDocument(properties, 
contentStream, VersioningState.None);", 
+            "title": "Creating a Document"
+        }, 
+        {
+            "location": 
"/samples/create-objects/index.html#creating-a-documet-from-source-copy-content",
 
+            "text": "OpenCMIS (Java)  Folder folder = ...\nDocument doc = 
...\n\ndoc.copy(folder); // create a copy of the document in this folder  
PortCMIS (C#)  IFolder folder = ...\nIDocument doc = ...\n\ndoc.Copy(folder); 
// create a copy of the document in this folder", 
+            "title": "Creating a Documet from Source (Copy Content)"
+        }, 
+        {
+            "location": 
"/samples/create-objects/index.html#creating-a-relationship", 
+            "text": "CMIS 1.0  CMIS 1.1  Spec 2.1.6  Relationships are always  
unfiled  objects. The ID of the source object and the ID of the target object 
must be provided.\nSee the  page about types  how to discover relationship 
types and their properties.  OpenCMIS (Java)  String sourceId = ...\nString 
targetId = ...\n\nMap String, Object  properties = new HashMap String, Object 
();\nproperties.put(PropertyIds.NAME,  a new relationship 
);\nproperties.put(PropertyIds.OBJECT_TYPE_ID,  my:relationsip 
);\nproperties.put(PropertyIds.SOURCE_ID, 
sourceId);\nproperties.put(PropertyIds.TARGET_ID, targetId);\n\nObjectId 
newRelId = session.createRelationship(properties);  PortCMIS (C#)  string 
sourceId = ...\nstring targetId = ...\n\nIDictionary string, object  properties 
= new Dictionary string, object ();\nproperties[PropertyIds.Name] =  a new 
relationship ;\nproperties[PropertyIds.ObjectTypeId] =  my:relationsip 
;\nproperties[PropertyIds.SourceId] = sourceId;\nproperties[PropertyIds.Tar
 getId] = targetId;\n\nIObjectId newRelId = 
session.CreateRelationship(properties);", 
+            "title": "Creating a Relationship"
+        }, 
+        {
+            "location": 
"/samples/create-objects/index.html#creating-a-policy", 
+            "text": "CMIS 1.0  CMIS 1.1  Spec 2.1.7  Policies can be  filed  
and  unfiled . The following samples show how to create a  filed  policy. Use 
the session object to create an  unfiled  policy.  In most cases it doesn t 
make sense to create an policies of the type  cmis:policy  because it has no 
semantics. Usually, the repository provides specific policy types with or 
without additional properties. See the  page about types  how to discover 
policy types and their properties.  OpenCMIS (Java)  Folder parent = ....\n\n// 
prepare properties\nMap String, Object  properties = new HashMap String, Object 
();\nproperties.put(PropertyIds.NAME,  a new policy 
);\nproperties.put(PropertyIds.OBJECT_TYPE_ID,  my:policy 
);\nproperties.put(PropertyIds.POLICY_TEXT,  my policy description );\n\n// 
create the policy\nPolicy newPolicy = parent.createPolicy(properties);  
PortCMIS (C#)  IFolder parent = ....\n\n// prepare properties\nIDictionary 
string, object  properties = new Dictionary stri
 ng, object ();\nproperties[PropertyIds.Name] =  a new policy 
;\nproperties[PropertyIds.ObjectTypeId] =  my:policy 
;\nproperties[PropertyIds.PolicyText] =  my policy description ;\n\n// create 
the policy\nIPolicy newPolicy = parent.CreatePolicy(properties);", 
+            "title": "Creating a Policy"
+        }, 
+        {
+            "location": "/samples/create-objects/index.html#creating-an-item", 
+            "text": "CMIS 1.1  Spec 2.1.8  Items can be  filed  and  unfiled . 
The following samples show how to create a  filed  item. Use the session object 
to create an  unfiled  item.  In most cases it doesn t make sense to create an 
item of the type  cmis:item . Usually, the repository provides specific item 
types with or without additional properties. See the  page about types  how to 
discover item types and their properties.  OpenCMIS (Java)  Folder parent = 
....\n\n// prepare properties\nMap String, Object  properties = new HashMap 
String, Object ();\nproperties.put(PropertyIds.NAME,  a new item 
);\nproperties.put(PropertyIds.OBJECT_TYPE_ID,  my:item );\n\n// create the 
item\nItem newItem = parent.createItem(properties);  PortCMIS (C#)  IFolder 
parent = ....\n\n// prepare properties\nIDictionary string, object  properties 
= new Dictionary string, object ();\nproperties[PropertyIds.Name] =  a new item 
;\nproperties[PropertyIds.ObjectTypeId] =  cmis:item ;\n\n// create the ite
 m\nIItem newItem = parent.CreateItem(properties);", 
+            "title": "Creating an Item"
+        }, 
+        {
+            "location": 
"/samples/create-objects/index.html#creating-object-with-a-folder-object-vs-creating-object-with-the-session-object",
 
+            "text": "OpenCMIS and PortCMIS provide two ways to create 
objects.\nThe code samples above create objects in a folder. It is also 
possible to create an object with the session object\nand without getting the 
parent folder first.  OpenCMIS (Java)  Map String, Object  properties = new 
HashMap String, Object ();\nproperties.put(PropertyIds.OBJECT_TYPE_ID,  
cmis:folder );\nproperties.put(PropertyIds.NAME,  a new folder );\n\nObjectId 
newFolderId = session.createFolder(properties, parentId);  Both approaches have 
advantages and disadvantages.  Creating an object with a folder object is more 
convenient. The create methods return the newly created object.  Creating an 
object with the session object is faster because it only needs one round-trip 
to the server. But it only returns the ID of the newly created object.  Unfiled 
objects can only be created with the session object.", 
+            "title": "Creating object with a Folder Object vs Creating object 
with the Session Object"
+        }, 
+        {
+            "location": "/samples/update-objects/index.html", 
+            "text": "Updating Objects\n\n\nUpdating Properties\n\n\nCMIS 
1.0\n\n\nCMIS 1.1\n\n\nThe page about \nproperties\n explains how Java and C# 
data types are map to CMIS data types.\n\n\nOpenCMIS (Java)\n\n\nCmisObject 
cmisObject = ...\n\nMap\nString, Object\n properties = new HashMap\nString, 
Object\n();\n\nproperties.put(\nmy:property\n, \nnew value\n); // single-value 
property\nproperties.put(\nmy:int.property\n, 
42);\nproperties.put(\nmy:date.property\n, new 
GregorianCalendar());\nproperties.put(\nmy:bool.property\n, 
true);\n\nList\nString\n shoppingList = new 
ArrayList\nString\n();\nshoppingList.add(\nmilk\n);\nshoppingList.add(\nbread\n);\nshoppingList.add(\ncheese\n);\nproperties.put(\nmy:shopping.list\n,
 shoppingList); // multi-value 
property\n\ncmisObject.updateProperties(properties);\n\n\n\n\nPortCMIS 
(C#)\n\n\nICmisObject cmisObject = ...\n\nIDictonary\nstring, object\n 
properties = new Dictonary\nstring, 
object\n();\n\nproperties.Add(\nmy:property\n, \nnew value\
 n); // single-value property\nproperties.Add(\nmy:int.property\n, 
42);\nproperties.Add(\nmy:date.property\n, 
DateTime.Now);\nproperties.Add(\nmy:bool.property\n, true);\n\nIList\nstring\n 
shoppingList = new 
List\nstring\n();\nshoppingList.Add(\nmilk\n);\nshoppingList.Add(\nbread\n);\nshoppingList.Add(\ncheese\n);\nproperties.Add(\nmy:shopping.list\n,
 shoppingList); // multi-value 
property\n\ncmisObject.UpdateProperties(properties);\n\n\n\n\nRenaming an 
Object\n\n\nIf you just want to change the \ncmis:name\n property, there is a 
shortcut.\n\n\nOpenCMIS (Java)\n\n\nCmisObject cmisObject = 
....\ncmisObject.rename(\nnew name\n);\n\n\n\n\nPortCMIS (C#)\n\n\nICmisObject 
cmisObject = ....\ncmisObject.Rename(\nnew name\n);\n\n\n\n\nBulk 
Update\n\n\nCMIS 1.1\n\n\nOpenCMIS (Java)\n\n\n// collect all objects to be 
updated\nList\nCmisObject\n objectList = new 
ArrayList\nCmisObject\n();\nobjectList.add(doc1);\nobjectList.add(doc2);\nobjectList.add(doc3);\n\n//
 prepare properties\nMap\nString, O
 bject\n properties = new HashMap\nString, 
Object\n();\nproperties.put(\nmy:project\n, 
\n123456\n);\nproperties.put(\nmy:priority\n, 
10);\n\nList\nBulkUpdateObjectIdAndChangeToken\n updatedIds = 
session.bulkUpdateProperties(objectList, properties, null, 
null);\n\n\n\n\nUpdating Content\n\n\nSee \nWorking with Content\n.", 
+            "title": "Updating Objects"
+        }, 
+        {
+            "location": "/samples/update-objects/index.html#updating-objects", 
+            "text": "", 
+            "title": "Updating Objects"
+        }, 
+        {
+            "location": 
"/samples/update-objects/index.html#updating-properties", 
+            "text": "CMIS 1.0  CMIS 1.1  The page about  properties  explains 
how Java and C# data types are map to CMIS data types.  OpenCMIS (Java)  
CmisObject cmisObject = ...\n\nMap String, Object  properties = new HashMap 
String, Object ();\n\nproperties.put( my:property ,  new value ); // 
single-value property\nproperties.put( my:int.property , 42);\nproperties.put( 
my:date.property , new GregorianCalendar());\nproperties.put( my:bool.property 
, true);\n\nList String  shoppingList = new ArrayList String 
();\nshoppingList.add( milk );\nshoppingList.add( bread );\nshoppingList.add( 
cheese );\nproperties.put( my:shopping.list , shoppingList); // multi-value 
property\n\ncmisObject.updateProperties(properties);  PortCMIS (C#)  
ICmisObject cmisObject = ...\n\nIDictonary string, object  properties = new 
Dictonary string, object ();\n\nproperties.Add( my:property ,  new value ); // 
single-value property\nproperties.Add( my:int.property , 42);\nproperties.Add( 
my:date.property , DateTi
 me.Now);\nproperties.Add( my:bool.property , true);\n\nIList string  
shoppingList = new List string ();\nshoppingList.Add( milk 
);\nshoppingList.Add( bread );\nshoppingList.Add( cheese );\nproperties.Add( 
my:shopping.list , shoppingList); // multi-value 
property\n\ncmisObject.UpdateProperties(properties);", 
+            "title": "Updating Properties"
+        }, 
+        {
+            "location": 
"/samples/update-objects/index.html#renaming-an-object", 
+            "text": "If you just want to change the  cmis:name  property, 
there is a shortcut.  OpenCMIS (Java)  CmisObject cmisObject = 
....\ncmisObject.rename( new name );  PortCMIS (C#)  ICmisObject cmisObject = 
....\ncmisObject.Rename( new name );", 
+            "title": "Renaming an Object"
+        }, 
+        {
+            "location": "/samples/update-objects/index.html#bulk-update", 
+            "text": "CMIS 1.1  OpenCMIS (Java)  // collect all objects to be 
updated\nList CmisObject  objectList = new ArrayList CmisObject 
();\nobjectList.add(doc1);\nobjectList.add(doc2);\nobjectList.add(doc3);\n\n// 
prepare properties\nMap String, Object  properties = new HashMap String, Object 
();\nproperties.put( my:project ,  123456 );\nproperties.put( my:priority , 
10);\n\nList BulkUpdateObjectIdAndChangeToken  updatedIds = 
session.bulkUpdateProperties(objectList, properties, null, null);", 
+            "title": "Bulk Update"
+        }, 
+        {
+            "location": "/samples/update-objects/index.html#updating-content", 
+            "text": "See  Working with Content .", 
+            "title": "Updating Content"
+        }, 
+        {
+            "location": "/samples/move-objects/index.html", 
+            "text": "Moving Objects\n\n\nCMIS 1.0\n\n\nCMIS 1.1\n\n\nMoving 
Between Folders\n\n\nOpenCMIS (Java)\n\n\nFolder sourceFolder = ...\nFolder 
targetFolder = ...\nDocument doc = ...\n\ndoc.move(sourceFolder, 
targetFolder);\n\n\n\n\nPortCMIS (C#)\n\n\nIFolder sourceFolder = ...\nIFolder 
targetFolder = ...\nIDocument doc = ...\n\ndoc.Move(sourceFolder, 
targetFolder);\n\n\n\n\nAdding and Removing from Folder\n\n\nAdding to 
Folder\n\n\nOpenCMIS (Java)\n\n\nFolder folder = ...\nDocument doc = 
...\n\ndoc.addToFolder(folder, true); // add all versions to 
folder\n\n\n\n\nPortCMIS (C#)\n\n\nIFolder folder = ...\nIDocument doc = 
...\n\ndoc.AddToFolder(folder, true); // add all versions to 
folder\n\n\n\n\nRemoving from Folder\n\n\nOpenCMIS (Java)\n\n\nFolder folder = 
...\nDocument doc = ...\n\ndoc.removeFromFolder(folder);\n\n\n\n\nPortCMIS 
(C#)\n\n\nIFolder folder = ...\nIDocument doc = 
...\n\ndoc.RemoveFromFolder(folder);", 
+            "title": "Moving Object"
+        }, 
+        {
+            "location": "/samples/move-objects/index.html#moving-objects", 
+            "text": "CMIS 1.0  CMIS 1.1", 
+            "title": "Moving Objects"
+        }, 
+        {
+            "location": 
"/samples/move-objects/index.html#moving-between-folders", 
+            "text": "OpenCMIS (Java)  Folder sourceFolder = ...\nFolder 
targetFolder = ...\nDocument doc = ...\n\ndoc.move(sourceFolder, targetFolder); 
 PortCMIS (C#)  IFolder sourceFolder = ...\nIFolder targetFolder = 
...\nIDocument doc = ...\n\ndoc.Move(sourceFolder, targetFolder);", 
+            "title": "Moving Between Folders"
+        }, 
+        {
+            "location": 
"/samples/move-objects/index.html#adding-and-removing-from-folder", 
+            "text": "", 
+            "title": "Adding and Removing from Folder"
+        }, 
+        {
+            "location": "/samples/move-objects/index.html#adding-to-folder", 
+            "text": "OpenCMIS (Java)  Folder folder = ...\nDocument doc = 
...\n\ndoc.addToFolder(folder, true); // add all versions to folder  PortCMIS 
(C#)  IFolder folder = ...\nIDocument doc = ...\n\ndoc.AddToFolder(folder, 
true); // add all versions to folder", 
+            "title": "Adding to Folder"
+        }, 
+        {
+            "location": 
"/samples/move-objects/index.html#removing-from-folder", 
+            "text": "OpenCMIS (Java)  Folder folder = ...\nDocument doc = 
...\n\ndoc.removeFromFolder(folder);  PortCMIS (C#)  IFolder folder = 
...\nIDocument doc = ...\n\ndoc.RemoveFromFolder(folder);", 
+            "title": "Removing from Folder"
+        }, 
+        {
+            "location": "/samples/delete-objects/index.html", 
+            "text": "Deleting Objects\n\n\n\n\nAllowable Actions\n\n\nBefore 
you delete an object, check the \nAllowable Actions\n to determine if 
the\ncurrent user is allowed to delete the object.\n\n\n\n\nDeleting 
Objects\n\n\nThe following snippet deletes an object.\nIf the object is a 
document, all versions of the document are deleted.\nIf the object is a folder 
and it is not empty, a \nconstraint\n exception is thrown.\n\n\nOpenCMIS 
(Java)\n\n\nCmisObject cmisObject = ...\ncmisObject.delete();\n\n\n\n\nPortCMIS 
(C#)\n\n\nICmisObject cmisObject = ...\ncmisObject.Delete();\n\n\n\n\nDeleting 
Documents and Versions\n\n\nIf a document is versioned, the whole version 
series can be deleted or just a single version. This is controlled with the 
\nallVersions\n parameter.\n\n\nFor documents that are not versioned it 
doesn\nt matter if the \nallVersions\n parameter is set to \ntrue\n or 
\nfalse\n.\n\n\nDeleting a Document and All Versions\n\n\nTo delete a whole 
version series, set the \na
 llVersions\n to \ntrue\n.\n\n\nOpenCMIS (Java)\n\n\nDocument document = 
...\ndocument.delete(true); // allVersions = true\n\n\n\n\nPortCMIS 
(C#)\n\n\nIDocument document = ...\ndocument.Delete(true); // allVersions = 
true\n\n\n\n\nDeleting a Single Version\n\n\nTo delete one version with a 
version series, set the \nallVersions\n to \nfalse\n.\n\n\nOpenCMIS 
(Java)\n\n\nDocument document = ...\ndocument.delete(false); // allVersions = 
false\n\n\n\n\nPortCMIS (C#)\n\n\nIDocument document = 
...\ndocument.Delete(false); // allVersions = false\n\n\n\n\nDeleting a Folder 
Hierarchy\n\n\nOpenCMIS (Java)\n\n\nFolder folder = 
...\nfolder.deleteTree(true, UnfileObject.DELETE, true);\n\n\n\n\nPortCMIS 
(C#)\n\n\nIFolder folder = ...\nfolder.DeleteTree(true, UnfileObject.Delete, 
true);", 
+            "title": "Deleting Objects"
+        }, 
+        {
+            "location": "/samples/delete-objects/index.html#deleting-objects", 
+            "text": "Allowable Actions  Before you delete an object, check the 
 Allowable Actions  to determine if the\ncurrent user is allowed to delete the 
object.", 
+            "title": "Deleting Objects"
+        }, 
+        {
+            "location": 
"/samples/delete-objects/index.html#deleting-objects_1", 
+            "text": "The following snippet deletes an object.\nIf the object 
is a document, all versions of the document are deleted.\nIf the object is a 
folder and it is not empty, a  constraint  exception is thrown.  OpenCMIS 
(Java)  CmisObject cmisObject = ...\ncmisObject.delete();  PortCMIS (C#)  
ICmisObject cmisObject = ...\ncmisObject.Delete();", 
+            "title": "Deleting Objects"
+        }, 
+        {
+            "location": 
"/samples/delete-objects/index.html#deleting-documents-and-versions", 
+            "text": "If a document is versioned, the whole version series can 
be deleted or just a single version. This is controlled with the  allVersions  
parameter.  For documents that are not versioned it doesn t matter if the  
allVersions  parameter is set to  true  or  false .", 
+            "title": "Deleting Documents and Versions"
+        }, 
+        {
+            "location": 
"/samples/delete-objects/index.html#deleting-a-document-and-all-versions", 
+            "text": "To delete a whole version series, set the  allVersions  
to  true .  OpenCMIS (Java)  Document document = ...\ndocument.delete(true); // 
allVersions = true  PortCMIS (C#)  IDocument document = 
...\ndocument.Delete(true); // allVersions = true", 
+            "title": "Deleting a Document and All Versions"
+        }, 
+        {
+            "location": 
"/samples/delete-objects/index.html#deleting-a-single-version", 
+            "text": "To delete one version with a version series, set the  
allVersions  to  false .  OpenCMIS (Java)  Document document = 
...\ndocument.delete(false); // allVersions = false  PortCMIS (C#)  IDocument 
document = ...\ndocument.Delete(false); // allVersions = false", 
+            "title": "Deleting a Single Version"
+        }, 
+        {
+            "location": 
"/samples/delete-objects/index.html#deleting-a-folder-hierarchy", 
+            "text": "OpenCMIS (Java)  Folder folder = 
...\nfolder.deleteTree(true, UnfileObject.DELETE, true);  PortCMIS (C#)  
IFolder folder = ...\nfolder.DeleteTree(true, UnfileObject.Delete, true);", 
+            "title": "Deleting a Folder Hierarchy"
+        }, 
+        {
+            "location": "/samples/content/index.html", 
+            "text": "Working with Content\n\n\nCMIS 1.0\n\n\nCMIS 
1.1\n\n\nSpec 2.1.4.2\n\n\nContent Streams\n\n\nContent Stream objects are used 
to send and fetch content. They contain a file name, a \nMIME type\n, the 
stream length, and the stream.\n\n\nIn some cases, the stream length is unknown 
(\nnull\n). OpenCMIS and PortCMIS don\u2019t rely on it and your application 
shouldn\nt either. \n\n\nYou can create content stream objects manually or 
implement the interface yourself, but OpenCMIS and PortCMIS provide some 
convenience methods for this.\n\n\nOpenCMIS (Java)\n\n\n// create a simple 
ContentStream object\nContentStream cs1 = 
session.getObjectFactory().createContentStream(filename, length, mimeType, 
stream);\n\n// create a ContentStream object from a byte array\nContentStream 
cs2 = ContentStreamUtils.createByteArrayContentStream(filename, bytes, 
mimeType);\n\n// create a ContentStream object from a string\nContentStream cs3 
= ContentStreamUtils.createTextContentStream(filena
 me, content);\n\n// create a ContentStream object from file\nContentStream cs4 
= ContentStreamUtils.createFileContentStream(file);\n\n\n\n\nPortCMIS 
(C#)\n\n\n// create a simple IContentStream object\nIContentStream cs1 = 
Session.ObjectFactory.CreateContentStream(filename, length, mimeType, 
stream);\n\n// create a IContentStream object from a byte array\nIContentStream 
cs2 = ContentStreamUtils.CreateByteArrayContentStream(filename, bytes, 
mimeType);\n\n// create a IContentStream object from a string\nIContentStream 
cs3 = ContentStreamUtils.CreateTextContentStream(filename, 
content);\n\n\n\n\nMIME Types\n\n\nWhen you create a new document or update the 
content of a document, you have to provide a MIME type.\nIf you don\nt know the 
MIME type, use \napplication/octet-stream\n.\n\n\nOpenCMIS can guess the MIME 
type based on the file extension.\nIf you need a more thorough MIME type 
detection, have a look at \nApache Tika\n.\n\n\nOpenCMIS (Java)\n\n\nString 
mimeType = MimeTypes.getMIMETy
 pe(\ntxt\n); // MIME type for a .txt file\n\n\n\n\nFor .Net 4.5+ you can use 
\nSystem.Web.MimeMapping.GetMimeMapping\n.\n\n\nPortCMIS (C#)\n\n\nstring 
mimeType = MimeMapping.GetMimeMapping(\ntext.txt\n);\n\n\n\n\nGetting 
Content\n\n\nCMIS 1.0\n\n\nCMIS 1.1\n\n\nThe code snippets below show how to 
get the content of document. If a document has no content, 
\ngetContentStream()\n returns \nnull\n.\n\n\nOpenCMIS (Java)\n\n\nDocument 
document = ...\nContentStream contentStream = 
document.getContentStream();\nInputStream stream = 
contentStream.getStream();\n\n\n\n\nPortCMIS (C#)\n\n\nIDocument document = 
...\nIContentStream contentStream = document.GetContentStream();\nStream stream 
= contentStream.Stream;\n\n\n\n\nGetting Partial Content\n\n\nCMIS 
1.0\n\n\nCMIS 1.1\n\n\nIt\ns also possible to get only a part of the 
content.\n\n\nOpenCMIS (Java)\n\n\nDocument document = ...\n\n// skip the first 
100 bytes\n// use null to start from the beginning\nBigInteger offset = 
BigInteger.valueOf(100)
 ;\n\n// only read 200 bytes\n// use null to read to the end of the 
stream\nBigInteger length = BigInteger.valueOf(200); \n\nContentStream 
contentStream = document.getContentStream(offset, length);\nInputStream stream 
= contentStream.getStream();\n\n\n\n\nPortCMIS (C#)\n\n\nIDocument document = 
...\n\n// skip the first 100 bytes\n// use null to start from the 
beginning\nlong? offset = 100;\n\n// only read 200 bytes\n// use null to read 
to the end of the stream\nlong? length = 200;\n\nIContentStream contentStream = 
document.GetContentStream(offset, length);\nStream stream = 
contentStream.Stream;\n\n\n\n\nUpdating Content\n\n\nOverwriting 
Content\n\n\nCMIS 1.0\n\n\nCMIS 1.1\n\n\nOpenCMIS (Java)\n\n\nDocument document 
= ...\n\nContentStream contentStream = 
...\n\ndocument.setContentStream(contentStream, true);\n\n\n\n\nPortCMIS 
(C#)\n\n\nIDocument document = ...\n\nIContentStream contentStream = 
...\n\ndocument.SetContentStream(contentStream, true);\n\n\n\n\nDeleting 
Content\n\n\nCMIS 1
 .0\n\n\nCMIS 1.1\n\n\n\n\nWarning\n\n\nSome repositories  don\nt support 
documents without content. Check the \nrepository capabilities\n if that\ns the 
case or check the\n\nAllowable Actions\n of the document.\n\n\n\n\nOpenCMIS 
(Java)\n\n\nDocument document = 
...\ndocument.deleteContentStream();\n\n\n\n\nPortCMIS (C#)\n\n\nIDocument 
document = ...\ndocument.DeleteContentStream();\n\n\n\n\nAppending 
Content\n\n\nCMIS 1.1\n\n\n\n\nWarning\n\n\nNot all repositories support 
appending content. It is not possible to discover wheter a repository supports 
it or not.\nIf you append content be prepared to catch a \nnotSupported\n 
exception. \n\n\n\n\nOpenCMIS (Java)\n\n\nDocument document = 
...\n\nContentStream contentStream = ...\nboolean isLastChunk = true; // 
indicates that this is the last part of the content 
\n\ndocument.appendContentStream(contentStream, isLastChunk);\n\n\n\n\nPortCMIS 
(C#)\n\n\nIDocument document = ...\n\nIContentStream contentStream = ...\nbool 
isLastChunk = true; //
  indicates that this is the last part of the content 
\n\ndocument.AppendContentStream(contentStream, isLastChunk);\n\n\n\n\nWorking 
with Renditions\n\n\nCMIS 1.0\n\n\nCMIS 1.1\n\n\nSpec 2.1.4.2\n\n\nRenditions 
are alternative versions of a document. For example, a rendition could be a PDF 
of an Office document. Thumbnails are a special kind of renditions and could 
also exist for non-document objects.\n\nCMIS only supports server managed 
renditions. A CMIS client cannot upload, modify, or delete a 
rendition.\n\n\nGetting the List of Renditions\n\n\n\n\nNote\n\n\nThe list of 
renditions is only available if it has been requested with an \nOperation 
Context\n.\n\n\n\n\nOpenCMIS (Java)\n\n\nDocument document = ...\n\nfor 
(Rendition rendition: document.getRenditions()) {\n    
System.out.println(rendition.getTitle() + \n: \n + 
rendition.getStreamId());\n}\n\n\n\n\nPortCMIS (C#)\n\n\nIDocument document = 
...\n\nforeach (IRendition rendition in folder.Renditions) {\n    
Console.WriteLine(ren
 dition.Title + \n: \n + rendition.StreamId);\n}\n\n\n\n\nGetting Rendition 
Content\n\n\nThe rendition content can be retrieved either for an Rendition 
object (see above) or directly from the document with a stream 
ID.\n\n\nOpenCMIS (Java)\n\n\nDocument document = ...\nRendition rendition = 
...\n\nContentStream cs1 = 
document.getContentStream(rendition.getStreamId());\n\nContentStream cs2 = 
rendition.getContentStream();\n\n\n\n\nPortCMIS (C#)\n\n\nIDocument document = 
...\nIRendition rendition = ...\n\nIContentStream cs1 = 
document.GetContentStream(rendition.StreamId);\n\nIContentStream cs2 = 
rendition.GetContentStream();", 
+            "title": "Working with Content"
+        }, 
+        {
+            "location": "/samples/content/index.html#working-with-content", 
+            "text": "CMIS 1.0  CMIS 1.1  Spec 2.1.4.2", 
+            "title": "Working with Content"
+        }, 
+        {
+            "location": "/samples/content/index.html#content-streams", 

[... 272 lines stripped ...]


Reply via email to