text: [[ognl-language]]
  = OGNL Language
  //THIS FILE IS COPIED: EDIT THE SOURCE FILE:
  :page-source: components/camel-ognl/src/main/docs/ognl-language.adoc
  :docTitle: OGNL
  :artifactId: camel-ognl
  :description: Evaluate an Apache Commons Object Graph Navigation Library (OGNL) expression against the Camel Exchange.
  :since: 1.1
  :supportLevel: Stable
  include::{cq-version}@camel-quarkus:ROOT:partial$reference/languages/ognl.adoc[]
  
  *Since Camel {since}*
  
  Camel allows http://commons.apache.org/proper/commons-ognl/[OGNL] to be
  used as an Expression or
  Predicate the DSL or
  Xml Configuration.
  
  You could use OGNL to create an Predicate in a
  Message Filter or as an
  Expression for a
  Recipient List
  
  You can use OGNL dot notation to invoke operations. If you for instance
  have a body that contains a POJO that has a `getFamilyName` method then
  you can construct the syntax as follows:
  
  [source,java]
  ----------------------------------------
  "request.body.familyName"
     // or 
  "getRequest().getBody().getFamilyName()"
  ----------------------------------------
  
  == OGNL Options
  
  
  // language options: START
  The OGNL language supports 1 options, which are listed below.
  
  
  
  [width="100%",cols="2,1m,1m,6",options="header"]
  |===
  | Name | Default | Java Type | Description
  | trim | true | Boolean | Whether to trim the value to remove leading and trailing whitespaces and line breaks
  |===
  // language options: END
  
  
  
  
  == Variables
  
  [width="100%",cols="10%,10%,80%",options="header",]
  |=======================================================================
  |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 OGNL inside a xref:{eip-vc}:eips:filter-eip.adoc[Message
  Filter] in XML
  
  [source,java]
  ---------------------------------------------
  <route>
    <from uri="seda:foo"/>
    <filter>
      <ognl>request.headers.foo == 'bar'</ognl>
      <to uri="seda:bar"/>
    </filter>
  </route>
  ---------------------------------------------
  
  And the sample using Java DSL:
  
  [source,java]
  ---------------------------------------------------------------------------------
  from("seda:foo").filter().ognl("request.headers.foo == 'bar'").to("seda:bar");
  ---------------------------------------------------------------------------------
  
  == Loading script from external resource
  
  *Since Camel 2.11*
  
  You can externalize the script and have Camel load it from a resource
  such as `"classpath:"`, `"file:"`, or `"http:"`. +
   This is done using the following syntax: `"resource:scheme:location"`,
  eg to refer to a file on the classpath you can do:
  
  [source,java]
  ------------------------------------------------------------
  .setHeader("myHeader").ognl("resource:classpath:myognl.txt")
  ------------------------------------------------------------
  
  == Dependencies
  
  To use OGNL in your camel routes you need to add the a dependency on
  *camel-ognl* which implements the OGNL 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).
  
  [source,java]
  -------------------------------------
  <dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-ognl</artifactId>
    <version>x.x.x</version>
  </dependency>
  -------------------------------------
  
  Otherwise, you'll also need
  https://repo1.maven.org/maven2/org/apache/servicemix/bundles/org.apache.servicemix.bundles.ognl/2.7.3_4/org.apache.servicemix.bundles.ognl-2.7.3_4.jar[OGNL]
  
  include::camel-spring-boot::page$ognl-starter.adoc[]
  