chemistry-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From build...@apache.org
Subject svn commit: r994540 - in /websites/staging/chemistry/trunk/content: ./ docs/cmis-samples/ docs/cmis-samples/about/ docs/cmis-samples/css/ docs/cmis-samples/mkdocs/ docs/cmis-samples/samples/access-control/ docs/cmis-samples/samples/allowable-actions/ d...
Date Fri, 05 Aug 2016 12:39:53 GMT
Author: buildbot
Date: Fri Aug  5 12:39:52 2016
New Revision: 994540

Log:
Staging update by buildbot for chemistry

Modified:
    websites/staging/chemistry/trunk/content/   (props changed)
    websites/staging/chemistry/trunk/content/docs/cmis-samples/404.html
    websites/staging/chemistry/trunk/content/docs/cmis-samples/about/index.html
    websites/staging/chemistry/trunk/content/docs/cmis-samples/css/chemistry.css
    websites/staging/chemistry/trunk/content/docs/cmis-samples/index.html
    websites/staging/chemistry/trunk/content/docs/cmis-samples/mkdocs/search_index.json
    websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/access-control/index.html
    websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/allowable-actions/index.html
    websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/capabilities/index.html
    websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/changelog/index.html
    websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/content/index.html
    websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/create-objects/index.html
    websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/create-session/index.html
    websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/delete-objects/index.html
    websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/exceptions/index.html
    websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/extensions/index.html
    websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/lists/index.html
    websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/move-objects/index.html
    websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/operation-context/index.html
    websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/properties/index.html
    websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/queries/index.html
    websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/retention/index.html
    websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/retrieve-objects/index.html
    websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/types/index.html
    websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/update-objects/index.html
    websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/versions/index.html

Propchange: websites/staging/chemistry/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Fri Aug  5 12:39:52 2016
@@ -1 +1 @@
-1751941
+1755310

Modified: websites/staging/chemistry/trunk/content/docs/cmis-samples/404.html
==============================================================================
--- websites/staging/chemistry/trunk/content/docs/cmis-samples/404.html (original)
+++ websites/staging/chemistry/trunk/content/docs/cmis-samples/404.html Fri Aug  5 12:39:52 2016
@@ -225,6 +225,12 @@
 </li>
 
                         
+                            
+<li >
+    <a href="samples/retention/index.html">Retention and Holds</a>
+</li>
+
+                        
                         </ul>
                     </li>
                 
@@ -326,4 +332,4 @@
     </body>
 
 </html>
-<!-- last update: 2016-06-24 10:25:43.943537 -->
\ No newline at end of file
+<!-- last update: 2016-08-05 12:35:10.583795 -->
\ No newline at end of file

Modified: websites/staging/chemistry/trunk/content/docs/cmis-samples/about/index.html
==============================================================================
--- websites/staging/chemistry/trunk/content/docs/cmis-samples/about/index.html (original)
+++ websites/staging/chemistry/trunk/content/docs/cmis-samples/about/index.html Fri Aug  5 12:39:52 2016
@@ -342,4 +342,4 @@ Content Management Interoperability Serv
     </body>
 
 </html>
-<!-- last update: 2016-07-08 16:12:05.189989 -->
\ No newline at end of file
+<!-- last update: 2016-08-05 12:35:11.221993 -->
\ No newline at end of file

Modified: websites/staging/chemistry/trunk/content/docs/cmis-samples/css/chemistry.css
==============================================================================
--- websites/staging/chemistry/trunk/content/docs/cmis-samples/css/chemistry.css (original)
+++ websites/staging/chemistry/trunk/content/docs/cmis-samples/css/chemistry.css Fri Aug  5 12:39:52 2016
@@ -18,7 +18,7 @@
 
 
 .cmis {
-    color: white;   
+    color: white;
     background-color: #c17702;
     border-color: #935b01;
     font-size: 0.8em;
@@ -26,11 +26,12 @@
     padding-right: 10px;
     border-style: solid;
     border-width: 1px;
-    border-radius: 5px;    
+    border-radius: 5px;
+    white-space: nowrap;
 }
 
 .spec {
-    color: white;   
+    color: white;
     background-color: #008cba;
     border-color: #0079a1;
     font-size: 0.8em;
@@ -38,7 +39,8 @@
     padding-right: 10px;
     border-style: solid;
     border-width: 1px;
-    border-radius: 5px; 
+    border-radius: 5px;
+    white-space: nowrap;
 }
 
 .admonition {

Modified: websites/staging/chemistry/trunk/content/docs/cmis-samples/index.html
==============================================================================
--- websites/staging/chemistry/trunk/content/docs/cmis-samples/index.html (original)
+++ websites/staging/chemistry/trunk/content/docs/cmis-samples/index.html Fri Aug  5 12:39:52 2016
@@ -414,4 +414,4 @@ For new projects it is recommend to use
     </body>
 
 </html>
-<!-- last update: 2016-07-08 16:12:04.652720 -->
\ No newline at end of file
+<!-- last update: 2016-08-05 12:35:10.676945 -->
\ No newline at end of file

Modified: websites/staging/chemistry/trunk/content/docs/cmis-samples/mkdocs/search_index.json
==============================================================================
--- websites/staging/chemistry/trunk/content/docs/cmis-samples/mkdocs/search_index.json (original)
+++ websites/staging/chemistry/trunk/content/docs/cmis-samples/mkdocs/search_index.json Fri Aug  5 12:39:52 2016
@@ -467,7 +467,7 @@
         }, 
         {
             "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.\n\n\n\n\nNote\n\n\nCMIS differentiates between documents with no content and documents with a content of 0 bytes.\n\nIf a document has no content, \ngetContentStream()\n returns \nnull\n. If a document has a 0 byte content, \ngetContentStream()\n returns a content stream object with an empty stream.\n\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\nC
 MIS 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.getRen
 ditions()) {\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(rendition.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();", 
+            "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.\n\n\n\n\nNote\n\n\nCMIS differentiates between documents with no content and documents with a content of 0 bytes.\n\nIf a document has no content, \ngetContentStream()\n returns \nnull\n. If a document has a 0 byte content, \ngetContentStream()\n returns a content stream object with an empty stream.\n\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\nC
 MIS 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\nGetting a Content URL\n\n\nThe AtomPub Binding and the Browser Binding can provide a URL to the content of a document. Depending on the repository and th
 e binding, the server might not return the content but an error message because this URL does not include authentication data. A user may have to re-authenticate to get the content.\n\n\nOpenCMIS (Java)\n\n\nDocument document = ...\n\nString link = document.getContentUrl();\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\n
 IDocument 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 ar
 e 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(rendition.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"
         }, 
         {
@@ -496,6 +496,11 @@
             "title": "Getting Partial Content"
         }, 
         {
+            "location": "/samples/content/index.html#getting-a-content-url", 
+            "text": "The AtomPub Binding and the Browser Binding can provide a URL to the content of a document. Depending on the repository and the binding, the server might not return the content but an error message because this URL does not include authentication data. A user may have to re-authenticate to get the content.  OpenCMIS (Java)  Document document = ...\n\nString link = document.getContentUrl();", 
+            "title": "Getting a Content URL"
+        }, 
+        {
             "location": "/samples/content/index.html#updating-content", 
             "text": "", 
             "title": "Updating Content"
@@ -572,7 +577,7 @@
         }, 
         {
             "location": "/samples/properties/index.html", 
-            "text": "Working with Properties and Secondary Types\n\n\nData Types\n\n\nCMIS 1.0\n\n\nCMIS 1.1\n\n\nThe table below shows how the CMIS data types are mapped to Java and C# data types.\n\n\n\n\n\n\n\n\nCMIS Data Type\n\n\nOpenCMIS (Java)\n\n\nPortCMIS (C#)\n\n\n\n\n\n\n\n\n\n\nstring\n\n\nString\n\n\nstring\n\n\n\n\n\n\nboolean\n\n\nboolean\n\n\nbool\n\n\n\n\n\n\ndecimal\n\n\nBigDecimal\n, float, double, byte, short, int, long\n\n\ndecimal\n, float, double\n\n\n\n\n\n\ninteger\n\n\nBigInteger\n, byte, short, int, long\n\n\nBigInteger\n, sbyte, byte, short, ushort, int, uint, long\n\n\n\n\n\n\ndatetime\n\n\nGregorianCalendar\n, Date\n\n\nDateTime\n\n\n\n\n\n\nuri\n\n\nString\n\n\nstring\n\n\n\n\n\n\nid\n\n\nString\n\n\nstring\n\n\n\n\n\n\nhtml\n\n\nString\n\n\nstring\n\n\n\n\n\n\n\n\nSecondary Types\n\n\nCMIS 1.1\n\n\nSpec 2.1.19", 
+            "text": "Working with Properties and Secondary Types\n\n\nData Types\n\n\nCMIS 1.0\n\n\nCMIS 1.1\n\n\nThe table below shows how the CMIS data types are mapped to Java and C# data types.\nMulti-value property values are set and returned as lists of these data types.\n\n\n\n\n\n\n\n\nCMIS Data Type\n\n\nOpenCMIS (Java)\n\n\nPortCMIS (C#)\n\n\n\n\n\n\n\n\n\n\nstring\n\n\nString\n\n\nstring\n\n\n\n\n\n\nboolean\n\n\nBoolean\n\n\nbool\n\n\n\n\n\n\ndecimal\n\n\nBigDecimal\n, float, double, byte, short, int, long\n\n\ndecimal\n, float, double\n\n\n\n\n\n\ninteger\n\n\nBigInteger\n, byte, short, int, long\n\n\nBigInteger\n, sbyte, byte, short, ushort, int, uint, long\n\n\n\n\n\n\ndatetime\n\n\nGregorianCalendar\n, Date\n\n\nDateTime\n\n\n\n\n\n\nuri\n\n\nString\n\n\nstring\n\n\n\n\n\n\nid\n\n\nString\n\n\nstring\n\n\n\n\n\n\nhtml\n\n\nString\n\n\nstring\n\n\n\n\n\n\n\n\nProperties\n\n\nRetrieving Properties\n\n\n\n\nNote\n\n\nOnly the properties that have been requested are avai
 lable. Use an \nOperation Context\n to define, which properties should be provided by the repository.\n\n\n\n\nThe value of a property that is not set, has not been provided by the repository, or of a property that does not exits is \nnull\n.\n\n\nOpenCMIS (Java)\n\n\nDocument doc = ...\n\n// properties defined in the CMIS specification have getters (here are just a few examples)\nString id = doc.getId();\nString name = doc.getName();\nString creator = doc.getCreatedBy();\nGregorianCalendar lastModification = doc.getLastModificationDate();\n\n\n// all property values can be accessed by their property ID\nString name2 = doc.getPropertyValue(\ncmis:name\n);\nBigInteger projectNumber = doc.getPropertyValue(\nproject:number\n);\n\n// multi value property values are always returned as lists\nList\nString\n colors = doc.getPropertyValue(\nproject:colors\n);\n\n\n// there is detailed information about a property available for generic clients\nProperty\nString\n nameProp = doc.getProperty(\
 ncmis:name\n);\nPropertyType namePropType = nameProp.getType();\nboolean nameMultiValued = nameProp.isMultiValued();\nString name3 = nameProp.getValue();\n\nProperty\nBoolean\n lightsProp = doc.getProperty(\nlights:on\n);\nPropertyType lightsPropType = lightsProp.getType();\nboolean lightsMultiValued = lightsProp.isMultiValued();\nBoolean lightsValue = lightsProp.getValue();\n\n\n\n\nPortCMIS (C#)\n\n\nIDocument doc = ...\n\n// properties defined in the CMIS specification have getters (here are just a few examples)\nstring id = doc.Id;\nstring name = doc.Name;\nstring creator = doc.CreatedBy;\nDateTime? lastModification = doc.LastModificationDate;\n\n// all property values can be accessed by their property ID\nstring name2 = doc.GetPropertyAsStringValue(\ncmis:name\n);\nBigInteger projectNumber = (BigInteger)doc.GetPropertyValue(\nproject:number\n);\n\n// multi value property values are always returned as lists\nIList\nstring\n colors = (IList\nstring\n)doc.GetPropertyValue(\nprojec
 t:colors\n);\n\n// there is detailed information about a property available for generic clients\nIProperty nameProp = doc[\ncmis:name\n];\nPropertyType? namePropType = nameProp.PropertyType;\nbool nameMultiValued = nameProp.IsMultiValued;\nstring name3 = (string)nameProp.Value;\n\nIProperty lightsProp = doc[\nlights:on\n];\nPropertyType? lightsPropType = lightsProp.PropertyType;\nbool lightsMultiValued = lightsProp.IsMultiValued;\nbool? lightsValue = (bool?)lightsProp.Value;\n\n\n\n\n\nSetting Properties\n\n\nBefore OpenCMIS or PortCMIS sends properties to a repository, it checks the type definition whether the properties exist or not, if the data types match, and if multi-value properties contain \nnull\n values. If it detects a problem, it throws an exception before it sends anything to the repository.\n\n\nIf a property cannot be set, for example because it is a read-only property, OpenCMIS or PortCMIS silently filters out the property. The value is not sent to the repository.\n\
 n\nOpenCMIS (Java)\n\n\nMap\nString, Object\n properties = new HashMap\nString, Object\n();\n\n// adding single value properties\nproperties.put(PropertyIds.NAME, \nthe-tower\n);\nproperties.put(\nproject:number\n, 1234);\nproperties.put(\nproject:now\n, new GregorianCalendar());\nproperties.put(\nproject:onTime\n, true);\nproperties.put(\nproject:budget\n, new BigDecimal(\n654321.98\n));\n\n// adding a multi value property\nList\nString\n colors = new ArrayList\nString\n();\ncolors.add(\nred\n);\ncolors.add(\ngreen\n);\ncolors.add(\nblue\n);\n\nproperties.put(\nproject:colors\n, colors); \n\n// unsetting a property\nproperties.put(\nproject:something\n, null);\n\n// call create... or update...\n\n\n\n\nPortCMIS (C#)\n\n\nIDictionary\nstring, object\n properties = new Dictionary\nstring, object\n();\n\n// adding single value properties\nproperties[PropertyIds.Name] = \nthe-tower\n;\nproperties[\nproject:number\n] = 1234;\nproperties[\nproject:now\n] = DateTime.Now;\nproperties[\npro
 ject:onTime\n] = true;\nproperties[\nproject:budget\n] = 654321.98M;\n\n// adding a multi value property\nIList\nstring\n colors = new List\nstring\n();\ncolors.Add(\nred\n);\ncolors.Add(\ngreen\n);\ncolors.Add(\nblue\n);\n\nproperties[\nproject:colors\n] = colors; \n\n// unsetting a property\nproperties[\nproject:something\n] = null;\n\n// call Create... or Update...\n\n\n\n\nSecondary Types\n\n\nCMIS 1.1\n\n\nSpec 2.1.19\n\n\nSecondary types can be added during creation of an object and later added and removed by updating its properties.\n\n\nIn general, secondary types can be added and removed at any time.\nBut a repository may have rules and constraints that prevents a client from making those changes.\n\n\nSetting Secondary Types\n\n\nOpenCMIS (Java)\n\n\nFolder parent = ...\n\nMap\nString, Object\n properties = new HashMap\nString, Object\n();\n\n// set standard CMIS properties\nproperties.put(PropertyIds.NAME, \nMyNewDocument\n);\nproperties.put(PropertyIds.OBJECT_TYPE_ID, \n
 cmis:document\n);\n\n// add two secondary types\nList\nString\n secondaryTypes = new ArrayList\nString\n();\nsecondaryTypes.add(\ncustom:classifictaion\n);\nsecondaryTypes.add(\ncustom:draft\n);\n\nproperties.put(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, secondaryTypes);\n\n// set secondary type properties\nproperties.put(\nclassifictaion\n, \nconfidential\n);\nproperties.put(\ndraftState\n, \nearly\n);\n\nContentStream contentStream = ...\n\n// create the document\nDocument newDoc = parent.createDocument(properties, contentStream, VersioningState.NONE);\n\n\n\n\nPortCMIS (C#)\n\n\nIFolder parent = ...\n\nIDictionary\nstring, object\n properties = new Dictionary\nstring, object\n();\n\n// set standard CMIS properties\nproperties[PropertyIds.Name] = \nMyNewDocument\n;\nproperties[PropertyIds.ObjectTypeId] = \ncmis:document\n;\n\n// add two secondary types\nIList\nstring\n secondaryTypes = new List\nstring\n();\nsecondaryTypes.Add(\ncustom:classifictaion\n);\nsecondaryTypes.Add(\ncustom:
 draft\n);\n\nproperties[PropertyIds.SecondaryObjectTypeIds] = secondaryTypes;\n\n// set secondary type properties\nproperties[\nclassifictaion\n] = \nconfidential\n;\nproperties[\ndraftState\n] = \nearly\n;\n\nContentStream contentStream = ...\n\n// create the document\nIDocument newDoc = parent.CreateDocument(properties, contentStream, VersioningState.None);\n\n\n\n\nAdding Secondary Types\n\n\nOpenCMIS (Java)\n\n\nCmisObject cmisObject = ...\n\n// get current list of secondary types\nList\nString\n secondaryTypes = doc.getPropertyValue(PropertyIds.SECONDARY_OBJECT_TYPE_IDS);\nif (secondaryTypes == null) {\n    secondaryTypes = new ArrayList\nString\n();\n}\n\nMap\nString, Object\n properties = new HashMap\nString, Object\n();\n\n// add the new secondary type\nsecondaryTypes.add(\ncustom:classifictaion\n);\nproperties.put(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, secondaryTypes);\n\n// set secondary type property\nproperties.put(\nclassifictaion\n, \npublic\n);\n\n// update\ncmisObjec
 t.updateProperties(properties);\n\n\n\n\n\nPortCMIS (C#)\n\n\nICmisObject cmisObject = ...\n\n// get current list of secondary types\nIList\nstring\n secondaryTypes = (IList\nstring\n)doc.GetPropertyValue(PropertyIds.SecondaryObjectTypeIds);\nif (secondaryTypes == null) {\n    secondaryTypes = new List\nstring\n();\n}\n\nIDictonary\nstring, object\n properties = new Dictonary\nstring, object\n();\n\n// add the new secondary type\nsecondaryTypes.Add(\ncustom:classifictaion\n);\nproperties[PropertyIds.SecondaryObjectTypeIds] = secondaryTypes;\n\n// set secondary type property\nproperties[\nclassifictaion\n] = \npublic\n;\n\n// update\ncmisObject.UpdateProperties(properties);\n\n\n\n\nRemoving Secondary Types\n\n\nOpenCMIS (Java)\n\n\nCmisObject cmisObject = ...\n\n// get the current list of secondary types\nList\nString\n secondaryTypes = doc.getPropertyValue(PropertyIds.SECONDARY_OBJECT_TYPE_IDS);\nif (secondaryTypes == null || !secondaryTypes.contains(\ncustom:classifictaion\n)) {\n
     // there is nothing to remove\n    return;\n}\n\nMap\nString, Object\n properties = new HashMap\nString, Object\n();\n\n// remove the new secondary type\nsecondaryTypes.remove(\ncustom:classifictaion\n);\nproperties.put(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, secondaryTypes);\n\n// update\ncmisObject.updateProperties(properties);\n\n\n\n\nPortCMIS (C#)\n\n\nICmisObject cmisObject = ...\n\n// get current list of secondary types\nIList\nstring\n secondaryTypes = (IList\nstring\n)doc.GetPropertyValue(PropertyIds.SecondaryObjectTypeIds);\nif (secondaryTypes == null || !secondaryTypes.Contains(\ncustom:classifictaion\n)) {\n    // there is nothing to remove\n    return;\n}\n\nIDictionary\nstring, object\n properties = new Dictionary\nstring, object\n();\n\n// remove the secondary type\nsecondaryTypes.Remove(\ncustom:classifictaion\n);\nproperties[PropertyIds.SecondaryObjectTypeIds] = secondaryTypes;\n\n// update\ncmisObject.UpdateProperties(properties);", 
             "title": "Working with Properties and Secondary Types"
         }, 
         {
@@ -582,15 +587,45 @@
         }, 
         {
             "location": "/samples/properties/index.html#data-types", 
-            "text": "CMIS 1.0  CMIS 1.1  The table below shows how the CMIS data types are mapped to Java and C# data types.     CMIS Data Type  OpenCMIS (Java)  PortCMIS (C#)      string  String  string    boolean  boolean  bool    decimal  BigDecimal , float, double, byte, short, int, long  decimal , float, double    integer  BigInteger , byte, short, int, long  BigInteger , sbyte, byte, short, ushort, int, uint, long    datetime  GregorianCalendar , Date  DateTime    uri  String  string    id  String  string    html  String  string", 
+            "text": "CMIS 1.0  CMIS 1.1  The table below shows how the CMIS data types are mapped to Java and C# data types.\nMulti-value property values are set and returned as lists of these data types.     CMIS Data Type  OpenCMIS (Java)  PortCMIS (C#)      string  String  string    boolean  Boolean  bool    decimal  BigDecimal , float, double, byte, short, int, long  decimal , float, double    integer  BigInteger , byte, short, int, long  BigInteger , sbyte, byte, short, ushort, int, uint, long    datetime  GregorianCalendar , Date  DateTime    uri  String  string    id  String  string    html  String  string", 
             "title": "Data Types"
         }, 
         {
+            "location": "/samples/properties/index.html#properties", 
+            "text": "", 
+            "title": "Properties"
+        }, 
+        {
+            "location": "/samples/properties/index.html#retrieving-properties", 
+            "text": "Note  Only the properties that have been requested are available. Use an  Operation Context  to define, which properties should be provided by the repository.   The value of a property that is not set, has not been provided by the repository, or of a property that does not exits is  null .  OpenCMIS (Java)  Document doc = ...\n\n// properties defined in the CMIS specification have getters (here are just a few examples)\nString id = doc.getId();\nString name = doc.getName();\nString creator = doc.getCreatedBy();\nGregorianCalendar lastModification = doc.getLastModificationDate();\n\n\n// all property values can be accessed by their property ID\nString name2 = doc.getPropertyValue( cmis:name );\nBigInteger projectNumber = doc.getPropertyValue( project:number );\n\n// multi value property values are always returned as lists\nList String  colors = doc.getPropertyValue( project:colors );\n\n\n// there is detailed information about a property available for generic cli
 ents\nProperty String  nameProp = doc.getProperty( cmis:name );\nPropertyType namePropType = nameProp.getType();\nboolean nameMultiValued = nameProp.isMultiValued();\nString name3 = nameProp.getValue();\n\nProperty Boolean  lightsProp = doc.getProperty( lights:on );\nPropertyType lightsPropType = lightsProp.getType();\nboolean lightsMultiValued = lightsProp.isMultiValued();\nBoolean lightsValue = lightsProp.getValue();  PortCMIS (C#)  IDocument doc = ...\n\n// properties defined in the CMIS specification have getters (here are just a few examples)\nstring id = doc.Id;\nstring name = doc.Name;\nstring creator = doc.CreatedBy;\nDateTime? lastModification = doc.LastModificationDate;\n\n// all property values can be accessed by their property ID\nstring name2 = doc.GetPropertyAsStringValue( cmis:name );\nBigInteger projectNumber = (BigInteger)doc.GetPropertyValue( project:number );\n\n// multi value property values are always returned as lists\nIList string  colors = (IList string )doc.
 GetPropertyValue( project:colors );\n\n// there is detailed information about a property available for generic clients\nIProperty nameProp = doc[ cmis:name ];\nPropertyType? namePropType = nameProp.PropertyType;\nbool nameMultiValued = nameProp.IsMultiValued;\nstring name3 = (string)nameProp.Value;\n\nIProperty lightsProp = doc[ lights:on ];\nPropertyType? lightsPropType = lightsProp.PropertyType;\nbool lightsMultiValued = lightsProp.IsMultiValued;\nbool? lightsValue = (bool?)lightsProp.Value;", 
+            "title": "Retrieving Properties"
+        }, 
+        {
+            "location": "/samples/properties/index.html#setting-properties", 
+            "text": "Before OpenCMIS or PortCMIS sends properties to a repository, it checks the type definition whether the properties exist or not, if the data types match, and if multi-value properties contain  null  values. If it detects a problem, it throws an exception before it sends anything to the repository.  If a property cannot be set, for example because it is a read-only property, OpenCMIS or PortCMIS silently filters out the property. The value is not sent to the repository.  OpenCMIS (Java)  Map String, Object  properties = new HashMap String, Object ();\n\n// adding single value properties\nproperties.put(PropertyIds.NAME,  the-tower );\nproperties.put( project:number , 1234);\nproperties.put( project:now , new GregorianCalendar());\nproperties.put( project:onTime , true);\nproperties.put( project:budget , new BigDecimal( 654321.98 ));\n\n// adding a multi value property\nList String  colors = new ArrayList String ();\ncolors.add( red );\ncolors.add( green );\ncolor
 s.add( blue );\n\nproperties.put( project:colors , colors); \n\n// unsetting a property\nproperties.put( project:something , null);\n\n// call create... or update...  PortCMIS (C#)  IDictionary string, object  properties = new Dictionary string, object ();\n\n// adding single value properties\nproperties[PropertyIds.Name] =  the-tower ;\nproperties[ project:number ] = 1234;\nproperties[ project:now ] = DateTime.Now;\nproperties[ project:onTime ] = true;\nproperties[ project:budget ] = 654321.98M;\n\n// adding a multi value property\nIList string  colors = new List string ();\ncolors.Add( red );\ncolors.Add( green );\ncolors.Add( blue );\n\nproperties[ project:colors ] = colors; \n\n// unsetting a property\nproperties[ project:something ] = null;\n\n// call Create... or Update...", 
+            "title": "Setting Properties"
+        }, 
+        {
             "location": "/samples/properties/index.html#secondary-types", 
-            "text": "CMIS 1.1  Spec 2.1.19", 
+            "text": "CMIS 1.1  Spec 2.1.19  Secondary types can be added during creation of an object and later added and removed by updating its properties.  In general, secondary types can be added and removed at any time.\nBut a repository may have rules and constraints that prevents a client from making those changes.", 
             "title": "Secondary Types"
         }, 
         {
+            "location": "/samples/properties/index.html#setting-secondary-types", 
+            "text": "OpenCMIS (Java)  Folder parent = ...\n\nMap String, Object  properties = new HashMap String, Object ();\n\n// set standard CMIS properties\nproperties.put(PropertyIds.NAME,  MyNewDocument );\nproperties.put(PropertyIds.OBJECT_TYPE_ID,  cmis:document );\n\n// add two secondary types\nList String  secondaryTypes = new ArrayList String ();\nsecondaryTypes.add( custom:classifictaion );\nsecondaryTypes.add( custom:draft );\n\nproperties.put(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, secondaryTypes);\n\n// set secondary type properties\nproperties.put( classifictaion ,  confidential );\nproperties.put( draftState ,  early );\n\nContentStream contentStream = ...\n\n// create the document\nDocument newDoc = parent.createDocument(properties, contentStream, VersioningState.NONE);  PortCMIS (C#)  IFolder parent = ...\n\nIDictionary string, object  properties = new Dictionary string, object ();\n\n// set standard CMIS properties\nproperties[PropertyIds.Name] =  MyNewDocument ;\
 nproperties[PropertyIds.ObjectTypeId] =  cmis:document ;\n\n// add two secondary types\nIList string  secondaryTypes = new List string ();\nsecondaryTypes.Add( custom:classifictaion );\nsecondaryTypes.Add( custom:draft );\n\nproperties[PropertyIds.SecondaryObjectTypeIds] = secondaryTypes;\n\n// set secondary type properties\nproperties[ classifictaion ] =  confidential ;\nproperties[ draftState ] =  early ;\n\nContentStream contentStream = ...\n\n// create the document\nIDocument newDoc = parent.CreateDocument(properties, contentStream, VersioningState.None);", 
+            "title": "Setting Secondary Types"
+        }, 
+        {
+            "location": "/samples/properties/index.html#adding-secondary-types", 
+            "text": "OpenCMIS (Java)  CmisObject cmisObject = ...\n\n// get current list of secondary types\nList String  secondaryTypes = doc.getPropertyValue(PropertyIds.SECONDARY_OBJECT_TYPE_IDS);\nif (secondaryTypes == null) {\n    secondaryTypes = new ArrayList String ();\n}\n\nMap String, Object  properties = new HashMap String, Object ();\n\n// add the new secondary type\nsecondaryTypes.add( custom:classifictaion );\nproperties.put(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, secondaryTypes);\n\n// set secondary type property\nproperties.put( classifictaion ,  public );\n\n// update\ncmisObject.updateProperties(properties);  PortCMIS (C#)  ICmisObject cmisObject = ...\n\n// get current list of secondary types\nIList string  secondaryTypes = (IList string )doc.GetPropertyValue(PropertyIds.SecondaryObjectTypeIds);\nif (secondaryTypes == null) {\n    secondaryTypes = new List string ();\n}\n\nIDictonary string, object  properties = new Dictonary string, object ();\n\n// add the new se
 condary type\nsecondaryTypes.Add( custom:classifictaion );\nproperties[PropertyIds.SecondaryObjectTypeIds] = secondaryTypes;\n\n// set secondary type property\nproperties[ classifictaion ] =  public ;\n\n// update\ncmisObject.UpdateProperties(properties);", 
+            "title": "Adding Secondary Types"
+        }, 
+        {
+            "location": "/samples/properties/index.html#removing-secondary-types", 
+            "text": "OpenCMIS (Java)  CmisObject cmisObject = ...\n\n// get the current list of secondary types\nList String  secondaryTypes = doc.getPropertyValue(PropertyIds.SECONDARY_OBJECT_TYPE_IDS);\nif (secondaryTypes == null || !secondaryTypes.contains( custom:classifictaion )) {\n    // there is nothing to remove\n    return;\n}\n\nMap String, Object  properties = new HashMap String, Object ();\n\n// remove the new secondary type\nsecondaryTypes.remove( custom:classifictaion );\nproperties.put(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, secondaryTypes);\n\n// update\ncmisObject.updateProperties(properties);  PortCMIS (C#)  ICmisObject cmisObject = ...\n\n// get current list of secondary types\nIList string  secondaryTypes = (IList string )doc.GetPropertyValue(PropertyIds.SecondaryObjectTypeIds);\nif (secondaryTypes == null || !secondaryTypes.Contains( custom:classifictaion )) {\n    // there is nothing to remove\n    return;\n}\n\nIDictionary string, object  properties = new Dict
 ionary string, object ();\n\n// remove the secondary type\nsecondaryTypes.Remove( custom:classifictaion );\nproperties[PropertyIds.SecondaryObjectTypeIds] = secondaryTypes;\n\n// update\ncmisObject.UpdateProperties(properties);", 
+            "title": "Removing Secondary Types"
+        }, 
+        {
             "location": "/samples/operation-context/index.html", 
             "text": "Understanding the Operation Context\n\n\nThe amount of metadata and associated information retrieved during an OpenCMIS or PortCMIS operation could be large, so certain methods return a sensible subset of the information by default, and provide additional methods that take an OperationContext. An OperationContext allows you to tune the amount of information returned by setting property filters, rendition filters, or by setting flags to include path segments, ACLs, Allowable Actions, Policies, and Relationships. The OperationContext is also used to control paging and caching in an operation.\n\n\nProperty Filter\n\n\nSpec 2.2.1.2.1\n\n\nThe property filter defines which properties the repository must return. Only select the properties you really need to keep the transferred data as small as possible. The repository may return more properties than specified.\n\n\n\n\nQuery Names\n\n\nThe property filter is a collection of query names, not property IDs. The query n
 ames and property IDs of all properties defined in the CMIS specifation are same and therefore interchangeable. That might not be the case for custom types. \n\n\n\n\n\n\nMinimal Property Filter\n\n\nOpenCMIS and PortCMIS need at least the properties \ncmis:objectId\n, \ncmis:baseTypeId\n, and \ncmis:objectTypeId\n to create objects.\nThe default operation context implementation adds these properties automatically if they are missing in the property filter.\n\n\n\n\nOpenCMIS (Java)\n\n\nOperationContext oc = ...\noc.setFilterString(\ncmis:objectId,cmis:name,cmis:createdBy\n);\n\n\n\n\nPortCMIS (C#)\n\n\nIOperationContext oc = ...\noc.FilterString = \ncmis:objectId,cmis:name,cmis:createdBy\n;\n\n\n\n\nAllowable Actions\n\n\nSpec 2.2.1.2.6\n\n\nCalculating the Allowable Actions of an object can be very expensive for a repository. Don\nt request them if you don\nt need them.\n\n\nOpenCMIS (Java)\n\n\nOperationContext oc = ...\noc.setIncludeAllowableActions(false); // don't request Allo
 wable Actions\n\n\n\n\nPortCMIS (C#)\n\n\nIOperationContext oc = ...\noc.IncludeAllowableActions = false; // don't request Allowable Actions\n\n\n\n\nACLs\n\n\nSpec 2.2.1.2.5\n\n\nOpenCMIS (Java)\n\n\nOperationContext oc = ...\noc.setIncludeAcls(true); // request ACLs\n\n\n\n\nPortCMIS (C#)\n\n\nIOperationContext oc = ...\noc.IncludeAcls = true; // request ACLs\n\n\n\n\nRelationships\n\n\nSpec 2.2.1.2.2\n\n\nOpenCMIS (Java)\n\n\nOperationContext oc = ...\noc.setIncludeRelationships(IncludeRelationships.BOTH); // request source and target relationships\n\n\n\n\nPortCMIS (C#)\n\n\nIOperationContext oc = ...\noc.IncludeRelationships = IncludeRelationships.Both; // request source and target relationships\n\n\n\n\nPolicies\n\n\nSpec 2.2.1.2.3\n\n\nOpenCMIS (Java)\n\n\nOperationContext oc = ...\noc.setIncludePolicies(true); // request policies\n\n\n\n\nPortCMIS (C#)\n\n\nIOperationContext oc = ...\noc.IncludePolicies = true; // request policies\n\n\n\n\nRendition Filter\n\n\nSpec 2.2.1.2.
 4\n\n\nThe rendition filter defines which rendition details should be returned by the repository. This filter is a comma separated list of rendition kinds (e.g. \ncmis:thumbnail\n) and MIME types. \n\n\nOpenCMIS (Java)\n\n\nOperationContext oc = ...\noc.setRenditionFilterString(\ncmis:thumbnail,image/*\n);\n\n\n\n\nPortCMIS (C#)\n\n\nIOperationContext oc = ...\noc.RenditionFilterString = \ncmis:thumbnail,image/*\n;\n\n\n\n\nRendition filer examples:\n\n\n\n\n*\n (include all renditions)\n\n\ncmis:thumbnail\n (include only thumbnails)\n\n\nimage/*\n (include all image renditions)\n\n\napplication/pdf,application/x-shockwave-flash\n (include web ready renditions)\n\n\ncmis:none\n (exclude all renditions)\n\n\n\n\nOrder By\n\n\nSpec 2.2.1.2.7\n\n\nThe list of objects returned by \ngetChildren\n, \ngetCheckedOutDocs\n, and \nqueryObjects\n can be ordered. This is a comma separated list of query names, followed by an optional ascending modifier \nASC\n or descending modifier \nDESC\n for
  each query name. If the modifier is not stated, \nASC\n is assumed.\n\n\n\n\nQuery Names\n\n\nSimilar to the property filter this is a collection of query names, not property IDs.\n\n\n\n\nOpenCMIS (Java)\n\n\nOperationContext oc = ...\noc.setOrderBy(\ncmis:createdBy DESC,cmis:name ASC\n);\n\n\n\n\nPortCMIS (C#)\n\n\nIOperationContext oc = ...\noc.OrderBy(\ncmis:createdBy DESC,cmis:name ASC\n);\n\n\n\n\nCaching\n\n\nAll objects retrieved by \ngetObject\n and \ngetObjectByPath\n are cached by default. If caching is turned off by an Operation Context, objects are not looked up in the cache and are not put into the cache. The methods getObject and getObjectByPath make a round-trip to the repository and get up-to-date data.\n\n\nSee also the section about the \nobject cache\n.\n\n\nOpenCMIS (Java)\n\n\nOperationContext oc = ...\noc.setCacheEnabled(false); // no caching please\n\n\n\n\nPortCMIS (C#)\n\n\nIOperationContext oc = ...\noc.CacheEnabled = false; // no caching please\n\n\n\n\n
 Creating Operation Context Objects\n\n\nOpenCMIS (Java)\n\n\n// create the default operation context\nOperationContext oc1 = session.createOperationContext();\n\n// create an operation context that selects nothing except the provided properties\nOperationContext oc2 = OperationContextUtils.createMinimumOperationContext(\ncmis:objectId\n, \ncmis:name\n, \ncmis:createdBy\n);\n\n// create an operation context that selects everything\nOperationContext oc3 = OperationContextUtils.createMaximumOperationContext();\n\n\n\n\nPortCMIS (C#)\n\n\n// create the default operation context\nIOperationContext oc1 = Session.CreateOperationContext();\n\n// create an operation context that selects nothing except the provided properties\nIOperationContext oc2 = OperationContextUtils.CreateMinimumOperationContext(\ncmis:objectId\n, \ncmis:name\n, \ncmis:createdBy\n);\n\n// create an operation context that selects everything\nIOperationContext oc3 = OperationContextUtils.CreateMaximumOperationContext();\n
 \n\n\n\nUsing an Operation Context\n\n\nMany methods that retrieve objects or data accept an Operation Context object as an additional parameter.\nIf no Operation Context object is provided, a default Operation Context object defines what should be requested.\n\n\nOpenCMIS (Java)\n\n\nOperationContext oc = ...\n\nCmisObject cmisObject1 = session.getObject(id, oc);\nCmisObject cmisObject2 = session.getObjectByPath(path, oc);\nItemIterable\nCmisObject\n children = folder.getChildren(oc);\nList\nDocument\n versions = doc.getAllVersions(oc);\n\n\n\n\nPortCMIS (C#)\n\n\nIOperationContext oc = ...\n\nICmisObject cmisObject1 = session.GetObject(id, oc);\nICmisObject cmisObject2 = session.GetObjectByPath(path, oc);\nIItemEnumerable\nICmisObject\n children = folder.GetChildren(oc);\nIList\nIDocument\n versions = doc.GetAllVersions(oc);", 
             "title": "Understanding the Operation Context"

Modified: websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/access-control/index.html
==============================================================================
--- websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/access-control/index.html (original)
+++ websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/access-control/index.html Fri Aug  5 12:39:52 2016
@@ -346,4 +346,4 @@
     </body>
 
 </html>
-<!-- last update: 2016-07-08 16:12:05.159912 -->
\ No newline at end of file
+<!-- last update: 2016-08-05 12:35:11.187503 -->
\ No newline at end of file

Modified: websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/allowable-actions/index.html
==============================================================================
--- websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/allowable-actions/index.html (original)
+++ websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/allowable-actions/index.html Fri Aug  5 12:39:52 2016
@@ -356,4 +356,4 @@ if (cmisObject.HasAllowableAction(PortCM
     </body>
 
 </html>
-<!-- last update: 2016-07-08 16:12:05.143206 -->
\ No newline at end of file
+<!-- last update: 2016-08-05 12:35:11.173607 -->
\ No newline at end of file

Modified: websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/capabilities/index.html
==============================================================================
--- websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/capabilities/index.html (original)
+++ websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/capabilities/index.html Fri Aug  5 12:39:52 2016
@@ -383,4 +383,4 @@ boolean supportsUnfiling = Boolean.TRUE.
     </body>
 
 </html>
-<!-- last update: 2016-07-08 16:12:04.719605 -->
\ No newline at end of file
+<!-- last update: 2016-08-05 12:35:10.740466 -->
\ No newline at end of file

Modified: websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/changelog/index.html
==============================================================================
--- websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/changelog/index.html (original)
+++ websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/changelog/index.html Fri Aug  5 12:39:52 2016
@@ -352,4 +352,4 @@ if (events != null &amp;&amp; events.get
     </body>
 
 </html>
-<!-- last update: 2016-07-08 16:12:05.126765 -->
\ No newline at end of file
+<!-- last update: 2016-08-05 12:35:11.157522 -->
\ No newline at end of file

Modified: websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/content/index.html
==============================================================================
--- websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/content/index.html (original)
+++ websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/content/index.html Fri Aug  5 12:39:52 2016
@@ -289,6 +289,8 @@
             
                 <li class="third-level"><a href="#getting-partial-content">Getting Partial Content</a></li>
             
+                <li class="third-level"><a href="#getting-a-content-url">Getting a Content URL</a></li>
+            
         
             <li class="second-level"><a href="#updating-content">Updating Content</a></li>
             
@@ -413,6 +415,14 @@ IContentStream contentStream = document.
 Stream stream = contentStream.Stream;
 </code></pre>
 
+<h3 id="getting-a-content-url">Getting a Content URL</h3>
+<p>The AtomPub Binding and the Browser Binding can provide a URL to the content of a document. Depending on the repository and the binding, the server might not return the content but an error message because this URL does not include authentication data. A user may have to re-authenticate to get the content.</p>
+<p class="opencmis">OpenCMIS (Java)</p>
+<pre><code class="java">Document document = ...
+
+String link = document.getContentUrl();
+</code></pre>
+
 <h2 id="updating-content">Updating Content</h2>
 <h3 id="overwriting-content">Overwriting Content</h3>
 <p><span class="cmis">CMIS 1.0</span>
@@ -571,4 +581,4 @@ IContentStream cs2 = rendition.GetConten
     </body>
 
 </html>
-<!-- last update: 2016-07-08 16:12:04.957864 -->
\ No newline at end of file
+<!-- last update: 2016-08-05 12:35:10.970377 -->
\ No newline at end of file

Modified: websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/create-objects/index.html
==============================================================================
--- websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/create-objects/index.html (original)
+++ websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/create-objects/index.html Fri Aug  5 12:39:52 2016
@@ -566,4 +566,4 @@ ObjectId newFolderId = session.createFol
     </body>
 
 </html>
-<!-- last update: 2016-07-08 16:12:04.846266 -->
\ No newline at end of file
+<!-- last update: 2016-08-05 12:35:10.862163 -->
\ No newline at end of file

Modified: websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/create-session/index.html
==============================================================================
--- websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/create-session/index.html (original)
+++ websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/create-session/index.html Fri Aug  5 12:39:52 2016
@@ -502,4 +502,4 @@ ISession session = factory.GetRepositori
     </body>
 
 </html>
-<!-- last update: 2016-07-08 16:12:04.695828 -->
\ No newline at end of file
+<!-- last update: 2016-08-05 12:35:10.719226 -->
\ No newline at end of file

Modified: websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/delete-objects/index.html
==============================================================================
--- websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/delete-objects/index.html (original)
+++ websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/delete-objects/index.html Fri Aug  5 12:39:52 2016
@@ -403,4 +403,4 @@ folder.DeleteTree(true, UnfileObject.Del
     </body>
 
 </html>
-<!-- last update: 2016-07-08 16:12:04.915902 -->
\ No newline at end of file
+<!-- last update: 2016-08-05 12:35:10.929551 -->
\ No newline at end of file

Modified: websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/exceptions/index.html
==============================================================================
--- websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/exceptions/index.html (original)
+++ websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/exceptions/index.html Fri Aug  5 12:39:52 2016
@@ -429,4 +429,4 @@ is not allowed for documents of that typ
     </body>
 
 </html>
-<!-- last update: 2016-07-08 16:12:04.768746 -->
\ No newline at end of file
+<!-- last update: 2016-08-05 12:35:10.791938 -->
\ No newline at end of file

Modified: websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/extensions/index.html
==============================================================================
--- websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/extensions/index.html (original)
+++ websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/extensions/index.html Fri Aug  5 12:39:52 2016
@@ -372,4 +372,4 @@ if (extensions != null) {
     </body>
 
 </html>
-<!-- last update: 2016-07-08 16:12:05.095607 -->
\ No newline at end of file
+<!-- last update: 2016-08-05 12:35:11.125794 -->
\ No newline at end of file

Modified: websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/lists/index.html
==============================================================================
--- websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/lists/index.html (original)
+++ websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/lists/index.html Fri Aug  5 12:39:52 2016
@@ -383,4 +383,4 @@ IItemEnumerable&lt;Something&gt; skipAnd
     </body>
 
 </html>
-<!-- last update: 2016-07-08 16:12:05.079866 -->
\ No newline at end of file
+<!-- last update: 2016-08-05 12:35:11.110707 -->
\ No newline at end of file

Modified: websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/move-objects/index.html
==============================================================================
--- websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/move-objects/index.html (original)
+++ websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/move-objects/index.html Fri Aug  5 12:39:52 2016
@@ -393,4 +393,4 @@ doc.RemoveFromFolder(folder);
     </body>
 
 </html>
-<!-- last update: 2016-07-08 16:12:04.893686 -->
\ No newline at end of file
+<!-- last update: 2016-08-05 12:35:10.907502 -->
\ No newline at end of file

Modified: websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/operation-context/index.html
==============================================================================
--- websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/operation-context/index.html (original)
+++ websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/operation-context/index.html Fri Aug  5 12:39:52 2016
@@ -530,4 +530,4 @@ IList&lt;IDocument&gt; versions = doc.Ge
     </body>
 
 </html>
-<!-- last update: 2016-07-08 16:12:05.057701 -->
\ No newline at end of file
+<!-- last update: 2016-08-05 12:35:11.090368 -->
\ No newline at end of file

Modified: websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/properties/index.html
==============================================================================
--- websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/properties/index.html (original)
+++ websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/properties/index.html Fri Aug  5 12:39:52 2016
@@ -282,8 +282,21 @@
             <li class="second-level"><a href="#data-types">Data Types</a></li>
             
         
+            <li class="second-level"><a href="#properties">Properties</a></li>
+            
+                <li class="third-level"><a href="#retrieving-properties">Retrieving Properties</a></li>
+            
+                <li class="third-level"><a href="#setting-properties">Setting Properties</a></li>
+            
+        
             <li class="second-level"><a href="#secondary-types">Secondary Types</a></li>
             
+                <li class="third-level"><a href="#setting-secondary-types">Setting Secondary Types</a></li>
+            
+                <li class="third-level"><a href="#adding-secondary-types">Adding Secondary Types</a></li>
+            
+                <li class="third-level"><a href="#removing-secondary-types">Removing Secondary Types</a></li>
+            
         
     
     </ul>
@@ -294,7 +307,8 @@
 <h2 id="data-types">Data Types</h2>
 <p><span class="cmis">CMIS 1.0</span>
 <span class="cmis">CMIS 1.1</span></p>
-<p>The table below shows how the CMIS data types are mapped to Java and C# data types.</p>
+<p>The table below shows how the CMIS data types are mapped to Java and C# data types.
+Multi-value property values are set and returned as lists of these data types.</p>
 <table>
 <thead>
 <tr>
@@ -311,7 +325,7 @@
 </tr>
 <tr>
 <td><strong>boolean</strong></td>
-<td><strong>boolean</strong></td>
+<td><strong>Boolean</strong></td>
 <td><strong>bool</strong></td>
 </tr>
 <tr>
@@ -346,9 +360,268 @@
 </tr>
 </tbody>
 </table>
+<h2 id="properties">Properties</h2>
+<h3 id="retrieving-properties">Retrieving Properties</h3>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>Only the properties that have been requested are available. Use an <a href="../operation-context/index.html#property-filter">Operation Context</a> to define, which properties should be provided by the repository.</p>
+</div>
+<p>The value of a property that is not set, has not been provided by the repository, or of a property that does not exits is <code>null</code>.</p>
+<p class="opencmis">OpenCMIS (Java)</p>
+<pre><code class="java">Document doc = ...
+
+// properties defined in the CMIS specification have getters (here are just a few examples)
+String id = doc.getId();
+String name = doc.getName();
+String creator = doc.getCreatedBy();
+GregorianCalendar lastModification = doc.getLastModificationDate();
+
+
+// all property values can be accessed by their property ID
+String name2 = doc.getPropertyValue(&quot;cmis:name&quot;);
+BigInteger projectNumber = doc.getPropertyValue(&quot;project:number&quot;);
+
+// multi value property values are always returned as lists
+List&lt;String&gt; colors = doc.getPropertyValue(&quot;project:colors&quot;);
+
+
+// there is detailed information about a property available for generic clients
+Property&lt;String&gt; nameProp = doc.getProperty(&quot;cmis:name&quot;);
+PropertyType namePropType = nameProp.getType();
+boolean nameMultiValued = nameProp.isMultiValued();
+String name3 = nameProp.getValue();
+
+Property&lt;Boolean&gt; lightsProp = doc.getProperty(&quot;lights:on&quot;);
+PropertyType lightsPropType = lightsProp.getType();
+boolean lightsMultiValued = lightsProp.isMultiValued();
+Boolean lightsValue = lightsProp.getValue();
+</code></pre>
+
+<p class="portcmis">PortCMIS (C#)</p>
+<pre><code class="csharp">IDocument doc = ...
+
+// properties defined in the CMIS specification have getters (here are just a few examples)
+string id = doc.Id;
+string name = doc.Name;
+string creator = doc.CreatedBy;
+DateTime? lastModification = doc.LastModificationDate;
+
+// all property values can be accessed by their property ID
+string name2 = doc.GetPropertyAsStringValue(&quot;cmis:name&quot;);
+BigInteger projectNumber = (BigInteger)doc.GetPropertyValue(&quot;project:number&quot;);
+
+// multi value property values are always returned as lists
+IList&lt;string&gt; colors = (IList&lt;string&gt;)doc.GetPropertyValue(&quot;project:colors&quot;);
+
+// there is detailed information about a property available for generic clients
+IProperty nameProp = doc[&quot;cmis:name&quot;];
+PropertyType? namePropType = nameProp.PropertyType;
+bool nameMultiValued = nameProp.IsMultiValued;
+string name3 = (string)nameProp.Value;
+
+IProperty lightsProp = doc[&quot;lights:on&quot;];
+PropertyType? lightsPropType = lightsProp.PropertyType;
+bool lightsMultiValued = lightsProp.IsMultiValued;
+bool? lightsValue = (bool?)lightsProp.Value;
+
+</code></pre>
+
+<h3 id="setting-properties">Setting Properties</h3>
+<p>Before OpenCMIS or PortCMIS sends properties to a repository, it checks the type definition whether the properties exist or not, if the data types match, and if multi-value properties contain <code>null</code> values. If it detects a problem, it throws an exception before it sends anything to the repository.</p>
+<p>If a property cannot be set, for example because it is a read-only property, OpenCMIS or PortCMIS silently filters out the property. The value is not sent to the repository.</p>
+<p class="opencmis">OpenCMIS (Java)</p>
+<pre><code class="java">Map&lt;String, Object&gt; properties = new HashMap&lt;String, Object&gt;();
+
+// adding single value properties
+properties.put(PropertyIds.NAME, &quot;the-tower&quot;);
+properties.put(&quot;project:number&quot;, 1234);
+properties.put(&quot;project:now&quot;, new GregorianCalendar());
+properties.put(&quot;project:onTime&quot;, true);
+properties.put(&quot;project:budget&quot;, new BigDecimal(&quot;654321.98&quot;));
+
+// adding a multi value property
+List&lt;String&gt; colors = new ArrayList&lt;String&gt;();
+colors.add(&quot;red&quot;);
+colors.add(&quot;green&quot;);
+colors.add(&quot;blue&quot;);
+
+properties.put(&quot;project:colors&quot;, colors); 
+
+// unsetting a property
+properties.put(&quot;project:something&quot;, null);
+
+// call create... or update...
+</code></pre>
+
+<p class="portcmis">PortCMIS (C#)</p>
+<pre><code class="csharp">IDictionary&lt;string, object&gt; properties = new Dictionary&lt;string, object&gt;();
+
+// adding single value properties
+properties[PropertyIds.Name] = &quot;the-tower&quot;;
+properties[&quot;project:number&quot;] = 1234;
+properties[&quot;project:now&quot;] = DateTime.Now;
+properties[&quot;project:onTime&quot;] = true;
+properties[&quot;project:budget&quot;] = 654321.98M;
+
+// adding a multi value property
+IList&lt;string&gt; colors = new List&lt;string&gt;();
+colors.Add(&quot;red&quot;);
+colors.Add(&quot;green&quot;);
+colors.Add(&quot;blue&quot;);
+
+properties[&quot;project:colors&quot;] = colors; 
+
+// unsetting a property
+properties[&quot;project:something&quot;] = null;
+
+// call Create... or Update...
+</code></pre>
+
 <h2 id="secondary-types">Secondary Types</h2>
 <p><span class="cmis">CMIS 1.1</span>
-<span class="spec">Spec 2.1.19</span></p></div>
+<span class="spec">Spec 2.1.19</span></p>
+<p>Secondary types can be added during creation of an object and later added and removed by updating its properties.</p>
+<p>In general, secondary types can be added and removed at any time.
+But a repository may have rules and constraints that prevents a client from making those changes.</p>
+<h3 id="setting-secondary-types">Setting Secondary Types</h3>
+<p class="opencmis">OpenCMIS (Java)</p>
+<pre><code class="java">Folder parent = ...
+
+Map&lt;String, Object&gt; properties = new HashMap&lt;String, Object&gt;();
+
+// set standard CMIS properties
+properties.put(PropertyIds.NAME, &quot;MyNewDocument&quot;);
+properties.put(PropertyIds.OBJECT_TYPE_ID, &quot;cmis:document&quot;);
+
+// add two secondary types
+List&lt;String&gt; secondaryTypes = new ArrayList&lt;String&gt;();
+secondaryTypes.add(&quot;custom:classifictaion&quot;);
+secondaryTypes.add(&quot;custom:draft&quot;);
+
+properties.put(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, secondaryTypes);
+
+// set secondary type properties
+properties.put(&quot;classifictaion&quot;, &quot;confidential&quot;);
+properties.put(&quot;draftState&quot;, &quot;early&quot;);
+
+ContentStream contentStream = ...
+
+// create the document
+Document newDoc = parent.createDocument(properties, contentStream, VersioningState.NONE);
+</code></pre>
+
+<p class="portcmis">PortCMIS (C#)</p>
+<pre><code class="csharp">IFolder parent = ...
+
+IDictionary&lt;string, object&gt; properties = new Dictionary&lt;string, object&gt;();
+
+// set standard CMIS properties
+properties[PropertyIds.Name] = &quot;MyNewDocument&quot;;
+properties[PropertyIds.ObjectTypeId] = &quot;cmis:document&quot;;
+
+// add two secondary types
+IList&lt;string&gt; secondaryTypes = new List&lt;string&gt;();
+secondaryTypes.Add(&quot;custom:classifictaion&quot;);
+secondaryTypes.Add(&quot;custom:draft&quot;);
+
+properties[PropertyIds.SecondaryObjectTypeIds] = secondaryTypes;
+
+// set secondary type properties
+properties[&quot;classifictaion&quot;] = &quot;confidential&quot;;
+properties[&quot;draftState&quot;] = &quot;early&quot;;
+
+ContentStream contentStream = ...
+
+// create the document
+IDocument newDoc = parent.CreateDocument(properties, contentStream, VersioningState.None);
+</code></pre>
+
+<h3 id="adding-secondary-types">Adding Secondary Types</h3>
+<p class="opencmis">OpenCMIS (Java)</p>
+<pre><code class="java">CmisObject cmisObject = ...
+
+// get current list of secondary types
+List&lt;String&gt; secondaryTypes = doc.getPropertyValue(PropertyIds.SECONDARY_OBJECT_TYPE_IDS);
+if (secondaryTypes == null) {
+    secondaryTypes = new ArrayList&lt;String&gt;();
+}
+
+Map&lt;String, Object&gt; properties = new HashMap&lt;String, Object&gt;();
+
+// add the new secondary type
+secondaryTypes.add(&quot;custom:classifictaion&quot;);
+properties.put(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, secondaryTypes);
+
+// set secondary type property
+properties.put(&quot;classifictaion&quot;, &quot;public&quot;);
+
+// update
+cmisObject.updateProperties(properties);
+
+</code></pre>
+
+<p class="portcmis">PortCMIS (C#)</p>
+<pre><code class="csharp">ICmisObject cmisObject = ...
+
+// get current list of secondary types
+IList&lt;string&gt; secondaryTypes = (IList&lt;string&gt;)doc.GetPropertyValue(PropertyIds.SecondaryObjectTypeIds);
+if (secondaryTypes == null) {
+    secondaryTypes = new List&lt;string&gt;();
+}
+
+IDictonary&lt;string, object&gt; properties = new Dictonary&lt;string, object&gt;();
+
+// add the new secondary type
+secondaryTypes.Add(&quot;custom:classifictaion&quot;);
+properties[PropertyIds.SecondaryObjectTypeIds] = secondaryTypes;
+
+// set secondary type property
+properties[&quot;classifictaion&quot;] = &quot;public&quot;;
+
+// update
+cmisObject.UpdateProperties(properties);
+</code></pre>
+
+<h3 id="removing-secondary-types">Removing Secondary Types</h3>
+<p class="opencmis">OpenCMIS (Java)</p>
+<pre><code class="java">CmisObject cmisObject = ...
+
+// get the current list of secondary types
+List&lt;String&gt; secondaryTypes = doc.getPropertyValue(PropertyIds.SECONDARY_OBJECT_TYPE_IDS);
+if (secondaryTypes == null || !secondaryTypes.contains(&quot;custom:classifictaion&quot;)) {
+    // there is nothing to remove
+    return;
+}
+
+Map&lt;String, Object&gt; properties = new HashMap&lt;String, Object&gt;();
+
+// remove the new secondary type
+secondaryTypes.remove(&quot;custom:classifictaion&quot;);
+properties.put(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, secondaryTypes);
+
+// update
+cmisObject.updateProperties(properties);
+</code></pre>
+
+<p class="portcmis">PortCMIS (C#)</p>
+<pre><code class="csharp">ICmisObject cmisObject = ...
+
+// get current list of secondary types
+IList&lt;string&gt; secondaryTypes = (IList&lt;string&gt;)doc.GetPropertyValue(PropertyIds.SecondaryObjectTypeIds);
+if (secondaryTypes == null || !secondaryTypes.Contains(&quot;custom:classifictaion&quot;)) {
+    // there is nothing to remove
+    return;
+}
+
+IDictionary&lt;string, object&gt; properties = new Dictionary&lt;string, object&gt;();
+
+// remove the secondary type
+secondaryTypes.Remove(&quot;custom:classifictaion&quot;);
+properties[PropertyIds.SecondaryObjectTypeIds] = secondaryTypes;
+
+// update
+cmisObject.UpdateProperties(properties);
+</code></pre></div>
         
     </div>
 
@@ -398,4 +671,4 @@
     </body>
 
 </html>
-<!-- last update: 2016-07-08 16:12:05.017344 -->
\ No newline at end of file
+<!-- last update: 2016-08-05 12:35:11.047021 -->
\ No newline at end of file

Modified: websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/queries/index.html
==============================================================================
--- websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/queries/index.html (original)
+++ websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/queries/index.html Fri Aug  5 12:39:52 2016
@@ -398,4 +398,4 @@ ItemIterable&lt;QueryResult&gt; results
     </body>
 
 </html>
-<!-- last update: 2016-07-08 16:12:05.112078 -->
\ No newline at end of file
+<!-- last update: 2016-08-05 12:35:11.143083 -->
\ No newline at end of file

Modified: websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/retention/index.html
==============================================================================
--- websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/retention/index.html (original)
+++ websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/retention/index.html Fri Aug  5 12:39:52 2016
@@ -347,4 +347,4 @@
     </body>
 
 </html>
-<!-- last update: 2016-07-08 16:12:05.174412 -->
\ No newline at end of file
+<!-- last update: 2016-08-05 12:35:11.202881 -->
\ No newline at end of file

Modified: websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/retrieve-objects/index.html
==============================================================================
--- websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/retrieve-objects/index.html (original)
+++ websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/retrieve-objects/index.html Fri Aug  5 12:39:52 2016
@@ -503,4 +503,4 @@ ICmisObject cmisObject = Session.GetObje
     </body>
 
 </html>
-<!-- last update: 2016-07-08 16:12:04.805419 -->
\ No newline at end of file
+<!-- last update: 2016-08-05 12:35:10.823095 -->
\ No newline at end of file

Modified: websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/types/index.html
==============================================================================
--- websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/types/index.html (original)
+++ websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/types/index.html Fri Aug  5 12:39:52 2016
@@ -451,4 +451,4 @@ IObjectType updatedType = session.Update
     </body>
 
 </html>
-<!-- last update: 2016-07-08 16:12:04.743168 -->
\ No newline at end of file
+<!-- last update: 2016-08-05 12:35:10.765465 -->
\ No newline at end of file

Modified: websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/update-objects/index.html
==============================================================================
--- websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/update-objects/index.html (original)
+++ websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/update-objects/index.html Fri Aug  5 12:39:52 2016
@@ -418,4 +418,4 @@ List&lt;BulkUpdateObjectIdAndChangeToken
     </body>
 
 </html>
-<!-- last update: 2016-07-08 16:12:04.873054 -->
\ No newline at end of file
+<!-- last update: 2016-08-05 12:35:10.885852 -->
\ No newline at end of file

Modified: websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/versions/index.html
==============================================================================
--- websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/versions/index.html (original)
+++ websites/staging/chemistry/trunk/content/docs/cmis-samples/samples/versions/index.html Fri Aug  5 12:39:52 2016
@@ -484,4 +484,4 @@ IObjectId newVersionId = pwc.CheckIn(tru
     </body>
 
 </html>
-<!-- last update: 2016-07-08 16:12:04.993067 -->
\ No newline at end of file
+<!-- last update: 2016-08-05 12:35:11.004872 -->
\ No newline at end of file



Mime
View raw message