# MVEL

## Overview

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.

## 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 9, “Adding the camel-mvel dependency”.

Example 9. Adding the camel-mvel dependency

    <!-- Maven POM File -->
    <properties>
      <camel-version>2.11.0-fuse-00-xx</camel-version>
      ...
    </properties>

    <dependencies>
      ...
      <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-mvel</artifactId>
        <version>${camel-version}</version>
      </dependency>
      ...
    </dependencies>

## Built-in variables

Table 5, “MVEL variables” lists the built-in variables that are accessible when using MVEL.

Table 5. 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(`name`)` | `Object` | The value of the named Exchange property
`property(`name`, `type`)` | ``Type`` | The typed value of the named Exchange property

## Example

Example 10, “Route using MVEL” shows a route that uses MVEL.

Example 10. 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>