Chapter 23. MVEL
Overview
MVEL 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.
Syntax
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
Adding the MVEL module
To use MVEL in your routes you need to add a dependency on camel-mvel
to your project as shown in Example 23.1, “Adding the camel-mvel dependency”.
Example 23.1. Adding the camel-mvel dependency
<!-- Maven POM File --> <properties> <camel-version>2.21.0.fuse-760027-redhat-00001</camel-version> ... </properties> <dependencies> ... <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-mvel</artifactId> <version>${camel-version}</version> </dependency> ... </dependencies>
Built-in variables
Table 23.1, “MVEL variables” lists the built-in variables that are accessible when using MVEL.
Name | Type | Description |
---|---|---|
|
| The current Exchange |
|
| The current Exchange |
|
| the Exchange exception (if any) |
|
| the Exchange ID |
|
| The Fault message(if any) |
|
| The IN message |
|
| The OUT message |
|
| The Exchange properties |
|
| The value of the named Exchange property |
|
| The typed value of the named Exchange property |
Example
Example 23.2, “Route using MVEL” shows a route that uses MVEL.
Example 23.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>