# The Object-Graph Navigation Language(OGNL)

## Overview

MVEL (http://www.opensymphony.com/ognl/) is an expression language for getting and setting properties of Java objects. You use the same expression for both getting and setting the value of a property. The OGNL support is in the `camel-ognl` module.

## Adding the OGNL module

To use OGNL in your routes you need to add a dependency on `camel-ognl` to your project as shown in Example 11, “Adding the camel-ognl dependency”.

Example 11. Adding the camel-ognl dependency

    <!-- Maven POM File -->
    ...
    <dependencies>
      ...
      <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-ognl</artifactId>
        <version>${camel-version}</version>
      </dependency>
      ...
    </dependencies>

## Built-in variables

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

Table 6. OGNL 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 12, “Route using OGNL” shows a route that uses OGNL.

Example 12. Route using OGNL

    <camelContext>
      <route>
        <from uri="seda:foo"/>
        <filter>
          <language langauge="ognl">request.headers.foo == 'bar'</language>
          <to uri="seda:bar"/>
        </filter>
      </route>
    </camelContext>