Modified: websites/production/camel/content/camel-219-release.html
==============================================================================
--- websites/production/camel/content/camel-219-release.html (original)
+++ websites/production/camel/content/camel-219-release.html Fri Dec 16 
10:21:08 2016
@@ -85,7 +85,7 @@
        <tbody>
         <tr>
         <td valign="top" width="100%">
-<div class="wiki-content maincontent"><h1 
id="Camel2.19Release-Camel2.19.0Release(currentlyinprogress)">Camel 2.19.0 
Release (currently in progress)</h1><div 
style="padding-right:20px;float:left;margin-left:-20px;"><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image 
confluence-external-resource" 
src="http://camel.apache.org/images/camel-box-small.png"; 
data-image-src="http://camel.apache.org/images/camel-box-small.png";></span></div><div
 style="min-height:200px">&#160;</div><h2 
id="Camel2.19Release-NewandNoteworthy">New and Noteworthy</h2><p>Welcome to the 
2.19.0 release which approx XXX issues resolved (new features, improvements and 
bug fixes such as...)</p><ul><li>The <a shape="rect" 
href="camel-maven-plugin.html">Camel Maven Plugin</a> now provides the 
<code>camel:validate</code> goal to parse your Java and XML source code for any 
Camel routes and report invalid Camel endpoint uri and simple expression 
errors. You can run this at code time (not run
 time).&#160;</li><li>Introduced a 
new&#160;<code>camel-catalog-rest</code>&#160;artifact which is a tiny 
standalone REST API of the CamelCatalog using JAX-RS and Swagger 
Annotations.</li><li>Added&#160;<code>camel-catalog-rest-app</code>&#160;as a 
standalone application which used Apache CXF with Jetty to host the Catalog 
REST API with embedded Swagger 
UI</li><li>Returning&#160;<code>null</code>&#160;from&#160;<a shape="rect" 
href="bean.html">Bean</a> should work similar to 
how&#160;<code>setBody</code>&#160;and&#160;<code>transform</code>&#160;works 
when they set a&#160;<code>null</code>&#160;body.</li><li>The Camel Spring Boot 
starter components now have their auto configuration depends 
on&#160;<code>org.apache.camel.springboot.CamelAutoConfiguration</code> which 
makes it easier writing unit tests where you can 
exclude&#160;<code>org.apache.camel.springboot.CamelAutoConfiguration</code> to 
turn off Camel Spring Boot auto configuration completely.</li><li>Camel now 
supports OWASP d
 ependency check maven plugin</li><li>Camel-Nats component now supports 
TLS</li><li>Camel-Nats component now supports explicit flushing (with timeout) 
of the connection</li><li>Camel-Metrics component now supports Gauge 
type</li><li><a shape="rect" href="file2.html">File&#160;consumer</a> now 
supports idempotent-changed and idempotent-rename read lock strategies for 
clustering.&#160;</li><li>Camel Catalog now supports custom runtime providers 
that only includes the supported Camel components, languages and data formats 
running in that container. For example for Karaf or Spring Boot in the 
camel-catalog-provider-karaf and 
camel-catalog-provider-springboot.</li><li>The&#160;<a shape="rect" 
href="https://cwiki.apache.org/confluence/display/WW/bean";>bean</a> component 
will when calling a method that returned an instance of 
<code>Callable</code>&#160;now call that callable to obtain the chained result. 
This allows to call Groovy functions/closures etc.</li><li>Failover&#160;<a 
shape="rect
 " href="load-balancer.html">Load Balancer</a> with inheritErrorHandler=false, 
now allows Camel's&#160;<a shape="rect" href="error-handler.html">Error 
Handler</a> to react after the load balancer is exhausted.</li><li><a 
shape="rect" href="salesforce.html">Salesforce</a> component now supports 
limits, recent items, approvals and composite API</li><li>Dumping Camel routes 
as XML now includes custom namespaces which are at xpath expressions etc. 
Likewise updating Camel routes from XML can now include namespaces which will 
be associated on xpath 
expressions.</li><li>Added&#160;<code>RouteIdFactory</code> which can auto 
assign route ids based on the consumer endpoints to use more sensitible names, 
instead of route1, route2, etc.</li><li><code>RouteBuilder</code> 
auto-configuration can now be disabled in <a shape="rect" href="cdi.html">Camel 
CDI</a></li></ul><p>Fixed these issues</p><ul><li>Fixed starting Camel on 
Oracle JDK 1.8.0_19 or lower, which would throw an&#160;UnsupportedOperatio
 nException</li><li>Fixed&#160;<a shape="rect" href="hystrix-eip.html">Hystrix 
EIP</a> to also execute fallback if execution was rejected or short-circuited 
or other reasons from Hystrix.&#160;</li><li>Fixed adding new routes to running 
CamelContext and if the new routes would fail to startup, then before these 
routes would "hang around". Now only succesful started routes are 
added.</li><li>Adding or removing routes that starts from&#160;<a shape="rect" 
href="undertow.html">Undertow</a> no longer restart the entire HTTP 
server</li><li><a shape="rect" href="vm.html">VM</a> endpoint should prepare 
exchange with the CamelContext from the consumer and not from cached endpoint 
which can be different</li><li>Fixed a bug when using&#160;<a shape="rect" 
href="rest-dsl.html">Rest DSL</a> with&#160;<a shape="rect" 
href="servlet.html">SERVLET</a> could cause a java.io.IOException: Stream 
closed exception when using <a shape="rect" href="bean.html">Bean</a>&#160;in 
the route.&#160;</li><li>Fixed
  an issue when using&#160;<code>pipeline</code> in Java DSL not setting up the 
EIP correctly which could lead to runtime route not as 
intended.</li><li>Fixed&#160;<a shape="rect" href="dropbox.html">Dropbox</a> to 
use&#160;<a shape="rect" href="stream-caching.html">Stream caching</a> to avoid 
reading entire file into memory so Camel can process big 
files</li><li>Fixed&#160;<code>toD</code> issue with splitting uris when RAW 
values had + sign</li><li>Fixed Netty double buffer release leak in&#160;<a 
shape="rect" href="netty4.html">Netty4</a> and&#160;<a shape="rect" 
href="netty4-http.html">Netty4 HTTP</a></li></ul><h3 
id="Camel2.19Release-New">New <a shape="rect" 
href="enterprise-integration-patterns.html">Enterprise Integration 
Patterns</a></h3><h3 id="Camel2.19Release-New.1">New <a shape="rect" 
href="components.html">Components</a></h3><ul><li>camel-bonita -&#160;allow you 
to communicate with a remote Bonita engine.</li><li>camel-google-pubsub - allow 
you communicate with Google Cl
 oud Pub/Sub</li></ul><h3 id="Camel2.19Release-NewDSL">New DSL</h3><h3 
id="Camel2.19Release-NewAnnotations">New Annotations</h3><h3 
id="Camel2.19Release-New.2">New <a shape="rect" href="data-format.html">Data 
Format</a></h3><h3 id="Camel2.19Release-New.3">New <a shape="rect" 
href="languages.html">Languages</a></h3><h3 id="Camel2.19Release-New.4">New <a 
shape="rect" href="examples.html">Examples</a></h3><h3 
id="Camel2.19Release-New.5">New <a shape="rect" 
href="tutorials.html">Tutorials</a></h3><h2 
id="Camel2.19Release-APIbreaking">API breaking</h2><ul><li>Camel-spring-LDAP 
now uses java.util.function.BiFunction&lt;L, Q, S&gt; instead 
of&#160;org.apache.camel.component.springldap.LdapOperationsFunction&lt;Q, 
S&gt;</li></ul><h2 id="Camel2.19Release-KnownIssues">Known Issues</h2><h2 
id="Camel2.19Release-Importantchangestoconsiderwhenupgrading">Important changes 
to consider when upgrading</h2><ul><li>Camel now uses Karaf 4.x API and 
therefore not possible to run on older Karaf versions.</
 li><li><code>camel-blueprint</code>&#160;changed startup behavior to start on 
Blueprint.CREATED event which would be more `correct` way of startup instead of 
Blueprint.REGISTERED as before.</li><li>camel-spring-boot now don't include 
prototype scoped beans when auto scanning for RouteBuilder instances, which is 
how camel-spring works. You can turn this back using 
the&#160;includeNonSingletons option.</li><li>camel-spring-javaconfig removed 
from Karaf features as it was not really supported in OSGi/Karaf.</li></ul><h2 
id="Camel2.19Release-GettingtheDistributions">Getting the Distributions</h2><h3 
id="Camel2.19Release-BinaryDistributions">Binary Distributions</h3><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p>Description</p></th><th colspan="1" 
rowspan="1" class="confluenceTh"><p>Download Link</p></th><th colspan="1" 
rowspan="1" class="confluenceTh"><p>PGP Signature file of 
download</p></th></tr><tr><td colspan="1"
  rowspan="1" class="confluenceTd"><p>Windows Distribution</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" 
class="external-link" 
href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/x.y.x/apache-camel-x.y.x.zip";>apache-camel-x.y.x.zip</a></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" 
class="external-link" 
href="http://www.apache.org/dist/camel/apache-camel/x.y.x/apache-camel-x.y.x.zip.asc";>apache-camel-x.y.x.zip.asc</a></p></td></tr><tr><td
 colspan="1" rowspan="1" class="confluenceTd"><p>Unix/Linux/Cygwin 
Distribution</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a 
shape="rect" class="external-link" 
href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/x.y.x/apache-camel-x.y.x.tar.gz";>apache-camel-x.y.x.tar.gz</a></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" 
class="external-link" 
href="http://www.apache.org/dist/camel/apache-camel/x.y.x/apache-camel-x.y.x.tar.gz.as
 c">apache-camel-x.y.x.tar.gz.asc</a></p></td></tr></tbody></table></div><div 
class="confluence-information-macro 
confluence-information-macro-information"><p class="title">The above URLs use 
redirection</p><span class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>The above URLs use the Apache 
Mirror system to redirect you to a suitable mirror for your download. Some 
users have experienced issues with some versions of browsers (e.g. some Safari 
browsers). If the download doesn't seem to work for you from the above URL then 
try using <a shape="rect" class="external-link" 
href="http://www.mozilla.com/en-US/firefox/"; 
rel="nofollow">FireFox</a></p></div></div><h3 
id="Camel2.19Release-SourceDistributions">Source Distributions</h3><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p>Description</p></th><th colspan="1" 
rowspan="1" class="c
 onfluenceTh"><p>Download Link</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>PGP Signature file of download</p></th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Source (zip)</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" 
class="external-link" 
href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/x.y.x/apache-camel-x.y.x-src.zip";>apache-camel-x.y.x-src.zip</a></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" 
class="external-link" 
href="http://www.apache.org/dist/camel/apache-camel/x.y.x/apache-camel-x.y.x-src.zip.asc";>apache-camel-x.y.x-src.zip.asc</a></p></td></tr></tbody></table></div><h3
 id="Camel2.19Release-GettingtheBinariesusingMaven2">Getting the Binaries using 
Maven 2</h3><p>To use this release in your maven project, the proper dependency 
configuration that you should use in your <a shape="rect" class="external-link" 
href="http://maven.apache.org/guides/introduction/introduction-to-th
 e-pom.html">Maven POM</a> is:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<div class="wiki-content maincontent"><h1 
id="Camel2.19Release-Camel2.19.0Release(currentlyinprogress)">Camel 2.19.0 
Release (currently in progress)</h1><div 
style="padding-right:20px;float:left;margin-left:-20px;"><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image 
confluence-external-resource" 
src="http://camel.apache.org/images/camel-box-small.png"; 
data-image-src="http://camel.apache.org/images/camel-box-small.png";></span></div><div
 style="min-height:200px">&#160;</div><h2 
id="Camel2.19Release-NewandNoteworthy">New and Noteworthy</h2><p>Welcome to the 
2.19.0 release which approx XXX issues resolved (new features, improvements and 
bug fixes such as...)</p><ul><li>The <a shape="rect" 
href="camel-maven-plugin.html">Camel Maven Plugin</a> now provides the 
<code>camel:validate</code> goal to parse your Java and XML source code for any 
Camel routes and report invalid Camel endpoint uri and simple expression 
errors. You can run this at code time (not run
 time).&#160;</li><li>Introduced a 
new&#160;<code>camel-catalog-rest</code>&#160;artifact which is a tiny 
standalone REST API of the CamelCatalog using JAX-RS and Swagger 
Annotations.</li><li>Added&#160;<code>camel-catalog-rest-app</code>&#160;as a 
standalone application which used Apache CXF with Jetty to host the Catalog 
REST API with embedded Swagger 
UI</li><li>Returning&#160;<code>null</code>&#160;from&#160;<a shape="rect" 
href="bean.html">Bean</a> should work similar to 
how&#160;<code>setBody</code>&#160;and&#160;<code>transform</code>&#160;works 
when they set a&#160;<code>null</code>&#160;body.</li><li>The Camel Spring Boot 
starter components now have their auto configuration depends 
on&#160;<code>org.apache.camel.springboot.CamelAutoConfiguration</code> which 
makes it easier writing unit tests where you can 
exclude&#160;<code>org.apache.camel.springboot.CamelAutoConfiguration</code> to 
turn off Camel Spring Boot auto configuration completely.</li><li>Camel now 
supports OWASP d
 ependency check maven plugin</li><li>Camel-Nats component now supports 
TLS</li><li>Camel-Nats component now supports explicit flushing (with timeout) 
of the connection</li><li>Camel-Metrics component now supports Gauge 
type</li><li><a shape="rect" href="file2.html">File&#160;consumer</a> now 
supports idempotent-changed and idempotent-rename read lock strategies for 
clustering.&#160;</li><li>Camel Catalog now supports custom runtime providers 
that only includes the supported Camel components, languages and data formats 
running in that container. For example for Karaf or Spring Boot in the 
camel-catalog-provider-karaf and 
camel-catalog-provider-springboot.</li><li>The&#160;<a shape="rect" 
href="https://cwiki.apache.org/confluence/display/WW/bean";>bean</a> component 
will when calling a method that returned an instance of 
<code>Callable</code>&#160;now call that callable to obtain the chained result. 
This allows to call Groovy functions/closures etc.</li><li>Failover&#160;<a 
shape="rect
 " href="load-balancer.html">Load Balancer</a> with inheritErrorHandler=false, 
now allows Camel's&#160;<a shape="rect" href="error-handler.html">Error 
Handler</a> to react after the load balancer is exhausted.</li><li><a 
shape="rect" href="salesforce.html">Salesforce</a> component now supports 
limits, recent items, approvals and composite API</li><li>Dumping Camel routes 
as XML now includes custom namespaces which are at xpath expressions etc. 
Likewise updating Camel routes from XML can now include namespaces which will 
be associated on xpath 
expressions.</li><li>Added&#160;<code>RouteIdFactory</code> which can auto 
assign route ids based on the consumer endpoints to use more sensitible names, 
instead of route1, route2, etc.</li><li>Add&#160;<code>skip</code> function 
to&#160;<a shape="rect" href="simple.html">Simple</a> 
language</li><li><code>RouteBuilder</code> auto-configuration can now be 
disabled in <a shape="rect" href="cdi.html">Camel CDI</a></li></ul><p>Fixed 
these issues</p>
 <ul><li>Fixed starting Camel on Oracle JDK 1.8.0_19 or lower, which would 
throw an&#160;UnsupportedOperationException</li><li>Fixed running <code>mvn 
camel:run</code>&#160;when using OSGi Blueprint</li><li>Fixed&#160;<a 
shape="rect" href="hystrix-eip.html">Hystrix EIP</a> to also execute fallback 
if execution was rejected or short-circuited or other reasons from 
Hystrix.&#160;</li><li>Fixed adding new routes to running CamelContext and if 
the new routes would fail to startup, then before these routes would "hang 
around". Now only succesful started routes are added.</li><li>Adding or 
removing routes that starts from&#160;<a shape="rect" 
href="undertow.html">Undertow</a> no longer restart the entire HTTP 
server</li><li><a shape="rect" href="vm.html">VM</a> endpoint should prepare 
exchange with the CamelContext from the consumer and not from cached endpoint 
which can be different</li><li>Fixed a bug when using&#160;<a shape="rect" 
href="rest-dsl.html">Rest DSL</a> with&#160;<a shape="r
 ect" href="servlet.html">SERVLET</a> could cause a java.io.IOException: Stream 
closed exception when using <a shape="rect" href="bean.html">Bean</a>&#160;in 
the route.&#160;</li><li>Fixed an issue when using&#160;<code>pipeline</code> 
in Java DSL not setting up the EIP correctly which could lead to runtime route 
not as intended.</li><li>Fixed&#160;<a shape="rect" 
href="dropbox.html">Dropbox</a> to use&#160;<a shape="rect" 
href="stream-caching.html">Stream caching</a> to avoid reading entire file into 
memory so Camel can process big files</li><li>Fixed&#160;<code>toD</code> issue 
with splitting uris when RAW values had + sign</li><li>Fixed Netty double 
buffer release leak in&#160;<a shape="rect" href="netty4.html">Netty4</a> 
and&#160;<a shape="rect" href="netty4-http.html">Netty4 HTTP</a></li></ul><h3 
id="Camel2.19Release-New">New <a shape="rect" 
href="enterprise-integration-patterns.html">Enterprise Integration 
Patterns</a></h3><h3 id="Camel2.19Release-New.1">New <a shape="rect" hre
 f="components.html">Components</a></h3><ul><li>camel-bonita -&#160;allow you 
to communicate with a remote Bonita engine.</li><li>camel-google-pubsub - allow 
you communicate with Google Cloud Pub/Sub</li></ul><h3 
id="Camel2.19Release-NewDSL">New DSL</h3><h3 
id="Camel2.19Release-NewAnnotations">New Annotations</h3><h3 
id="Camel2.19Release-New.2">New <a shape="rect" href="data-format.html">Data 
Format</a></h3><h3 id="Camel2.19Release-New.3">New <a shape="rect" 
href="languages.html">Languages</a></h3><h3 id="Camel2.19Release-New.4">New <a 
shape="rect" href="examples.html">Examples</a></h3><h3 
id="Camel2.19Release-New.5">New <a shape="rect" 
href="tutorials.html">Tutorials</a></h3><h2 
id="Camel2.19Release-APIbreaking">API breaking</h2><ul><li>Camel-spring-LDAP 
now uses java.util.function.BiFunction&lt;L, Q, S&gt; instead 
of&#160;org.apache.camel.component.springldap.LdapOperationsFunction&lt;Q, 
S&gt;</li></ul><h2 id="Camel2.19Release-KnownIssues">Known Issues</h2><h2 
id="Camel2.19Release-
 Importantchangestoconsiderwhenupgrading">Important changes to consider when 
upgrading</h2><ul><li>Camel now uses Karaf 4.x API and therefore not possible 
to run on older Karaf 
versions.</li><li><code>camel-blueprint</code>&#160;changed startup behavior to 
start on Blueprint.CREATED event which would be more `correct` way of startup 
instead of Blueprint.REGISTERED as before.</li><li>camel-spring-boot now don't 
include prototype scoped beans when auto scanning for RouteBuilder instances, 
which is how camel-spring works. You can turn this back using 
the&#160;includeNonSingletons option.</li><li>camel-spring-javaconfig removed 
from Karaf features as it was not really supported in OSGi/Karaf.</li></ul><h2 
id="Camel2.19Release-GettingtheDistributions">Getting the Distributions</h2><h3 
id="Camel2.19Release-BinaryDistributions">Binary Distributions</h3><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p>Description</p></th><t
 h colspan="1" rowspan="1" class="confluenceTh"><p>Download Link</p></th><th 
colspan="1" rowspan="1" class="confluenceTh"><p>PGP Signature file of 
download</p></th></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Windows Distribution</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" 
href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/x.y.x/apache-camel-x.y.x.zip";>apache-camel-x.y.x.zip</a></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" 
class="external-link" 
href="http://www.apache.org/dist/camel/apache-camel/x.y.x/apache-camel-x.y.x.zip.asc";>apache-camel-x.y.x.zip.asc</a></p></td></tr><tr><td
 colspan="1" rowspan="1" class="confluenceTd"><p>Unix/Linux/Cygwin 
Distribution</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a 
shape="rect" class="external-link" 
href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/x.y.x/apache-camel-x.y.x.tar.gz";>apache-camel-x.y.x.tar.gz</
 a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" 
class="external-link" 
href="http://www.apache.org/dist/camel/apache-camel/x.y.x/apache-camel-x.y.x.tar.gz.asc";>apache-camel-x.y.x.tar.gz.asc</a></p></td></tr></tbody></table></div><div
 class="confluence-information-macro 
confluence-information-macro-information"><p class="title">The above URLs use 
redirection</p><span class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>The above URLs use the Apache 
Mirror system to redirect you to a suitable mirror for your download. Some 
users have experienced issues with some versions of browsers (e.g. some Safari 
browsers). If the download doesn't seem to work for you from the above URL then 
try using <a shape="rect" class="external-link" 
href="http://www.mozilla.com/en-US/firefox/"; 
rel="nofollow">FireFox</a></p></div></div><h3 
id="Camel2.19Release-SourceDistributions">Source Distr
 ibutions</h3><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Download Link</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>PGP Signature file of download</p></th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Source (zip)</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" 
class="external-link" 
href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/x.y.x/apache-camel-x.y.x-src.zip";>apache-camel-x.y.x-src.zip</a></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" 
class="external-link" 
href="http://www.apache.org/dist/camel/apache-camel/x.y.x/apache-camel-x.y.x-src.zip.asc";>apache-camel-x.y.x-src.zip.asc</a></p></td></tr></tbody></table></div><h3
 id="Camel2.19Release-GettingtheBinariesusingMaven2">Getting the Binaries using 
Maven 2</h3><p>To use this release in you
 r maven project, the proper dependency configuration that you should use in 
your <a shape="rect" class="external-link" 
href="http://maven.apache.org/guides/introduction/introduction-to-the-pom.html";>Maven
 POM</a> is:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
 <script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[&lt;dependency&gt;
   &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
   &lt;artifactId&gt;camel-core&lt;/artifactId&gt;

Modified: websites/production/camel/content/simple.html
==============================================================================
--- websites/production/camel/content/simple.html (original)
+++ websites/production/camel/content/simple.html Fri Dec 16 10:21:08 2016
@@ -88,7 +88,7 @@
         <td valign="top" width="100%">
 <div class="wiki-content maincontent"><h2 
id="Simple-SimpleExpressionLanguage">Simple Expression Language</h2><p>The 
Simple Expression Language was a really simple language when it was created, 
but has since grown more powerful. It is primarily intended for being a really 
small and simple language for evaluating <a shape="rect" 
href="expression.html">Expression</a>s and <a shape="rect" 
href="predicate.html">Predicate</a>s without requiring any new dependencies or 
knowledge of <a shape="rect" href="xpath.html">XPath</a>; so it is ideal for 
testing in <strong><code>camel-core</code></strong>. The idea was to cover 95% 
of the common use cases when you need a little bit of expression based script 
in your Camel routes.</p><p>However for much more complex use cases you are 
generally recommended to choose a more expressive and powerful language such 
as:</p><ul><li><a shape="rect" href="spel.html">SpEL</a></li><li><a 
shape="rect" href="mvel.html">Mvel</a></li><li><a shape="rect" href="groov
 y.html">Groovy</a></li><li><a shape="rect" 
href="javascript.html">JavaScript</a></li><li><a shape="rect" 
href="el.html">EL</a></li><li><a shape="rect" 
href="ognl.html">OGNL</a></li><li>one of the supported <a shape="rect" 
href="scripting-languages.html">Scripting Languages</a></li></ul><p>The simple 
language uses <strong><code>${body</code>}</strong> placeholders for complex 
expressions where the expression contains constant 
literals.</p><p><strong>Deprecated</strong>:&#160;The&#160;<strong><code>${ 
}</code></strong> placeholders can be omitted if the expression starts with the 
token, or if the token is only itself.</p><div 
class="confluence-information-macro confluence-information-macro-tip"><p 
class="title">Alternative syntax</p><span class="aui-icon aui-icon-small 
aui-iconfont-approve confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>From Camel 2.5 you can also use 
the alternative syntax which uses&#160;<strong><code>$simple{ }</code></st
 rong> as placeholders. This can be used in situations to avoid clashes when 
using for example Spring property placeholder together with 
Camel.</p></div></div><div class="confluence-information-macro 
confluence-information-macro-tip"><p class="title">Configuring result 
type</p><span class="aui-icon aui-icon-small aui-iconfont-approve 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>From Camel 2.8 you can configure 
the result type of the <a shape="rect" href="simple.html">Simple</a> 
expression. For example to set the type as a 
<strong><code>java.lang.Boolean</code></strong> or a 
<code>j<strong>ava.lang.Integer</strong></code> etc.</p></div></div><div 
class="confluence-information-macro 
confluence-information-macro-information"><p class="title">File language is now 
merged with Simple language</p><span class="aui-icon aui-icon-small 
aui-iconfont-info confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>Fro
 m Camel 2.2, the <a shape="rect" href="file-language.html">File Language</a> 
is now merged with <a shape="rect" href="simple.html">Simple</a> language which 
means you can use all the file syntax directly within the simple 
language.</p></div></div><div class="confluence-information-macro 
confluence-information-macro-information"><p class="title">Simple Language 
Changes in Camel 2.9 onwards</p><span class="aui-icon aui-icon-small 
aui-iconfont-info confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>The <a shape="rect" 
href="simple.html">Simple</a> language have been improved from Camel 2.9 to use 
a better syntax parser, which can do index precise error messages, so you know 
exactly what is wrong and where the problem is. For example if you have made a 
typo in one of the operators, then previously the parser would not be able to 
detect this, and cause the evaluation to be true. There are a few changes in 
the syntax which are no longer backwards c
 ompatible. When using <a shape="rect" href="simple.html">Simple</a> language 
as a <a shape="rect" href="predicate.html">Predicate</a> then the literal text 
<strong>must</strong> be enclosed in either single or double quotes. For 
example: <code>"<strong>${body} == 'Camel'</strong>"</code>. Notice how we have 
single quotes around the literal. The old style of using 
<code>"<strong>body</strong>"</code> and 
<code>"<strong>header.foo</strong>"</code> to refer to the message body and 
header is <strong><code>@deprecated</code></strong>, and it is encouraged to 
always use&#160;<strong><code>${ }</code></strong> tokens for the built-in 
functions.<br clear="none"> The range operator now requires the range to be in 
single quote as well as shown: <code>"<strong>${header.zip} between 
'30000..39999'</strong>"</code>.</p></div></div><p>To get the body of the in 
message: <strong><code>body</code></strong>, or 
<strong><code>in.body</code></strong> or 
<strong><code>${body}</code></strong>.</p><p>A co
 mplex expression must use&#160;<strong><code>${ }</code></strong> 
placeholders, such as: <strong><code>Hello ${in.header.name} how are 
you?</code></strong>.</p><p>You can have multiple functions in the same 
expression: <code>"<strong>Hello ${in.header.name} this is ${in.header.me} 
speaking</strong>"</code>. However you can <em><strong>not</strong></em> nest 
functions in Camel 2.8.x or older e.g., having another&#160;<strong><code>${ 
}</code></strong> placeholder in an existing, is not allowed. From 
<strong>Camel 2.9</strong> you can nest functions.</p><h3 
id="Simple-Variables">Variables</h3><div class="confluenceTableSmall"><div 
class="table-wrap">
  <table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Variable</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Type</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>camelId</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.10:</strong> 
the <a shape="rect" href="camelcontext.html">CamelContext</a> 
name.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>camelContext.<strong>OGNL</strong></code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.11:</strong> 
the&#160;<strong><code>CamelContext</code></strong> invoked using a Camel OGNL 
expression.</p></td></tr><tr><td colspan="1" rowspan="1" class="
 confluenceTd"><p><code>exchange</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Exchange</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.16:</strong> the <a 
shape="rect" href="exchange.html">Exchange.</a></p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>exchange.<strong>OGNL</strong></code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>Object</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 
2.16:</strong><span> the </span><a shape="rect" 
href="exchange.html">Exchange</a><span> invoked using a Camel OGNL 
expression.</span></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>exchangeId</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> the exchange 
Id.</p></td></tr><tr><td colspan="1" rowspan="1" class="c
 onfluenceTd"><p><code>id</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>The input message Id.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>body</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>The input body.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>in.body</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>The input body.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>body.<strong>OGNL</strong></code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>Object</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> the 
input body invoked using a Camel 
 OGNL expression.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>in.body.<strong>OGNL</strong></code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>Object</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> the 
input body invoked using a Camel OGNL expression.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>bodyAs(<em>type</em>)</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>Type</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> 
Converts the body to the given type determined by its classname. The converted 
body can be <strong><code>null</code></strong>.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>bodyAs(<em>type</em>).<strong>OGNL</strong></code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" rowspan="1" 
class="
 confluenceTd"><p><strong>Camel 2.18:</strong><span> Converts the body to the 
given type determined by its classname and then invoke methods using a Camel 
OGNL expression. The converted body can be 
<strong><code>null</code></strong>.</span></p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>mandatoryBodyAs(<em>type</em>)</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>Type</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.5:</strong> 
Converts the body to the given type determined by its classname, and expects 
the body to be not <strong><code>null</code></strong>.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>mandatoryBodyAs(<em>type</em>).<strong>OGNL</strong></code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.18:</strong><span> Converts the body to 
the given type 
 determined by its classname and then invoke methods using a Camel OGNL 
expression.</span></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>out.body</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>The output body.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>header.<em>foo</em></code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>Object</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Refer to the 
input&#160;<strong><code>foo</code></strong> header.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>header[<em>foo</em>]</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>Object</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.9.2:</strong> 
refer to the input&#160;<strong><code>foo</code></strong> header.</p></td></tr
 ><tr><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>headers.<em>foo</em></code></p></td><td 
 >colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" 
 >rowspan="1" class="confluenceTd"><p>Refer to the 
 >input&#160;<strong><code>foo</code></strong> header.</p></td></tr><tr><td 
 >colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>headers[<em>foo</em>]</code></p></td><td 
 >colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" 
 >rowspan="1" class="confluenceTd"><p><strong>Camel 2.9.2:</strong> refer to 
 >the input&#160;<strong><code>foo</code></strong> header.</p></td></tr><tr><td 
 >colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>in.header.<code><em>foo</em></code></code></p></td><td
 > colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" 
 >rowspan="1" class="confluenceTd"><p>Refer to the 
 >input&#160;<strong><code>foo</code></strong> header.</p></td></tr><tr><td 
 >colspan="1" row
 span="1" 
class="confluenceTd"><p><code>in.header[<code><em>foo</em></code>]</code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.9.2:</strong> refer to the 
input&#160;<strong><code>foo</code></strong> header.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>in.headers.<code><em>foo</em></code></code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Refer to the 
input&#160;<strong><code>foo</code></strong> header.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>in.headers[<code><em>foo</em></code>]</code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.9.2:</strong> refer to the 
input&#160;<strong><code>foo</code></strong> heade
 r.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>header.foo[<em>bar</em>]</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>Object</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> 
regard input&#160;<strong><code>foo</code></strong> header as a map and perform 
lookup on the map with&#160;<strong><code>bar</code></strong> as 
key.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>in.header.foo[<code><em>bar</em></code>]</code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.3:</strong> regard 
input&#160;<strong><code>foo</code></strong> header as a map and perform lookup 
on the map with&#160;<strong><code>bar</code></strong> as 
key.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>in.headers.foo[<code><em>bar</em></code>]</code></p><
 /td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.3:</strong> regard 
input&#160;<strong><code>foo</code></strong> header as a map and perform lookup 
on the map with&#160;<strong><code>bar</code></strong> as 
key.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>header.<code><em>foo</em></code>.OGNL</code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.3:</strong> refer to the 
input&#160;<strong><code>foo</code></strong> header and invoke its value using 
a Camel OGNL expression.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>in.header.<code><em>foo</em></code>.OGNL</code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2
 .3:</strong> refer to the input&#160;<strong><code>foo</code></strong> header 
and invoke its value using a Camel OGNL expression.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>in.headers.<code><em>foo</em></code>.OGNL</code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.3:</strong> refer to the 
input&#160;<strong><code>foo</code></strong> header and invoke its value using 
a Camel OGNL expression.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>out.header.<code><em>foo</em></code></code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Refer to the out header 
<strong><code>foo</code></strong>.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>out.header[<code><em>foo</em></code>]</code></p></td><td
 colspan=
 "1" rowspan="1" class="confluenceTd"><p><code>Object</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.9.2:</strong> 
refer to the out header <strong><code>foo</code></strong>.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>out.headers.<code><em>foo</em></code></code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Refer to the out header 
<strong><code>foo</code></strong>.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>out.headers[<code><em>foo</em></code>]</code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.9.2:</strong> refer to the out header 
<strong><code>foo</code></strong>.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>headerAs(<em>key</em>,<em>type</em>)</code><
 /p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Type</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.5:</strong> Converts the header to the 
given type determined by its classname.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>headers</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>Map</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.9:</strong> 
refer to the input headers.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>in.headers</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>Map</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.9:</strong> refer to the 
input headers.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>property.<code><em>foo</em></code></code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><code>Object</code
 ></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong><span 
 >style="color: rgb(255,0,0);">Deprecated</span>:</strong> refer to 
 >the&#160;<strong><code>foo</code></strong> property on the 
 >exchange.</p></td></tr><tr><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>exchangeProperty.<code><em>foo</em></code></code></p></td><td
 > colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" 
 >rowspan="1" class="confluenceTd"><p><span><strong>Camel 2.15:</strong> refer 
 >to the&#160;<strong><code>foo</code></strong> property on the 
 >exchange.</span></p></td></tr><tr><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>property[<code><em>foo</em></code>]</code></p></td><td
 > colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" 
 >rowspan="1" class="confluenceTd"><p><strong>Deprecated:</strong> refer to 
 >the&#160;<strong><code>foo</code></strong> property on the 
 >exchange.</p></td></tr><tr><td colspan="1" row
 span="1" 
class="confluenceTd"><p><span><code>exchangeProperty[<code><em>foo</em></code>]</code></span></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.15:</strong><span> refer to 
the&#160;<strong><code>foo</code></strong> property on the 
exchange.</span></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>property.<code><em>foo</em></code>.OGNL</code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Deprecated:</strong> refer to 
the&#160;<strong><code>foo</code></strong> property on the exchange and invoke 
its value using a Camel OGNL expression.</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>exchangeProperty.<code><em>foo</em></code>.OGNL</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><code>Object</code></p><
 /td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 
2.15:</strong><span> refer to the&#160;<strong><code>foo</code></strong> 
property on the exchange and invoke its value using a Camel OGNL 
expression.</span></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>sys.<code><em>foo</em></code></code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Refer to the system property 
<span><strong><code>foo</code></strong></span>.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>sysenv.<code><em>foo</em></code></code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.3:</strong> refer to the system 
environment property 
<span><strong><code>foo</code></strong></span>.</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p>
 <code>exception</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.4:</strong> Refer to the exception 
object on the exchange, is <strong><code>null</code></strong> if no exception 
set on exchange. Will fallback and grab caught exceptions 
(<strong><code>Exchange.EXCEPTION_CAUGHT</code></strong>) if the Exchange has 
any.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>exception.OGNL</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.4:</strong> Refer to the 
exchange exception invoked using a Camel OGNL expression 
object</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>exception.message</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1" 
rowspan="1" class=
 "confluenceTd"><p>Refer to the exception.message on the exchange, is 
<strong>null</strong> if no exception set on exchange. Will fallback and grab 
caught exceptions (<strong><code>Exchange.EXCEPTION_CAUGHT</code></strong>) if 
the Exchange has any.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>exception.stacktrace</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.6.</strong> 
Refer to the&#160;<strong><code>exception.stracktrace</code></strong> on the 
exchange. Result is&#160;<strong><code>null</code></strong> if no exception set 
on exchange. Will fallback and grab caught exceptions 
(<strong><code>Exchange.EXCEPTION_CAUGHT</code></strong>) if the Exchange has 
any.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>date:<em>command</em>:<em>pattern</em></code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><co
 de>String</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Date formatting using the 
<strong><code>java.text.SimpleDateFormat</code></strong> patterns. Supported 
commands are:&#160;</p>
-     <ul><li><p><strong><code>now</code></strong> for current 
timestamp.</p></li><li><p><strong><code>in.header.xxx</code></strong> 
or&#160;<strong><code>header.xxx</code></strong> to use 
the&#160;<strong><code>Date</code></strong> object in 
the&#160;<strong><code>IN</code></strong> header with the key 
<strong><code>xxx</code></strong>.</p></li><li><p><strong><code>out.header.xxx</code></strong>
 to use the&#160;<strong><code>Date</code></strong> object in 
the&#160;<strong><code>OUT</code></strong> header with the key 
<strong><code>xxx</code></strong>.</p></li></ul></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>bean:<em>bean 
expression</em></code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Invoking a bean expression using the <a shape="rect" 
href="bean.html">Bean</a> language. Specifying a method name you must use dot 
as separator. We also support the&#160;<strong
 ><code>?method=methodname</code></strong> syntax that is used by the <a 
 >shape="rect" href="bean.html">Bean</a> component.</p></td></tr><tr><td 
 >colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>properties:<em>locations</em>:key</code></p></td><td
 > colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>String</code></p></td><td colspan="1" 
 >rowspan="1" class="confluenceTd"><p><strong><span style="color: 
 >rgb(255,0,0);">Deprecated</span> (use properties-location instead) Camel 
 >2.3:</strong> Lookup a property with the given key. The 
 ><strong><code>locations</code></strong> option is optional. See more at <a 
 >shape="rect" href="using-propertyplaceholder.html">Using 
 >PropertyPlaceholder</a>.</p></td></tr><tr><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>properties-location:<em>locations:key</em></code></p></td><td
 > colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>String</code></p></td><td colspan="1" 
 >rowspan="1" class="confluenceTd"><p><strong>Camel 2.14.1:</strong> Lookup a 
 property with the given key. The <code>locations</code> option is optional. 
See more at <a shape="rect" href="using-propertyplaceholder.html">Using 
PropertyPlaceholder</a>.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>properties:key:default</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.14.1</strong>: 
Lookup a property with the given key. If the key does not exists or has no 
value, then an optional default value can be specified.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>routeId</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.11:</strong> Returns the Id 
of the current route the <a shape="rect" href="exchange.html">Exchange</a> is 
being routed.</p></td></tr><tr><td colspan="1" rowspan="1" class=
 "confluenceTd"><p><code>threadName</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.3:</strong> Returns the name of the 
current thread. Can be used for logging purpose.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>ref:<em>xxx</em></code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.6:</strong> To lookup a 
bean from the <a shape="rect" href="registry.html">Registry</a> with the given 
Id.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>type:name.field</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.11:</strong> To refer to a 
type or field by its FQN name. To refer to a field you can append <stro
 ng><code>.FIELD_NAME</code></strong>. For example you can refer to the 
constant field from Exchange as: 
<strong><code>org.apache.camel.Exchange.FILE_NAME</code></strong></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>.</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.12.3:</strong> 
represents a <strong><code>null</code>.</strong></p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>random(<em>value</em>)</code></p></td><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Integer</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.16.0: </strong>returns a 
random Integer between&#160;<em><strong><code>0</code></strong></em> (included) 
and <strong><em>value</em></strong> (excluded)</p></td></tr><tr><td colspan="1" 
rowspan="1" c
 
lass="confluenceTd"><p><code>random(<em>min</em>,<em>max</em>)</code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Integer</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.16.0: </strong>returns a 
random Integer between <strong><em>min</em></strong> (included) and 
<strong><em>max</em></strong> (excluded)</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>collate(<em>group</em>)</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>List</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.17:</strong> 
The collate function iterates the message body and groups the data into sub 
lists of specified size. This can be used with the <a shape="rect" 
href="splitter.html">Splitter</a> EIP to split a message body and group/batch 
the split sub messages into a group of&#160;<strong><code>N</code></strong> sub 
lists. This method works similar to the collate method in Groo
 vy.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>messageHistory</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.17:</strong> The message 
history of the current exchange how it has been routed. This is similar to the 
route stack-trace message history the error handler logs in case of an 
un-handled exception.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><span><code>messageHistory(false)</code></span></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 
2.17:</strong><span>&#160;</span>As&#160;<strong><code>messageHistory</code></strong>
 but without the exchange details (only includes the route strack-trace). This 
can be used if you do not want to log sensitive data from the message 
itself.</p></td></tr></tbody></table>
+     <ul><li><p><strong><code>now</code></strong> for current 
timestamp.</p></li><li><p><strong><code>in.header.xxx</code></strong> 
or&#160;<strong><code>header.xxx</code></strong> to use 
the&#160;<strong><code>Date</code></strong> object in 
the&#160;<strong><code>IN</code></strong> header with the key 
<strong><code>xxx</code></strong>.</p></li><li><p><strong><code>out.header.xxx</code></strong>
 to use the&#160;<strong><code>Date</code></strong> object in 
the&#160;<strong><code>OUT</code></strong> header with the key 
<strong><code>xxx</code></strong>.</p></li></ul></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>bean:<em>bean 
expression</em></code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Invoking a bean expression using the <a shape="rect" 
href="bean.html">Bean</a> language. Specifying a method name you must use dot 
as separator. We also support the&#160;<strong
 ><code>?method=methodname</code></strong> syntax that is used by the <a 
 >shape="rect" href="bean.html">Bean</a> component.</p></td></tr><tr><td 
 >colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>properties:<em>locations</em>:key</code></p></td><td
 > colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>String</code></p></td><td colspan="1" 
 >rowspan="1" class="confluenceTd"><p><strong><span style="color: 
 >rgb(255,0,0);">Deprecated</span> (use properties-location instead) Camel 
 >2.3:</strong> Lookup a property with the given key. The 
 ><strong><code>locations</code></strong> option is optional. See more at <a 
 >shape="rect" href="using-propertyplaceholder.html">Using 
 >PropertyPlaceholder</a>.</p></td></tr><tr><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>properties-location:<em>locations:key</em></code></p></td><td
 > colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>String</code></p></td><td colspan="1" 
 >rowspan="1" class="confluenceTd"><p><strong>Camel 2.14.1:</strong> Lookup a 
 property with the given key. The <code>locations</code> option is optional. 
See more at <a shape="rect" href="using-propertyplaceholder.html">Using 
PropertyPlaceholder</a>.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>properties:key:default</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.14.1</strong>: 
Lookup a property with the given key. If the key does not exists or has no 
value, then an optional default value can be specified.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>routeId</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.11:</strong> Returns the Id 
of the current route the <a shape="rect" href="exchange.html">Exchange</a> is 
being routed.</p></td></tr><tr><td colspan="1" rowspan="1" class=
 "confluenceTd"><p><code>threadName</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.3:</strong> Returns the name of the 
current thread. Can be used for logging purpose.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>ref:<em>xxx</em></code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.6:</strong> To lookup a 
bean from the <a shape="rect" href="registry.html">Registry</a> with the given 
Id.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>type:name.field</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>Object</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.11:</strong> To refer to a 
type or field by its FQN name. To refer to a field you can append <stro
 ng><code>.FIELD_NAME</code></strong>. For example you can refer to the 
constant field from Exchange as: 
<strong><code>org.apache.camel.Exchange.FILE_NAME</code></strong></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>.</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.12.3:</strong> 
represents a <strong><code>null</code>.</strong></p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>random(<em>value</em>)</code></p></td><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Integer</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.16.0: </strong>returns a 
random Integer between&#160;<em><strong><code>0</code></strong></em> (included) 
and <strong><em>value</em></strong> (excluded)</p></td></tr><tr><td colspan="1" 
rowspan="1" c
 
lass="confluenceTd"><p><code>random(<em>min</em>,<em>max</em>)</code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>Integer</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.16.0: </strong>returns a 
random Integer between <strong><em>min</em></strong> (included) and 
<strong><em>max</em></strong> (excluded)</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>collate(<em>group</em>)</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>List</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.17:</strong> 
The collate function iterates the message body and groups the data into sub 
lists of specified size. This can be used with the <a shape="rect" 
href="splitter.html">Splitter</a> EIP to split a message body and group/batch 
the split sub messages into a group of&#160;<strong><code>N</code></strong> sub 
lists. This method works similar to the collate method in Groo
 vy.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><code>skip(number)</code></td><td colspan="1" rowspan="1" 
class="confluenceTd"><code>Iterator</code></td><td colspan="1" rowspan="1" 
class="confluenceTd"><strong>Camel 2.19:</strong> The skip function iterates 
the message body and skips the first number of items. This can be used with the 
<a shape="rect" href="splitter.html">Splitter EIP</a> to split a message body 
and skip the first N number of items.</td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>messageHistory</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.17:</strong> The message 
history of the current exchange how it has been routed. This is similar to the 
route stack-trace message history the error handler logs in case of an 
un-handled exception.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><span>
 <code>messageHistory(false)</code></span></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 
2.17:</strong><span>&#160;</span>As&#160;<strong><code>messageHistory</code></strong>
 but without the exchange details (only includes the route strack-trace). This 
can be used if you do not want to log sensitive data from the message 
itself.</p></td></tr></tbody></table>
 </div></div><h3 id="Simple-OGNLexpressionsupport">OGNL expression 
support</h3><p><strong>Available as of Camel 2.3</strong></p><div 
class="confluence-information-macro 
confluence-information-macro-information"><span class="aui-icon aui-icon-small 
aui-iconfont-info confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>Camel's OGNL support is for 
invoking methods only. You cannot access fields.<br clear="none"> From 
<strong>Camel 2.11.1</strong> onwards we added special support for accessing 
the length field of Java arrays.</p></div></div><p>The <a shape="rect" 
href="simple.html">Simple</a> and <a shape="rect" href="bean.html">Bean</a> 
language now supports a Camel OGNL notation for invoking beans in a chain like 
fashion. Suppose the Message&#160;<strong><code>IN</code></strong> body 
contains a POJO which has a <strong><code>getAddress()</code></strong> 
method.</p><p>Then you can use Camel OGNL notation to access the address 
object:</p><div class=
 "code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[simple(&quot;${body.address}&quot;)
 simple(&quot;${body.address.street}&quot;)


Reply via email to