Mvel

Avialable in Camel 2.0

Camel allows Mvel to be used as an Expression or Predicate the DSL or Xml Configuration.

You could use Mvel to create an Predicate in a Message Filter or as an Expression for a Recipient List

You can use Mvel 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:

"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 Mvel inside a Message Filter in XML

<route>
  <from uri="seda:foo"/>
  <filter>
    <mvel>request.headers.foo == 'bar'</mvel>
    <to uri="seda:bar"/>
  </filter>
</route>

And the sample using Java DSL:

   from("seda:foo").filter().mvel("request.headers.foo == 'bar'").to("seda:bar");

Dependencies

To use Mvel in your camel routes you need to add the a dependency on camel-mvel which implements the Mvel 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).

<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-mvel</artifactId>
  <version>2.0.0</version>
</dependency>

Otherwise, you'll also need MVEL