[[CMIS-CMISComponent]]
CMIS Component
~~~~~~~~~~~~~~

*Available as of Camel 2.11* +
 The cmis component uses the
http://chemistry.apache.org/java/opencmis.html[Apache Chemistry] client
API and allows you to add/read nodes to/from a CMIS compliant content
repositories.

[[CMIS-URIFormat]]
URI Format
^^^^^^^^^^

[source,java]
------------------------------
cmis://cmisServerUrl[?options]
------------------------------

You can append query options to the URI in the following format,
?options=value&option2=value&...

[[CMIS-URIOptions]]
URI Options
^^^^^^^^^^^

[width="100%",cols="10%,10%,10%,70%",options="header",]
|=======================================================================
|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
|=======================================================================

[[CMIS-Usage]]
Usage
^^^^^

[[CMIS-Messageheadersevaluatedbytheproducer]]
Message headers evaluated by the producer
+++++++++++++++++++++++++++++++++++++++++

[width="100%",cols="10%,10%,80%",options="header",]
|=======================================================================
|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
|=======================================================================

[[CMIS-MessageheaderssetduringqueryingProduceroperation]]
Message headers set during querying Producer operation
++++++++++++++++++++++++++++++++++++++++++++++++++++++

[width="100%",cols="10%,10%,80%",options="header",]
|=======================================================================
|Header |Type |Description

|`CamelCMISResultCount` |`Integer` |Number of nodes returned from the query.
|=======================================================================

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.

[[CMIS-Dependencies]]
Dependencies
^^^^^^^^^^^^

Maven users will need to add the following dependency to their pom.xml.

*pom.xml*

[source,xml]
---------------------------------------
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-cmis</artifactId>
    <version>${camel-version}</version>
</dependency>
---------------------------------------

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

[[CMIS-SeeAlso]]
See Also
^^^^^^^^

* link:configuring-camel.html[Configuring Camel]
* link:component.html[Component]
* link:endpoint.html[Endpoint]
* link:getting-started.html[Getting Started]

