[[cmis-component]]
= CMIS Component
:page-source: components/camel-cmis/src/main/docs/cmis-component.adoc

*Since Camel 2.11*

// HEADER START
*Both producer and consumer is supported*
// HEADER END

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.

== URI Format

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

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

== CMIS Options


// component options: START
The CMIS component supports 4 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *sessionFacadeFactory* (common) | To use a custom CMISSessionFacadeFactory to create the CMISSessionFacade instances |  | CMISSessionFacadeFactory
| *basicPropertyBinding* (advanced) | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | boolean
| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
|===
// component options: END



// endpoint options: START
The CMIS endpoint is configured using URI syntax:

----
cmis:cmsUrl
----

with the following path and query parameters:

=== Path Parameters (1 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *cmsUrl* | *Required* URL to the cmis repository |  | String
|===


=== Query Parameters (15 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *pageSize* (common) | Number of nodes to retrieve per page | 100 | int
| *readContent* (common) | If set to true, the content of document node will be retrieved in addition to the properties | false | boolean
| *readCount* (common) | Max number of nodes to read |  | int
| *repositoryId* (common) | The Id of the repository to use. If not specified the first available repository is used |  | String
| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
| *query* (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 |  | String
| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | boolean
| *queryMode* (producer) | If true, will execute the cmis query from the message body and return result, otherwise will create a node in the cmis repository | false | boolean
| *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
| *sessionFacadeFactory* (advanced) | To use a custom CMISSessionFacadeFactory to create the CMISSessionFacade instances |  | CMISSessionFacadeFactory
| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
| *password* (security) | Password for the cmis repository |  | String
| *username* (security) | Username for the cmis repository |  | String
|===
// endpoint options: END
// spring-boot-auto-configure options: START
== Spring Boot Auto-Configuration

When using Spring Boot make sure to use the following Maven dependency to have support for auto configuration:

[source,xml]
----
<dependency>
  <groupId>org.apache.camel.springboot</groupId>
  <artifactId>camel-cmis-starter</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>
----


The component supports 5 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *camel.component.cmis.basic-property-binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | Boolean
| *camel.component.cmis.bridge-error-handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | Boolean
| *camel.component.cmis.enabled* | Whether to enable auto configuration of the cmis component. This is enabled by default. |  | Boolean
| *camel.component.cmis.lazy-start-producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | Boolean
| *camel.component.cmis.session-facade-factory* | To use a custom CMISSessionFacadeFactory to create the CMISSessionFacade instances. The option is a org.apache.camel.component.cmis.CMISSessionFacadeFactory type. |  | String
|===
// spring-boot-auto-configure options: END



== Usage

=== 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
|=======================================================================

=== 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.

== 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).

