Added camel-jxpath docs to Gitbook
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/9b69d171 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/9b69d171 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/9b69d171 Branch: refs/heads/master Commit: 9b69d1719914dc2992b6a3318624393e0b6816a9 Parents: eb51dfb Author: Andrea Cosentino <anco...@gmail.com> Authored: Tue May 3 08:46:52 2016 +0200 Committer: Andrea Cosentino <anco...@gmail.com> Committed: Tue May 3 08:59:54 2016 +0200 ---------------------------------------------------------------------- .../camel-jxpath/src/main/docs/jxpath.adoc | 150 +++++++++++++++++++ docs/user-manual/en/SUMMARY.md | 1 + 2 files changed, 151 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/9b69d171/components/camel-jxpath/src/main/docs/jxpath.adoc ---------------------------------------------------------------------- diff --git a/components/camel-jxpath/src/main/docs/jxpath.adoc b/components/camel-jxpath/src/main/docs/jxpath.adoc new file mode 100644 index 0000000..ff962f3 --- /dev/null +++ b/components/camel-jxpath/src/main/docs/jxpath.adoc @@ -0,0 +1,150 @@ +[[JXPath-JXPath]] +JXPath +~~~~~~ + +Camel supports http://commons.apache.org/jxpath/[JXPath] to allow +link:xpath.html[XPath] expressions to be used on beans in an +link:expression.html[Expression] or link:predicate.html[Predicate] to be +used in the link:dsl.html[DSL] or link:xml-configuration.html[Xml +Configuration]. For example you could use JXPath to create an +link:predicate.html[Predicate] in a link:message-filter.html[Message +Filter] or as an link:expression.html[Expression] for a +link:recipient-list.html[Recipient List]. + +You can use XPath expressions directly using smart completion in your +IDE as follows + +[source,java] +--------------------------- +from("queue:foo").filter(). + jxpath("/in/body/foo"). + to("queue:bar") +--------------------------- + +[[JXPath-Variables]] +Variables +^^^^^^^^^ + +[width="100%",cols="10%,10%,80%",options="header",] +|======================================================================= +|Variable |Type |Description + +|*this* |Exchange |the Exchange object + +|in |Message |the exchange.in message + +|out |Message |the exchange.out message +|======================================================================= + +[[JXPath-Options]] +Options +^^^^^^^ + +[width="100%",cols="10%,10%,80%",options="header",] +|======================================================================= +|Option |Type |Description + +|lenient |boolean |*Camel 2.11/2.10.5:* Allows to turn lenient on the JXPathContext. When +turned on this allows the JXPath expression to evaluate against +expressions and message bodies which may be invalid / missing data. See +more details at the +http://commons.apache.org/proper/commons-jxpath//users-guide.html#Lenient_Mode[JXPath +Documentation] This option is by default false. +|======================================================================= + +[[JXPath-UsingXMLconfiguration]] +Using XML configuration +^^^^^^^^^^^^^^^^^^^^^^^ + +If you prefer to configure your routes in your link:spring.html[Spring] +XML file then you can use JXPath expressions as follows + +[source,xml] +--------------------------------------------------------------------------------------------------------------- +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation=" + http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd + http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"> + + <camelContext id="camel" xmlns="http://activemq.apache.org/camel/schema/spring"> + <route> + <from uri="activemq:MyQueue"/> + <filter> + <jxpath>in/body/name = 'James'</xpath> + <to uri="mqseries:SomeOtherQueue"/> + </filter> + </route> + </camelContext> +</beans> +--------------------------------------------------------------------------------------------------------------- + +[[JXPath-Examples]] +Examples +^^^^^^^^ + +Here is a simple +http://svn.apache.org/repos/asf/camel/trunk/components/camel-jxpath/src/test/java/org/apache/camel/language/jxpath/JXPathFilterTest.java[example] +using a JXPath expression as a predicate in a +link:message-filter.html[Message Filter] + +[[JXPath-JXPathinjection]] +JXPath injection +~~~~~~~~~~~~~~~~ + +You can use link:bean-integration.html[Bean Integration] to invoke a +method on a bean and use various languages such as JXPath to extract a +value from the message and bind it to a method parameter. + +For example + +[source,java] +--------------------------------------------------------------------------------------------- +public class Foo { + + @MessageDriven(uri = "activemq:my.queue") + public void doSomething(@JXPath("in/body/foo") String correlationID, @Body String body) { + // process the inbound message here + } +} +--------------------------------------------------------------------------------------------- + +[[JXPath-Loadingscriptfromexternalresource]] +Loading script from external resource +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +*Available as of Camel 2.11* + +You can externalize the script and have Camel load it from a resource +such as `"classpath:"`, `"file:"`, or `"http:"`. + + This is done using the following syntax: `"resource:scheme:location"`, +eg to refer to a file on the classpath you can do: + +[source,java] +---------------------------------------------------------------- +.setHeader("myHeader").jxpath("resource:classpath:myjxpath.txt") +---------------------------------------------------------------- + +[[JXPath-Dependencies]] +Dependencies +^^^^^^^^^^^^ + +To use JXpath in your camel routes you need to add the a dependency on +*camel-jxpath* which implements the JXpath language. + +If you use maven you could just add the following to your pom.xml, +substituting the version number for the latest & greatest release (see +link:download.html[the download page for the latest versions]). + +[source,java] +--------------------------------------- +<dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-jxpath</artifactId> + <version>x.x.x</version> +</dependency> +--------------------------------------- + +Otherwise, you'll also need +http://repo2.maven.org/maven2/commons-jxpath/commons-jxpath/1.3/commons-jxpath-1.3.jar[Commons +JXPath]. http://git-wip-us.apache.org/repos/asf/camel/blob/9b69d171/docs/user-manual/en/SUMMARY.md ---------------------------------------------------------------------- diff --git a/docs/user-manual/en/SUMMARY.md b/docs/user-manual/en/SUMMARY.md index 636cd25..14bb674 100644 --- a/docs/user-manual/en/SUMMARY.md +++ b/docs/user-manual/en/SUMMARY.md @@ -197,6 +197,7 @@ * [Constant](constant.adoc) * [EL](juel.adoc) * [Jsonpath](jsonpath.adoc) + * [JXPath](jxpath.adoc) * [SQL](josql.adoc) * Data Formats