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 && 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<Something> 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<IDocument> 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("cmis:name");
+BigInteger projectNumber = doc.getPropertyValue("project:number");
+
+// multi value property values are always returned as lists
+List<String> colors = doc.getPropertyValue("project:colors");
+
+
+// there is detailed information about a property available for generic clients
+Property<String> nameProp = doc.getProperty("cmis:name");
+PropertyType namePropType = nameProp.getType();
+boolean nameMultiValued = nameProp.isMultiValued();
+String name3 = nameProp.getValue();
+
+Property<Boolean> lightsProp = doc.getProperty("lights:on");
+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("cmis:name");
+BigInteger projectNumber =
(BigInteger)doc.GetPropertyValue("project:number");
+
+// multi value property values are always returned as lists
+IList<string> colors =
(IList<string>)doc.GetPropertyValue("project:colors");
+
+// there is detailed information about a property available for generic clients
+IProperty nameProp = doc["cmis:name"];
+PropertyType? namePropType = nameProp.PropertyType;
+bool nameMultiValued = nameProp.IsMultiValued;
+string name3 = (string)nameProp.Value;
+
+IProperty lightsProp = doc["lights:on"];
+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<String, Object> properties = new
HashMap<String, Object>();
+
+// adding single value properties
+properties.put(PropertyIds.NAME, "the-tower");
+properties.put("project:number", 1234);
+properties.put("project:now", new GregorianCalendar());
+properties.put("project:onTime", true);
+properties.put("project:budget", new
BigDecimal("654321.98"));
+
+// adding a multi value property
+List<String> colors = new ArrayList<String>();
+colors.add("red");
+colors.add("green");
+colors.add("blue");
+
+properties.put("project:colors", colors);
+
+// unsetting a property
+properties.put("project:something", null);
+
+// call create... or update...
+</code></pre>
+
+<p class="portcmis">PortCMIS (C#)</p>
+<pre><code class="csharp">IDictionary<string, object> properties = new
Dictionary<string, object>();
+
+// adding single value properties
+properties[PropertyIds.Name] = "the-tower";
+properties["project:number"] = 1234;
+properties["project:now"] = DateTime.Now;
+properties["project:onTime"] = true;
+properties["project:budget"] = 654321.98M;
+
+// adding a multi value property
+IList<string> colors = new List<string>();
+colors.Add("red");
+colors.Add("green");
+colors.Add("blue");
+
+properties["project:colors"] = colors;
+
+// unsetting a property
+properties["project:something"] = 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<String, Object> properties = new HashMap<String, Object>();
+
+// set standard CMIS properties
+properties.put(PropertyIds.NAME, "MyNewDocument");
+properties.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document");
+
+// add two secondary types
+List<String> secondaryTypes = new ArrayList<String>();
+secondaryTypes.add("custom:classifictaion");
+secondaryTypes.add("custom:draft");
+
+properties.put(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, secondaryTypes);
+
+// set secondary type properties
+properties.put("classifictaion", "confidential");
+properties.put("draftState", "early");
+
+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<string, object> properties = new Dictionary<string,
object>();
+
+// set standard CMIS properties
+properties[PropertyIds.Name] = "MyNewDocument";
+properties[PropertyIds.ObjectTypeId] = "cmis:document";
+
+// add two secondary types
+IList<string> secondaryTypes = new List<string>();
+secondaryTypes.Add("custom:classifictaion");
+secondaryTypes.Add("custom:draft");
+
+properties[PropertyIds.SecondaryObjectTypeIds] = secondaryTypes;
+
+// set secondary type properties
+properties["classifictaion"] = "confidential";
+properties["draftState"] = "early";
+
+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<String> secondaryTypes =
doc.getPropertyValue(PropertyIds.SECONDARY_OBJECT_TYPE_IDS);
+if (secondaryTypes == null) {
+ secondaryTypes = new ArrayList<String>();
+}
+
+Map<String, Object> properties = new HashMap<String, Object>();
+
+// add the new secondary type
+secondaryTypes.add("custom:classifictaion");
+properties.put(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, secondaryTypes);
+
+// set secondary type property
+properties.put("classifictaion", "public");
+
+// 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<string> secondaryTypes =
(IList<string>)doc.GetPropertyValue(PropertyIds.SecondaryObjectTypeIds);
+if (secondaryTypes == null) {
+ secondaryTypes = new List<string>();
+}
+
+IDictonary<string, object> properties = new Dictonary<string,
object>();
+
+// add the new secondary type
+secondaryTypes.Add("custom:classifictaion");
+properties[PropertyIds.SecondaryObjectTypeIds] = secondaryTypes;
+
+// set secondary type property
+properties["classifictaion"] = "public";
+
+// 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<String> secondaryTypes =
doc.getPropertyValue(PropertyIds.SECONDARY_OBJECT_TYPE_IDS);
+if (secondaryTypes == null ||
!secondaryTypes.contains("custom:classifictaion")) {
+ // there is nothing to remove
+ return;
+}
+
+Map<String, Object> properties = new HashMap<String, Object>();
+
+// remove the new secondary type
+secondaryTypes.remove("custom:classifictaion");
+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<string> secondaryTypes =
(IList<string>)doc.GetPropertyValue(PropertyIds.SecondaryObjectTypeIds);
+if (secondaryTypes == null ||
!secondaryTypes.Contains("custom:classifictaion")) {
+ // there is nothing to remove
+ return;
+}
+
+IDictionary<string, object> properties = new Dictionary<string,
object>();
+
+// remove the secondary type
+secondaryTypes.Remove("custom:classifictaion");
+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<QueryResult> 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<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