| [[ognl-language]] |
| = OGNL Language |
| :page-source: components/camel-ognl/src/main/docs/ognl-language.adoc |
| |
| *Since Camel 1.1* |
| |
| Camel allows http://commons.apache.org/proper/commons-ognl/[OGNL] to be |
| used as an Expression or |
| Predicate the DSL or |
| Xml Configuration. |
| |
| You could use OGNL to create an Predicate in a |
| Message Filter or as an |
| Expression for a |
| Recipient List |
| |
| You can use OGNL dot notation to invoke operations. If you for instance |
| have a body that contains a POJO that has a `getFamilyName` method then |
| you can construct the syntax as follows: |
| |
| [source,java] |
| ---------------------------------------- |
| "request.body.familyName" |
| // or |
| "getRequest().getBody().getFamilyName()" |
| ---------------------------------------- |
| |
| == OGNL Options |
| |
| |
| // language options: START |
| The OGNL language supports 1 options, which are listed below. |
| |
| |
| |
| [width="100%",cols="2,1m,1m,6",options="header"] |
| |=== |
| | Name | Default | Java Type | Description |
| | trim | true | Boolean | Whether to trim the value to remove leading and trailing whitespaces and line breaks |
| |=== |
| // language 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-ognl-starter</artifactId> |
| <version>x.x.x</version> |
| <!-- use the same version as your Camel core version --> |
| </dependency> |
| ---- |
| |
| |
| The component supports 2 options, which are listed below. |
| |
| |
| |
| [width="100%",cols="2,5,^1,2",options="header"] |
| |=== |
| | Name | Description | Default | Type |
| | *camel.language.ognl.enabled* | Enable ognl language | true | Boolean |
| | *camel.language.ognl.trim* | Whether to trim the value to remove leading and trailing whitespaces and line breaks | true | Boolean |
| |=== |
| // spring-boot-auto-configure options: END |
| |
| |
| |
| |
| == Variables |
| |
| [width="100%",cols="10%,10%,80%",options="header",] |
| |======================================================================= |
| |Variable |Type |Description |
| |
| |*this* |Exchange |the Exchange is the root object |
| |
| |exchange |Exchange |the Exchange object |
| |
| |exception |Throwable |the Exchange exception (if any) |
| |
| |exchangeId |String |the exchange id |
| |
| |fault |Message |the Fault message (if any) |
| |
| |request |Message |the exchange.in message |
| |
| |response |Message |the exchange.out message (if any) |
| |
| |properties |Map |the exchange properties |
| |
| |property(name) |Object |the property by the given name |
| |
| |property(name, type) |Type |the property by the given name as the given type |
| |======================================================================= |
| |
| == Samples |
| |
| For example you could use OGNL inside a xref:manual::filter-eip.adoc[Message |
| Filter] in XML |
| |
| [source,java] |
| --------------------------------------------- |
| <route> |
| <from uri="seda:foo"/> |
| <filter> |
| <ognl>request.headers.foo == 'bar'</ognl> |
| <to uri="seda:bar"/> |
| </filter> |
| </route> |
| --------------------------------------------- |
| |
| And the sample using Java DSL: |
| |
| [source,java] |
| --------------------------------------------------------------------------------- |
| from("seda:foo").filter().ognl("request.headers.foo == 'bar'").to("seda:bar"); |
| --------------------------------------------------------------------------------- |
| |
| == Loading script from external resource |
| |
| *Since 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").ognl("resource:classpath:myognl.txt") |
| ------------------------------------------------------------ |
| |
| == Dependencies |
| |
| To use OGNL in your camel routes you need to add the a dependency on |
| *camel-ognl* which implements the OGNL 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 |
| the download page for the latest versions). |
| |
| [source,java] |
| ------------------------------------- |
| <dependency> |
| <groupId>org.apache.camel</groupId> |
| <artifactId>camel-ognl</artifactId> |
| <version>x.x.x</version> |
| </dependency> |
| ------------------------------------- |
| |
| Otherwise, you'll also need |
| http://repo2.maven.org/maven2/org/apache/servicemix/bundles/org.apache.servicemix.bundles.ognl/2.7.3_4/org.apache.servicemix.bundles.ognl-2.7.3_4.jar[OGNL] |