OGNL
Camel allows 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 getFamiliyName
method then you can construct the syntax as follows:
Code Block |
---|
"request.body.familyName" // or "getRequest().getBody().getFamilyName()" |
Variables
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 Message Filter in XML
Code Block |
---|
<route> <from uri="seda:foo"/> <filter> <ognl>request.headers.foo == 'bar'</ognl> <to uri="seda:bar"/> </filter> </route> |
And the sample using Java DSL:
Code Block | ||||
---|---|---|---|---|
| ||||
from("seda:foo").filter().ognl("request.headers.foo == 'bar'").to("seda:bar"); |
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:
Code Block |
---|
.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).
Code Block |
---|
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-ognl</artifactId> <version>x.x.x</version> </dependency> |
Otherwise, you'll also need OGNL