...
JCR
...
Component
...
The jcr
component allows you to add/read
...
nodes
...
to/from
...
a
...
JCR
...
compliant
...
content
...
repository
...
(for
...
example,
...
...
...
)
...
with
...
its
...
producer,
...
or
...
register
...
an
...
EventListener
...
with
...
the
...
consumer.
...
Maven
...
users
...
will
...
need
...
to
...
add
...
the
...
following
...
dependency
...
to
...
their
...
pom.xml
...
for
...
this
...
component:
Code Block |
---|
} <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-jcr</artifactId> <version>x.x.x</version> <!-- use the same version as your Camel core version --> </dependency> {code} h3. URI format { |
URI format
Code Block |
---|
code} jcr://user:password@repository/path/to/node {code} {tip:title=Consumer added} From *Camel |
Tip | ||
---|---|---|
| ||
From Camel 2.10 *onwards you can use consumer as an EventListener in JCR or a producer to read a node by identifier. {tip} h3. Usage The {{repository}} element of the URI is used to look up the JCR {{Repository}} object in the Camel context registry. h4. Producer {div:class=confluenceTableSmall} || Name || Default Value || Description || | {{CamelJcrOperation}} | {{CamelJcrInsert}} | CamelJcrInsert or CamelJcrGetById operation to use | | {{CamelJcrNodeName}} | {{null}} | Used to determine the node name to use. | {div} When a message is sent to a JCR producer endpoint: * If the operation is CamelJcrInsert: A new node is created in the content repository, all the message properties of the IN message are transformed to JCR {{Value}} instances and added to the new node and the node's UUID is returned in the OUT message. * If the operation is CamelJcrGetById: A new node is retrieved from the repository using the message body as node identifier. h4. Consumer The consumer will connect to JCR periodically and return a List<javax.jcr.observation.Event> in the message body. {div:class=confluenceTableSmall} || Name || Default Value || Description || | {{eventTypes}} | {{0}} | A combination of one or more event types encoded as a bit mask value such as |
Usage
The repository
element of the URI is used to look up the JCR Repository
object in the Camel context registry.
Producer
Div | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
|
When a message is sent to a JCR producer endpoint:
- If the operation is CamelJcrInsert: A new node is created in the content repository, all the message headers of the IN message are transformed to
javax.jcr.Value
instances and added to the new node and the node's UUID is returned in the OUT message. - If the operation is CamelJcrGetById: A new node is retrieved from the repository using the message body as node identifier.
Note |
---|
Please note that the JCR Producer used message properties instead of message headers in Camel versions earlier than 2.12.3. See https://issues.apache.org/jira/browse/CAMEL-7067 for more details. |
Consumer
The consumer will connect to JCR periodically and return a List<javax.jcr.observation.Event> in the message body.
Div | |||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||
|
Example
The snippet below creates a node named node
under the /home/test
node in the content repository. One additional property is added to the node as well: my.contents.property
which will contain the body of the message being sent.
Code Block |
---|
from("direct:a").setHeader(JcrConstants.JCR_NODE_NAME, constant("node"))
.setHeader("my.contents.property", body())
.to("jcr://user:pass@repository/home/test"); |
The following code will register an EventListener under the path import-application/inbox for Event.NODE_ADDED and Event.NODE_REMOVED events (event types 1 and 2, both masked as 3) and listening deep for all the children.
Code Block | ||||
---|---|---|---|---|
| ||||
| | {{deep}} | {{false}} | When it is true, events whose associated parent node is at current path or within its subgraph are received. | | {{uuids}} | {{null}} | Only events whose associated parent node has one of the identifiers in the comma separated uuid list will be received.| | {{nodeTypeNames}} | {{null}} | Only events whose associated parent node has one of the node types (or a subtype of one of the node types) in this list will be received. | | {{noLocal}} | {{false}} | If {{noLocal}} is {{true}}, then events generated by the session through which the listener was registered are ignored. Otherwise, they are not ignored. | | {{sessionLiveCheckInterval}} | {{60000}} | Interval in milliseconds to wait before each session live checking. | | {{sessionLiveCheckIntervalOnStart}} | {{3000}} | Interval in milliseconds to wait before the first session live checking. | {div} h3. Example The snippet below creates a node named {{node}} under the {{/home/test}} node in the content repository. One additional attribute is added to the node as well: {{my.contents.property}} which will contain the body of the message being sent. {snippet:id=jcr|lang=java|url=camel/trunk/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrProducerTest.java} The following code will register an EventListener under the path import-application/inbox for Event.NODE_ADDED and Event.NODE_REMOVED events (event types 1 and 2, both masked as 3) and listening deep for all the children. {code:xml} <route> <from uri="jcr://user:pass@repository/import-application/inbox?eventTypes=3&deep=true" /> <to uri="direct:execute-import-application" /> </route> {code} {include:Endpoint See Also} |
Include Page | ||||
---|---|---|---|---|
|