h2. CMIS Component
*Available as of Camel 2.11*

The cmis component allows you to add/read nodes to/from a CMIS compliant content repository (for example, Alfresco).

h3. URI Format
{code}
cmis://cmisServerUrl[?options]
{code}
You can append query options to the URI in the following format, ?options=value&option2=value&...

h3. URI Options
|| Name || Default Value || Context || Description ||
|queryMode | {{false}} | Producer | If true, will execute the cmis query from the message body and return result, otherwise will create a node in the cmis repository |
|query | {{String}} | Consumer | The cmis query to execute against the repository. If not specified, the consumer will retrieve every node from the content repository by iterating the content tree recursively |
|username | {{null}} | Both | Username for the cmis repository |
|password | {{null}} | Both | Password for the cmis repository |
|repositoryId | {{null}} | Both | The Id of the repository to use. If not specified the first available repository is used |
|pageSize | {{100}} | Both | Number of nodes to retrieve per page |
|readCount | {{0}} | Both | Max number of nodes to read |
|readContent | {{false}} | Both | If set to true, the content of document node will be retrieved in addition to the properties|

h3. Usage
h4. Message headers evaluated by the producer
{div:class=confluenceTableSmall}
|| Header || Default Value || Description ||
| {{CamelCMISFolderPath}} | {{/}} | The current folder to use during the execution. If not specified will use the root folder |
| {{CamelCMISRetrieveContent}} | {{false}} | In {{queryMode}} this header will force the producer to retrieve the content of document nodes. |
| {{CamelCMISReadSize}} | {{0}} | Max number of nodes to read.|
| {{cmis:path}} | {{null}} | If {{CamelCMISFolderPath}} is not set, will try to find out the path of the node from this cmis property and it is name|
| {{cmis:name}} | {{null}} | If {{CamelCMISFolderPath}} is not set, will try to find out the path of the node from this cmis property and it is path|
| {{cmis:objectTypeId}} | {{null}} | The type of the node |
| {{cmis:contentStreamMimeType}} | {{null}} | The mimetype to set for a document |
{div}

h4. Message headers set during querying Producer operation
{div:class=confluenceTableSmall}
|| Header || Type || Description ||
| {{CamelCMISResultCount}} | {{Integer}} | Number of nodes returned from the query. |
{div}
The message body will contain a list of maps, where each entry in the map is cmis property and its value. 
If {{CamelCMISRetrieveContent}} header is set to true, one additional entry in the map with key {{CamelCMISContent}} will contain {{InputStream}} of the document type of nodes.  
h3. Dependencies
Maven users will need to add the following dependency to their pom.xml.
{code:xml|title=pom.xml}
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-cmis</artifactId>
    <version>${camel-version}</version>
</dependency>
{code}

where {{$\{camel-version\}}} must be replaced by the actual version of Camel (2.11 or higher).

{include:Endpoint See Also}