MVEL (http://mvel.codehaus.org/) is a Java-based dynamic language
that is similar to OGNL, but is reported to be much faster. The MVEL support is in the
camel-mvel
module.
You use the MVEL dot syntax to invoke Java methods, for example:
getRequest().getBody().getFamilyName()
Because MVEL is dynamically typed, it is unnecessary to cast the message body instance (of
Object
type) before invoking the getFamilyName()
method. You can
also use an abbreviated syntax for invoking bean attributes, for example:
request.body.familyName
To use MVEL in your routes you need to add a dependency on
camel-mvel
to your project as shown in
Example 10.1.
Example 10.1. Adding the camel-mvel dependency
<!-- Maven POM File --> <properties> <camel-version>2.8.0-fuse-00-08</camel-version> ... </properties> <dependencies> ... <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-mvel</artifactId> <version>${camel-version}</version> </dependency> ... </dependencies>
Table 10.1 lists the built-in variables that are accessible when using MVEL.
Table 10.1. MVEL variables
Name | Type | Description |
---|---|---|
this | org.apache.camel.Exchange | The current Exchange |
exchange | org.apache.camel.Exchange | The current Exchange |
exception | Throwable | the Exchange exception (if any) |
exchangeID | String | the Exchange ID |
fault | org.apache.camel.Message | The Fault message(if any) |
request | org.apache.camel.Message | The IN message |
response | org.apache.camel.Message | The OUT message |
properties | Map | The Exchange properties |
property( | Object | The value of the named Exchange property |
property( |
| The typed value of the named Exchange property |
Example 10.2 shows a route that uses MVEL.
Example 10.2. Route using MVEL
<camelContext> <route> <from uri="seda:foo"/> <filter> <language langauge="mvel">request.headers.foo == 'bar'</language> <to uri="seda:bar"/> </filter> </route> </camelContext>