Modified: websites/production/camel/content/camel-2170-release.html
==============================================================================
--- websites/production/camel/content/camel-2170-release.html (original)
+++ websites/production/camel/content/camel-2170-release.html Fri Mar 11 
08:20:16 2016
@@ -85,7 +85,7 @@
        <tbody>
         <tr>
         <td valign="top" width="100%">
-<div class="wiki-content maincontent"><h1 
id="Camel2.17.0Release-Camel2.17.0release(currentlyinprogress)">Camel 2.17.0 
release (currently in progress)</h1><div 
style="padding-right:20px;float:left;margin-left:-20px;"><p><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image 
confluence-external-resource" 
src="http://camel.apache.org/download.data/camel-box-v1.0-150x200.png"; 
data-image-src="http://camel.apache.org/download.data/camel-box-v1.0-150x200.png";></span></p></div><div
 style="min-height:200px">&#160;</div><h2 
id="Camel2.17.0Release-NewandNoteworthy">New and Noteworthy</h2><p>Welcome to 
the x.y.z release which approx XXX issues resolved (new features, improvements 
and bug fixes such as...)</p><ul><li>The component documentation generated from 
the source code has been double checked to be up to date and include all the 
options the endpoints supports.</li><li><a shape="rect" href="tools.html">Camel 
commands</a> for&#160;<a shape="rect" href="spring-b
 oot.html">Spring Boot</a></li><li>Many improvements to&#160;Camel&#160;<a 
shape="rect" href="kura.html">Kura</a></li><li>Added transacted option 
to&#160;<a shape="rect" href="sql-component.html">SQL Component</a> when used 
as a consumer in a transacted route.</li><li>Added support for UPDATE operation 
to&#160;<a shape="rect" 
href="elasticsearch.html">ElasticSearch</a>.</li><li>Allow to reuse existing 
configured Elasticsearch Client on the <a shape="rect" 
href="elasticsearch.html">ElasticSearch</a> component, instead of creating a 
client per endpoint.&#160;</li><li>The&#160;<code>include</code> 
and&#160;<code>exclude</code> options on&#160;<a shape="rect" 
href="file2.html">File2</a> and&#160;<a shape="rect" href="ftp.html">FTP</a> 
endpoints is now case in-sensitive out of the box.</li><li>Resource based 
component such as&#160;<a shape="rect" href="xslt.html">XSLT</a>,&#160;<a 
shape="rect" href="velocity.html">Velocity</a>&#160;etc can load the resource 
file from the&#160;<a shape="re
 ct" href="registry.html">Registry</a>&#160;by using&#160;<code>ref:</code> as 
prefix.</li><li><span>Upgraded camel-amqp to the latest qpid-jms-client (also 
AMQP &lt; 1.0 is not supported anymore).</span></li><li><span>Many improvements 
to Camel <a shape="rect" href="amqp.html">AMQP</a> 
component.</span></li><li><span>The&#160;<a shape="rect" 
href="metrics-component.html">Metrics Component</a> allows to capture&#160;<a 
shape="rect" href="message-history.html">Message History</a> performance 
statistics with 
the&#160;<code>MetricsMessageHistoryFactory&#160;</code></span></li><li>Reduced 
the number of mbeans enlisted in the services tree, to only include mbeans that 
has value to be managed.</li><li>The&#160;<a shape="rect" 
href="elasticsearch.html">Elasticsearch Component</a>&#160;now supports 
MultiGet operation</li><li>The&#160;<a shape="rect" 
href="throttler.html">Throttler</a> has been improved to be more performant and 
use a rolling window for time periods which gives a better flow.
 </li><li>The&#160;<code>setHeader</code> 
and&#160;<code>setExchangeProperty</code> allows to use a dynamic header key 
using the&#160;<a shape="rect" href="simple.html">Simple</a>&#160;language if 
the name of the key is a&#160;<a shape="rect" 
href="simple.html">Simple</a>&#160;language expression.</li><li>Add collate 
function to&#160;<a shape="rect" href="simple.html">Simple</a> language to make 
it easier to split a message body into sub lists of a specified size. The 
function is similar to the collate function from Groovy.</li><li>The&#160;<a 
shape="rect" href="camel-run-maven-goal.html">Camel Run Maven Goal</a> is able 
to auto detect if its a OSGi Blueprint or CDI project so end users no longer 
have to explicit configure this on the plugin.</li><li><a shape="rect" 
href="elasticsearch.html">Camel-Elasticsearch</a> now supports Multiget, 
Multisearch and exists operation</li><li><a shape="rect" 
href="git.html">Camel-Git</a> now supports Cherry-pick 
operation</li><li>Stopping the&#160;
 <code>Main</code> class from JMX will now trigger shutdown of the Main 
class/JVM also, as it does when hitting ctrl + c.</li><li>Added option to 
skipFirst to the&#160;<a shape="rect" href="tokenizer.html">Tokenizer</a> 
language to make it easy to skip the very first element, when for example 
splitting a CSV file using the&#160;<a shape="rect" 
href="splitter.html">Splitter</a> EIP.</li><li>The&#160;<a shape="rect" 
href="rest-dsl.html">Rest DSL</a> now supports default values for query 
parameters</li><li>The&#160;<a shape="rect" href="rest-dsl.html">Rest DSL</a> 
now only binds from POJO to JSon/XML if the content-type is for json or xml. 
This allows you to specify a custom content-type and omit the binding, such as 
when having binary payloads.</li><li>Exchange and Message only output id in 
their toString method to avoid outputting any message details such as sensitive 
details from message bodies.</li><li>Camel&#160;<a shape="rect" 
href="error-handler.html">Error Handler</a> no longer 
 log message body/header details when logging the <a shape="rect" 
href="message-history.html">Message History</a>. This avoids logging 
any&#160;sensitive details from message bodies.</li><li>Camel&#160;<a 
shape="rect" href="exception-clause.html">Exception Clause</a> and&#160;<a 
shape="rect" href="error-handler.html">Error Handler</a> now supports using a 
custom&#160;<code>Processor</code> to be invoked right after an exception was 
thrown using the new&#160;<strong>onExceptionOccurred</strong> 
option.</li><li><a shape="rect" href="rabbitmq.html">RabbitMQ</a> consumer more 
resilient to auto re-connect in case of connection failures</li><li>The&#160;<a 
shape="rect" href="json.html">JSON</a> <code>camel-jackson</code>&#160;can be 
used as a type converter to convert json to/from POJO and String/byte[] types, 
if enabled.</li><li>The&#160;<a shape="rect" href="sql-component.html">SQL 
Component</a> now supports loading the SQL queries from external files on the 
classpath or file system, whe
 re you can format the queries using newlines and 
indenting.</li><li>The&#160;<a shape="rect" href="mail.html">Mail</a> consumer 
allows to use an idempotent repository&#160;which allows to cluster consuming 
from the same mailbox, and let the repository coordinate whether a mail message 
is valid for the consumer to process.</li><li>Added support for completion 
interval on the&#160;<a shape="rect" href="sjms-batch.html">SJMS Batch</a> 
component, which allows to trigger batch completion in a fixed scheduled 
interval.</li><li>The&#160;<a shape="rect" href="http.html">HTTP</a> 
and&#160;<a shape="rect" href="http4.html">HTTP4</a> producers now support 
the&#160;<code>disableStreamCache</code> option to allow to use the raw 
response stream as the message body instead of wrapping using&#160;<a 
shape="rect" href="stream-caching.html">Stream caching</a></li><li>The <a 
shape="rect" href="cdi.html">Camel CDI</a> component has been improved to 
better fit into the CDI programming model, cover a lar
 ger set of containers, and provide these new features:<ul><li>The Camel events 
from the <code>org.apache.camel.management.event</code> package (like 
<code>CamelContextStartedEvent</code>)&#160;can be observed as CDI 
events</li><li>The new CDI event Camel endpoint enable&#160;<span>CDI events to 
be seamlessly consumed from (respectively produced by) Camel consumers 
(respectively Camel producers)</span></li><li><span><span>CDI beans annotated 
with the&#160;</span><code>@Converter</code><span>&#160;annotation are 
automatically registered as type 
converters</span></span></li><li><span><span>The CDI Camel contexts can 
be&#160;properly customised programmatically in bean constructor 
or&#160;<code>@PostConstruct</code> lifecycle 
callback</span></span></li><li>Camel routes configured in 
<code>RouteBuilder</code> beans are added before the corresponding Camel 
contexts get started</li><li><span>CDI Camel contexts are now properly adapted 
when deployed in OSGi containers and are registered as 
 OSGi services</span></li><li>Proper support of multiple Camel contexts across 
all the features<span><br clear="none"></span></li><li>A new <a shape="rect" 
href="cdi-testing.html">Camel CDI Test</a> module is available to ease testing 
of Camel CDI applications</li></ul></li><li>The&#160;<a shape="rect" 
href="xslt.html">XSLT</a> component now supports Saxon's&#160;<a shape="rect" 
class="external-link" 
href="http://www.saxonica.com/html/documentation/extensibility/integratedfunctions";
 rel="nofollow" title="Follow link">integrated extension 
functions</a>.</li><li>Added option&#160;<code>reuseChannel</code> to&#160;<a 
shape="rect" href="netty4.html">Netty4</a> which allows to reuse existing 
Channel when using a netty producer to call a server multiple times during 
routing an Exchange.</li><li>Idempotent Repository now supports optional 
serialized headers&#160;</li><li><a shape="rect" href="rest-dsl.html">Rest 
DSL</a> adjusted to swagger spec 2.0 and&#160;<a shape="rect" href="swagger-jav
 a.html">Swagger Java</a> as well.</li><li><a shape="rect" 
href="rest-dsl.html">Rest DSL</a> allows to specify response headers as 
well.</li><li><a shape="rect" href="rest-dsl.html">Rest DSL</a> is exposing the 
REST services using all local IP address (eg 0.0.0.0) by default.</li><li><a 
shape="rect" href="quartz2.html">Camel-quartz2</a> now supports customCalendar 
to avoid specific range of dates (Holidays for example) in Scheduler and 
Triggers.</li><li>Improved&#160;<a shape="rect" href="bean-language.html">Bean 
Language</a> to be able to invoke static methods on pure static 
classes.</li><li>When&#160;<a shape="rect" href="bean-language.html">Bean 
Language</a> failed to invoke a method from an&#160;OGNL method chain (eg 
invoke the following 3 methods "doFoo.doSomething.getBar") and a method 
returned null which prevent further method invocation as that would cause a 
NullPointerException. Now you have a more detailed exception message to better 
explain this.</li><li><a shape="rect" hr
 ef="jaxb.html">JAXB</a> data format and type converter now supports converting 
from XML to POJO for classes that are using ObjectFactory classes instead of 
XmlRootElement annotations.</li><li>The&#160;<a shape="rect" 
href="kafka.html">Kafka</a> component has been migrated to use the Java Kafka 
client instead of Scala. As such there may be migration efforts or code changes 
that can affect users upgrading.</li></ul><p>Fixed these 
issues</p><ul><li>The&#160;<a shape="rect" href="swagger-java.html">Swagger 
Java</a> now parses nested types in the POJO model that has been annotated with 
the swagger api annotations to use in the schema api 
model</li><li>Fixed&#160;<a shape="rect" href="rest-dsl.html">Rest DSL</a> 
with&#160;apiContextPath fail to start if there are 2 ore more rest's in 
use.</li><li>Fixed&#160;<a shape="rect" href="rest-dsl.html">Rest DSL</a> 
with&#160;<a shape="rect" href="swagger-java.html">Swagger Java</a> to output 
the swagger API with property placeholder resolved to ac
 tual used values.</li><li><a shape="rect" 
href="paho.html">Paho</a>&#160;component name is not limited to 4 characters 
anymore.</li><li>Fixed&#160;<a shape="rect" href="spring-boot.html">Spring 
Boot</a> not starting Camel routes if running in Spring Cloud.</li><li>Fixed an 
issue with&#160;<a shape="rect" href="swagger-java.html">Swagger Java</a> using 
api-docs could lead to api-doc route being added multiple times</li><li>Fixed a 
few things missing in the generated swagger model when using&#160;<a 
shape="rect" href="swagger-java.html">Swagger Java</a></li><li>Fixed 
using&#160;<code>statement.xxx</code> options on the&#160;<a shape="rect" 
href="jdbc.html">JDBC</a> consumer would only be used in first 
poll.</li><li>Fixed &#160;<a shape="rect" 
href="http.html">HTTP</a>&#160;and&#160;<a shape="rect" 
href="http4.html">HTTP4</a>&#160;to keep trailing slash if provided in uri when 
calling remote HTTP service.</li><li>Fixed&#160;<a shape="rect" 
href="oncompletion.html">OnCompletion</a> to k
 eep any caught exception stored as property on the&#160;<code>Exchange</code> 
which allows to access that information to know if there was an exception 
during routing.</li><li>Fixed an issue with&#160;<a shape="rect" 
href="bean.html">Bean</a> component or&#160;<a shape="rect" 
href="simple.html">Simple</a> language with OGNL method call, would pick method 
with java.lang.Object type over a better suited method, when the method is 
overloaded.</li><li>Fixed&#160;<code>camel-blueprint</code> to wait for the 
bundles with the component and data-formats the&#160;<a shape="rect" 
href="rest-dsl.html">Rest DSL</a> has been configured to use, are available 
before starting Camel.</li><li>Fixed an issue with&#160;<a shape="rect" 
href="error-handler.html">Error Handler</a> would log any handled(true) 
exceptions.</li><li>Fixed a memory leak if adding/removing routes using&#160;<a 
shape="rect" href="idempotent-consumer.html">Idempotent Consumer</a> where the 
repository would not be removed from the 
 JMX registry when routes is removed.</li><li>Fixed issue with&#160;<a 
shape="rect" href="spring-boot.html">Spring Boot</a> would eager shutdown some 
Camel resources like type converters, which spring-boot should let Camel handle 
the lifecycle of these resources.</li><li>Fixed&#160;<a shape="rect" 
href="cxfrs.html">CXFRS</a> using simple binding mode would use the 
content-length header from the incoming message in the response, instead of 
calculating the length based on the output message body.</li><li>Fixed an issue 
with&#160;<a shape="rect" href="simple.html">Simple</a> if starting the 
expression with&#160;<code>file:</code> could fail with an 
error.</li><li>Fixed&#160;<a shape="rect" href="spring-boot.html">Spring 
Boot</a> may report spring type converter errors if <a shape="rect" 
href="stream-caching.html">Stream caching</a> is enabled.</li><li>Fixed&#160;<a 
shape="rect" href="idempotent-consumer.html">Idempotent Consumer</a> would not 
propagate exception thrown from&#160;<code>I
 dempotentRepository</code> to Camel's&#160;<a shape="rect" 
href="error-handler.html">Error Handler</a> such 
as&#160;<code>onException</code><code><br clear="none"></code></li></ul><h3 
id="Camel2.17.0Release-New">New <a shape="rect" 
href="enterprise-integration-patterns.html">Enterprise Integration 
Patterns</a></h3><h3 id="Camel2.17.0Release-New.1">New <a shape="rect" 
href="components.html">Components</a></h3><ul><li><a shape="rect" 
href="aws-kinesis.html">camel-aws</a><span style="line-height: 1.42857;"> - AWS 
kinesis streams component added</span></li><li><a shape="rect" 
href="aws-ddbstream.html">camel-aws</a> - DynamoDB streams component 
added</li><li><a shape="rect" href="braintree.html">camel-braintree</a>&#160;- 
for interacting with Braintree Payments.</li><li><a shape="rect" 
href="cdi-testing.html">camel-test-cdi</a> - ease testing of Camel CDI 
applications</li><li><a shape="rect" href="etcd.html">camel-etcd</a><span 
style="line-height: 1.42857;">&#160;- Integrating Camel with
 &#160;</span><a shape="rect" class="external-link" 
href="https://coreos.com/etcd/"; style="line-height: 1.42857;" 
rel="nofollow">Etcd</a><span style="line-height: 1.42857;">&#160;key value 
store</span></li><li>camel-kubernetes - Integrates Camel with 
Kubernetes</li><li><a shape="rect" href="ignite.html">camel-ignite</a> - for 
working with Apache Ignite.</li><li>camel-ironmq - messaging with the <a 
shape="rect" class="external-link" href="http://www.iron.io/platform/ironmq/"; 
rel="nofollow">IronMQ</a> cloud messaging.</li><li><a shape="rect" 
href="jcache.html">camel-jcache</a><a shape="rect" 
href="mllp.html"><span>&#160;- support&#160;</span></a><a shape="rect" 
class="external-link" href="https://github.com/jsr107/jsr107spec"; 
rel="nofollow">JCache / JSR107</a><a shape="rect" 
href="mllp.html"><span>&#160;caching.</span></a></li><li><a shape="rect" 
href="mllp.html">camel-mllp</a> -&#160;<span style="color: rgb(0,0,0);">for 
working with the HL7 MLLP protocol. This is an alternative to&#16
 0;<a shape="rect" href="hl7.html">HL7</a> component.</span></li><li><span 
style="color: rgb(0,0,0);">camel-nats - for interacting with Nats messaging 
platform</span></li><li><a shape="rect" 
href="apache-spark.html">camel-spark</a> - bridges Apache Spark computations 
with Camel endpoints</li><li><a shape="rect" 
href="sql-stored-procedure.html">camel-sql</a> - Now supports calling stored 
procedures using the new <a shape="rect" 
href="sql-stored-procedure.html">sql-stored component</a>.</li></ul><h3 
id="Camel2.17.0Release-NewDSL">New DSL</h3><h3 
id="Camel2.17.0Release-NewAnnotations">New Annotations</h3><h3 
id="Camel2.17.0Release-NewDataFormats">New <a shape="rect" 
href="data-format.html">Data Formats</a></h3><ul><li><a shape="rect" 
href="mime-multipart.html">MIME-Multipart</a> - mime based data 
format.</li><li><a shape="rect" href="lzf-data-format.html">LZF Data Format</a> 
- LZF based data format.&#160;</li><li><a shape="rect" 
href="yaml-data-format.html">YAML Data Format</a> - YAML b
 ased data format.</li><li>Hessian - Caucho Hessian based data 
format.</li></ul><h3 id="Camel2.17.0Release-New.2">New <a shape="rect" 
href="languages.html">Languages</a></h3><h3 id="Camel2.17.0Release-New.3">New 
<a shape="rect" 
href="examples.html">Examples</a></h3><ul><li>camel-example-cdi-metrics - 
illustrates the integration between Camel, Dropwizard Metrics and 
CDI.</li><li>camel-example-cdi-properties -&#160;<span>illustrates the 
integration between Camel, DeltaSpike and CDI for configuration 
properties.</span></li><li><span>camel-example-cdi-osgi - a<span>&#160;CDI 
application using the SJMS component that can be executed inside an OSGi 
container using PAX 
CDI.</span></span></li><li><span>camel-example-cdi-rest-servlet 
-&#160;<span>illustrates the Camel REST DSL being used in a Web application 
that uses CDI as dependency injection 
framework.</span></span></li><li>camel-example-cdi-test - demonstrates the 
testing features that are provided as part of the integration between Came
 l and CDI.<span><span><br 
clear="none"></span></span></li><li>camel-example-spring-boot-metrics - showing 
a Camel spring-boot application that report metrics to Graphite. Requires 
Graphite running on your network.</li><li>camel-example-widget-gadget-cdi - The 
Widget and Gadget use-case from the EIP book implemented in Java with CDI 
dependency Injection.</li><li>camel-example-widget-gadget-java - The Widget and 
Gadget use-case from the EIP book implemented in plain old Java Main without 
any kind of <em>application 
server</em>.</li><li>camel-example-widget-gadget-xml - The Widget and Gadget 
use-case from the EIP book implemented in Spring XML without any Java code or 
any kind of&#160;<em>application server</em>.</li></ul><h3 
id="Camel2.17.0Release-New.4">New <a shape="rect" 
href="tutorials.html">Tutorials</a></h3><h2 
id="Camel2.17.0Release-APIbreaking">API breaking</h2><ul><li>As part of the <a 
shape="rect" href="cdi.html">Camel CDI</a> component refactoring:<ul><li>The 
<code>@Context
 Name</code>&#160;qualifier does not have a default empty value anymore as it 
is irrelevant</li><li>The&#160;CdiPropertiesComponent&#160;class has been 
removed, the standard&#160;PropertiesComponent&#160;can be used 
instead</li></ul></li></ul><h2 id="Camel2.17.0Release-KnownIssues">Known 
Issues</h2><h2 id="Camel2.17.0Release-Dependencyupgrades">Dependency 
upgrades</h2><ul><li>Apache Cassandra from 2.1.8 to 2.2.2</li><li>Apache 
Deltaspike from 1.5.1 to 1.5.2</li><li>Apache Gora from 0.6 to 
0.6.1</li><li>Apache Jackrabbit from 2.11.0 to 2.11.3</li><li>Apache Kafka from 
0.8.2.2 to 0.9.0.0</li><li>Apache Lucene from 4.10.4 to 5.2.1</li><li>Apache 
Mina from 2.0.9 to 2.0.10</li><li>Apache OpenEjb from 4.7.2 to 
4.7.3</li><li>Apache Solr from 4.10.4 to 5.2.1</li><li>Aws SDK Java to version 
1.10.37</li><li>Atmosphere from <span class="blob-code-inner">2.4.0</span> to 
2.4.1.4</li><li>Cassandra driver from 2.1.8 to 2.1.9</li><li>Cassandra-unit 
from 2.1.9.2 to 2.2.2.1</li><li>Cglib from 3.1 to 3
 .2.0</li><li>Classmate from 1.3.0 to 1.3.1</li><li>Chunk from 3.0.1 to 
3.1.2</li><li>Drools from 6.2.0.Final to 6.3.0.Final</li><li>EHCache from 
2.10.0 to 2.10.1</li><li>Elasticsearch from 1.7.3 to 2.0.0</li><li>Embedded 
Mongodb from 1.50.0 to 1.50.2</li><li>Facebook4j from 2.3.1 to 
2.4.2</li><li>GAE from 1.9.26 to 1.9.32</li><li>Google Gson from 2.4 to 
2.61</li><li>Hazelcast from 3.5.2 to 3.6</li><li>Infinispan from 8.0.1.Final to 
8.1.2.Final</li><li>Jackson from 2.6.3 to 2.7.1</li><li>Jboss Xnio from 
3.3.1.Final to 3.3.4.Final</li><li>Jboss Weld from 2.3.0.Final to 
2.3.3.Final</li><li>Jbpm from 6.2.0.Final to 6.3.0.Final</li><li>Jgit from 
<span class="blob-code-inner">4.1.<span class="x x-first 
x-last">0.201509280440</span>-r</span> to <span 
class="blob-code-inner">4.1.<span class="x x-first 
x-last">1.201511131810</span>-r</span></li><li>Joda-time from 2.8.2 to 
2.9.1</li><li>Json-path from 2.0.0 to 2.1.0</li><li>Jt400 from 8.6 to 
8.7</li><li>Kie from 6.2.0.Final to 6.3.0.Final</li
 ><li>Maven Exec plugin from 1.2.1 to 1.4.0</li><li>Mongodb Java driver from 
 >3.0.4 to 3.2.0</li><li>Mvel from 2.2.6.Final to 2.2.7.Final</li><li>Ognl from 
 >3.1 to 3.1.1</li><li>Olingo from 2.0.4 to 2.0.5</li><li>Optaplanner from 
 >6.2.0.Final to 6.3.0.Final</li><li>Pax-exam from 4.6.0 to 
 >4.8.0</li><li>Spring 4.1.x to 4.2.x</li><li>Spring-Boot 1.2.x to 
 >1.3.x</li><li>Spring Integration 2.x to 4.x</li><li>slf4j-api 1.6.x to 
 >1.7.x</li><li>Undertow from 1.3.3.Final to 1.3.7.Final</li><li>Vertx from 
 >3.1.0 to 3.2.0</li><li>Zookeeper from 3.4.6 to 3.4.7</li></ul><h2 
 >id="Camel2.17.0Release-Importantchangestoconsiderwhenupgrading">Important 
 >changes to consider when upgrading</h2><ul><li><strong>This is the last 
 >release that will support Java 1.7. Releases after this is expected to 
 >require Java 1.8+.&#160;</strong></li><li>Some changes in&#160;<a 
 >shape="rect" href="rest-dsl.html">Rest DSL</a>&#160;to adjust naming and 
 >types to the Swagger Spec 2.0</li><li>Any custom component that supports 
 >suspens
 ion in doSuspend/doResume should implement the 
new&#160;<code>Suspendable</code> marker interface, so Camel knows there is 
custom logic for suspension in the component.</li><li>Exchange and Message only 
output id in their toString method to avoid outputting any message details such 
as sensitive details from message bodies.</li><li>Removed camel-hbase as Karaf 
feature as it did not really work well in OSGi</li><li>Upgraded camel-hbase to 
Hadoop 2.x and HBase 1.1.x</li><li>camel-infinispan requires Java 
8.</li><li>camel-mustache requires Java 8.</li><li>Support for Spring 4.0.x is 
deprecated. Support for Spring 3.x is being <strong>removed</strong> in the 
next release.</li><li>Support for Karaf 2.x and 3.x is deprecated. And removed 
in next release, where Karaf 4.x onwards is only 
supported.</li><li>camel-jetty8 is deprecated and being removed in next 
release.</li><li>Moved some Camel tooling related dependencies (such as 
maven/plexus) from the Camel Parent BOM to the tooling BOM (to 
 have them separated).</li><li>camel-amqp do not support 0.9 
anymore.&#160;</li><li>camel-spring-integration feature has been removed from 
the Camel karaf.</li><li>The&#160;<a shape="rect" href="mail.html">Mail</a> 
component now requires to configure to, cc, and bcc using lower case keys, eg 
to=f...@bar.com, instead of&#160;<a shape="rect" class="external-link" 
href="mailto:To=f...@bar.com"; rel="nofollow">To=f...@bar.com</a>&#160;as 
previously.</li><li>The&#160;<a shape="rect" 
href="file2.html">File</a>&#160;consumer no longer probe the file content by 
default. See the option&#160;<code>probeContentType</code> for more 
details.</li><li>If using&#160;<a shape="rect" 
href="bean.html">Bean</a>&#160;or&#160;<a shape="rect" 
href="class.html">Class</a>&#160;component and specifying additional parameters 
in the endpoint uri to configure on the bean, then these options should now be 
prefixed with bean., eg <code>foo=123</code>&#160;is now 
<code>bean.foo=123</code>.</li><li>The&#160;<a shape="re
 ct" href="twitter.html">Twitter</a> delay option is changed from seconds to 
milli seconds by default, eg 10 should be 10000 to indicate 10 seconds. This is 
aligned how other components with delay option behaves.&#160;</li><li>The 
options&#160;<code>attributeNames</code> 
and&#160;<code>messageAttributeNames</code> on&#160;<a shape="rect" 
href="aws-sqs.html">AWS-SQS</a> is changed to a string type where you can 
separate multiple values using comma. Before the type was a Collection which 
was much harder to configure in the Camel uris.</li><li><a shape="rect" 
href="rest-dsl.html">Rest DSL</a> is exposing the REST services using all local 
IP address (eg 0.0.0.0) by default, instead of the local IP address of the 
host.</li><li>The&#160;<a shape="rect" href="hbase.html">hbase</a> component 
now require row mapping from the endpoint uri to be prefixed with <code 
style="line-height: 1.42857;">row.</code>&#160;as prefix.<br 
clear="none">Before: <code>family=info&amp;qualifier=firstName&amp;fam
 
ily2=birthdate&amp;qualifier2=year</code>.&#160;After:&#160;<code>row.family=info&amp;row.qualifier=firstName&amp;row.family2=birthdate&amp;row.qualifier2=year</code>.</li><li>As
 part of the <a shape="rect" href="cdi.html">Camel CDI</a> component 
refactoring,&#160;<em>DeltaSpike</em> is not used anymore for the sourcing of 
the configuration properties. This new version of the component is agnostic to 
any configuration sourcing mechanism and delegates that concern to the 
application so that it can declare a 
custom&#160;<code>PropertiesComponent</code>&#160;bean whose sourcing is 
tailored to its need. <em>DeltaSpike</em> can still be used by the application 
by declaring a&#160;<code>PropertiesComponent</code>&#160;bean configured with 
a&#160;<code>PropertiesParser</code>&#160;relying on <em>DeltaSpike</em>. See 
the&#160;<code>camel-example-cdi-properties</code>&#160;example for more 
details.</li><li>The&#160;<a shape="rect" href="kafka.html">Kafka</a> component 
has been migrated to us
 e the Java Kafka client instead of Scala. As such there may be migration 
efforts or code changes that can affect users upgrading.</li></ul><h2 
id="Camel2.17.0Release-GettingtheDistributions">Getting the 
Distributions</h2><h3 id="Camel2.17.0Release-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" hre
 
f="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.17.0Release-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="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 for Windows</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><div
 class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Source for Unix/Linux/Cygwin</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.tar.gz";>apache-camel-x.y.x-src.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-src.tar.gz.asc";>apache-camel-x.y.x-src.tar.gz.asc</a></p></td></tr></tbody></table></div><h3
 id="Camel2.17.0Release-Gettingthe
 BinariesusingMaven2">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-the-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.17.0Release-Camel2.17.0release(currentlyinprogress)">Camel 2.17.0 
release (currently in progress)</h1><div 
style="padding-right:20px;float:left;margin-left:-20px;"><p><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image 
confluence-external-resource" 
src="http://camel.apache.org/download.data/camel-box-v1.0-150x200.png"; 
data-image-src="http://camel.apache.org/download.data/camel-box-v1.0-150x200.png";></span></p></div><div
 style="min-height:200px">&#160;</div><h2 
id="Camel2.17.0Release-NewandNoteworthy">New and Noteworthy</h2><p>Welcome to 
the x.y.z release which approx XXX issues resolved (new features, improvements 
and bug fixes such as...)</p><ul><li>The component documentation generated from 
the source code has been double checked to be up to date and include all the 
options the endpoints supports.</li><li><a shape="rect" href="tools.html">Camel 
commands</a> for&#160;<a shape="rect" href="spring-b
 oot.html">Spring Boot</a></li><li>Many improvements to&#160;Camel&#160;<a 
shape="rect" href="kura.html">Kura</a></li><li>Added transacted option 
to&#160;<a shape="rect" href="sql-component.html">SQL Component</a> when used 
as a consumer in a transacted route.</li><li>Added support for UPDATE operation 
to&#160;<a shape="rect" 
href="elasticsearch.html">ElasticSearch</a>.</li><li>Allow to reuse existing 
configured Elasticsearch Client on the <a shape="rect" 
href="elasticsearch.html">ElasticSearch</a> component, instead of creating a 
client per endpoint.&#160;</li><li>The&#160;<code>include</code> 
and&#160;<code>exclude</code> options on&#160;<a shape="rect" 
href="file2.html">File2</a> and&#160;<a shape="rect" href="ftp.html">FTP</a> 
endpoints is now case in-sensitive out of the box.</li><li>Resource based 
component such as&#160;<a shape="rect" href="xslt.html">XSLT</a>,&#160;<a 
shape="rect" href="velocity.html">Velocity</a>&#160;etc can load the resource 
file from the&#160;<a shape="re
 ct" href="registry.html">Registry</a>&#160;by using&#160;<code>ref:</code> as 
prefix.</li><li><span>Upgraded camel-amqp to the latest qpid-jms-client (also 
AMQP &lt; 1.0 is not supported anymore).</span></li><li><span>Many improvements 
to Camel <a shape="rect" href="amqp.html">AMQP</a> 
component.</span></li><li><span>The&#160;<a shape="rect" 
href="metrics-component.html">Metrics Component</a> allows to capture&#160;<a 
shape="rect" href="message-history.html">Message History</a> performance 
statistics with 
the&#160;<code>MetricsMessageHistoryFactory&#160;</code></span></li><li>Reduced 
the number of mbeans enlisted in the services tree, to only include mbeans that 
has value to be managed.</li><li>The&#160;<a shape="rect" 
href="elasticsearch.html">Elasticsearch Component</a>&#160;now supports 
MultiGet operation</li><li>The&#160;<a shape="rect" 
href="throttler.html">Throttler</a> has been improved to be more performant and 
use a rolling window for time periods which gives a better flow.
 </li><li>The&#160;<code>setHeader</code> 
and&#160;<code>setExchangeProperty</code> allows to use a dynamic header key 
using the&#160;<a shape="rect" href="simple.html">Simple</a>&#160;language if 
the name of the key is a&#160;<a shape="rect" 
href="simple.html">Simple</a>&#160;language expression.</li><li>Add collate 
function to&#160;<a shape="rect" href="simple.html">Simple</a> language to make 
it easier to split a message body into sub lists of a specified size. The 
function is similar to the collate function from Groovy.</li><li>The&#160;<a 
shape="rect" href="camel-run-maven-goal.html">Camel Run Maven Goal</a> is able 
to auto detect if its a OSGi Blueprint or CDI project so end users no longer 
have to explicit configure this on the plugin.</li><li><a shape="rect" 
href="elasticsearch.html">Camel-Elasticsearch</a> now supports Multiget, 
Multisearch and exists operation</li><li><a shape="rect" 
href="git.html">Camel-Git</a> now supports Cherry-pick 
operation</li><li>Stopping the&#160;
 <code>Main</code> class from JMX will now trigger shutdown of the Main 
class/JVM also, as it does when hitting ctrl + c.</li><li>Added option to 
skipFirst to the&#160;<a shape="rect" href="tokenizer.html">Tokenizer</a> 
language to make it easy to skip the very first element, when for example 
splitting a CSV file using the&#160;<a shape="rect" 
href="splitter.html">Splitter</a> EIP.</li><li>The&#160;<a shape="rect" 
href="rest-dsl.html">Rest DSL</a> now supports default values for query 
parameters</li><li>The&#160;<a shape="rect" href="rest-dsl.html">Rest DSL</a> 
now only binds from POJO to JSon/XML if the content-type is for json or xml. 
This allows you to specify a custom content-type and omit the binding, such as 
when having binary payloads.</li><li>Exchange and Message only output id in 
their toString method to avoid outputting any message details such as sensitive 
details from message bodies.</li><li>Camel&#160;<a shape="rect" 
href="error-handler.html">Error Handler</a> no longer 
 log message body/header details when logging the <a shape="rect" 
href="message-history.html">Message History</a>. This avoids logging 
any&#160;sensitive details from message bodies.</li><li>Camel&#160;<a 
shape="rect" href="exception-clause.html">Exception Clause</a> and&#160;<a 
shape="rect" href="error-handler.html">Error Handler</a> now supports using a 
custom&#160;<code>Processor</code> to be invoked right after an exception was 
thrown using the new&#160;<strong>onExceptionOccurred</strong> 
option.</li><li><a shape="rect" href="rabbitmq.html">RabbitMQ</a> consumer more 
resilient to auto re-connect in case of connection failures</li><li>The&#160;<a 
shape="rect" href="json.html">JSON</a> <code>camel-jackson</code>&#160;can be 
used as a type converter to convert json to/from POJO and String/byte[] types, 
if enabled.</li><li>The&#160;<a shape="rect" href="sql-component.html">SQL 
Component</a> now supports loading the SQL queries from external files on the 
classpath or file system, whe
 re you can format the queries using newlines and 
indenting.</li><li>The&#160;<a shape="rect" href="mail.html">Mail</a> consumer 
allows to use an idempotent repository&#160;which allows to cluster consuming 
from the same mailbox, and let the repository coordinate whether a mail message 
is valid for the consumer to process.</li><li>Added support for completion 
interval on the&#160;<a shape="rect" href="sjms-batch.html">SJMS Batch</a> 
component, which allows to trigger batch completion in a fixed scheduled 
interval.</li><li>The&#160;<a shape="rect" href="http.html">HTTP</a> 
and&#160;<a shape="rect" href="http4.html">HTTP4</a> producers now support 
the&#160;<code>disableStreamCache</code> option to allow to use the raw 
response stream as the message body instead of wrapping using&#160;<a 
shape="rect" href="stream-caching.html">Stream caching</a></li><li>The <a 
shape="rect" href="cdi.html">Camel CDI</a> component has been improved to 
better fit into the CDI programming model, cover a lar
 ger set of containers, and provide these new features:<ul><li>The Camel events 
from the <code>org.apache.camel.management.event</code> package (like 
<code>CamelContextStartedEvent</code>)&#160;can be observed as CDI 
events</li><li>The new CDI event Camel endpoint enable&#160;<span>CDI events to 
be seamlessly consumed from (respectively produced by) Camel consumers 
(respectively Camel producers)</span></li><li><span><span>CDI beans annotated 
with the&#160;</span><code>@Converter</code><span>&#160;annotation are 
automatically registered as type 
converters</span></span></li><li><span><span>The CDI Camel contexts can 
be&#160;properly customised programmatically in bean constructor 
or&#160;<code>@PostConstruct</code> lifecycle 
callback</span></span></li><li>Camel routes configured in 
<code>RouteBuilder</code> beans are added before the corresponding Camel 
contexts get started</li><li><span>CDI Camel contexts are now properly adapted 
when deployed in OSGi containers and are registered as 
 OSGi services</span></li><li>Proper support of multiple Camel contexts across 
all the features<span><br clear="none"></span></li><li>A new <a shape="rect" 
href="cdi-testing.html">Camel CDI Test</a> module is available to ease testing 
of Camel CDI applications</li></ul></li><li>The&#160;<a shape="rect" 
href="xslt.html">XSLT</a> component now supports Saxon's&#160;<a shape="rect" 
class="external-link" 
href="http://www.saxonica.com/html/documentation/extensibility/integratedfunctions";
 rel="nofollow" title="Follow link">integrated extension 
functions</a>.</li><li>Added option&#160;<code>reuseChannel</code> to&#160;<a 
shape="rect" href="netty4.html">Netty4</a> which allows to reuse existing 
Channel when using a netty producer to call a server multiple times during 
routing an Exchange.</li><li>Idempotent Repository now supports optional 
serialized headers&#160;</li><li><a shape="rect" href="rest-dsl.html">Rest 
DSL</a> adjusted to swagger spec 2.0 and&#160;<a shape="rect" href="swagger-jav
 a.html">Swagger Java</a> as well.</li><li><a shape="rect" 
href="rest-dsl.html">Rest DSL</a> allows to specify response headers as 
well.</li><li><a shape="rect" href="rest-dsl.html">Rest DSL</a> is exposing the 
REST services using all local IP address (eg 0.0.0.0) by default.</li><li><a 
shape="rect" href="quartz2.html">Camel-quartz2</a> now supports customCalendar 
to avoid specific range of dates (Holidays for example) in Scheduler and 
Triggers.</li><li>Improved&#160;<a shape="rect" href="bean-language.html">Bean 
Language</a> to be able to invoke static methods on pure static 
classes.</li><li>When&#160;<a shape="rect" href="bean-language.html">Bean 
Language</a> failed to invoke a method from an&#160;OGNL method chain (eg 
invoke the following 3 methods "doFoo.doSomething.getBar") and a method 
returned null which prevent further method invocation as that would cause a 
NullPointerException. Now you have a more detailed exception message to better 
explain this.</li><li><a shape="rect" hr
 ef="jaxb.html">JAXB</a> data format and type converter now supports converting 
from XML to POJO for classes that are using ObjectFactory classes instead of 
XmlRootElement annotations.</li><li>The&#160;<a shape="rect" 
href="kafka.html">Kafka</a> component has been migrated to use the Java Kafka 
client instead of Scala. As such there may be migration efforts or code changes 
that can affect users upgrading.</li><li>The&#160;<a shape="rect" 
href="loop.html">Loop</a> EIP now allows to run in a while loop mode, so it 
loops until the predicate returns false.</li></ul><p>Fixed these 
issues</p><ul><li>The&#160;<a shape="rect" href="swagger-java.html">Swagger 
Java</a> now parses nested types in the POJO model that has been annotated with 
the swagger api annotations to use in the schema api 
model</li><li>Fixed&#160;<a shape="rect" href="rest-dsl.html">Rest DSL</a> 
with&#160;apiContextPath fail to start if there are 2 ore more rest's in 
use.</li><li>Fixed&#160;<a shape="rect" href="rest-dsl.htm
 l">Rest DSL</a> with&#160;<a shape="rect" href="swagger-java.html">Swagger 
Java</a> to output the swagger API with property placeholder resolved to actual 
used values.</li><li><a shape="rect" href="paho.html">Paho</a>&#160;component 
name is not limited to 4 characters anymore.</li><li>Fixed&#160;<a shape="rect" 
href="spring-boot.html">Spring Boot</a> not starting Camel routes if running in 
Spring Cloud.</li><li>Fixed an issue with&#160;<a shape="rect" 
href="swagger-java.html">Swagger Java</a> using api-docs could lead to api-doc 
route being added multiple times</li><li>Fixed a few things missing in the 
generated swagger model when using&#160;<a shape="rect" 
href="swagger-java.html">Swagger Java</a></li><li>Fixed 
using&#160;<code>statement.xxx</code> options on the&#160;<a shape="rect" 
href="jdbc.html">JDBC</a> consumer would only be used in first 
poll.</li><li>Fixed &#160;<a shape="rect" 
href="http.html">HTTP</a>&#160;and&#160;<a shape="rect" 
href="http4.html">HTTP4</a>&#160;to keep
  trailing slash if provided in uri when calling remote HTTP 
service.</li><li>Fixed&#160;<a shape="rect" 
href="oncompletion.html">OnCompletion</a> to keep any caught exception stored 
as property on the&#160;<code>Exchange</code> which allows to access that 
information to know if there was an exception during routing.</li><li>Fixed an 
issue with&#160;<a shape="rect" href="bean.html">Bean</a> component or&#160;<a 
shape="rect" href="simple.html">Simple</a> language with OGNL method call, 
would pick method with java.lang.Object type over a better suited method, when 
the method is overloaded.</li><li>Fixed&#160;<code>camel-blueprint</code> to 
wait for the bundles with the component and data-formats the&#160;<a 
shape="rect" href="rest-dsl.html">Rest DSL</a> has been configured to use, are 
available before starting Camel.</li><li>Fixed an issue with&#160;<a 
shape="rect" href="error-handler.html">Error Handler</a> would log any 
handled(true) exceptions.</li><li>Fixed a memory leak if adding/
 removing routes using&#160;<a shape="rect" 
href="idempotent-consumer.html">Idempotent Consumer</a> where the repository 
would not be removed from the JMX registry when routes is 
removed.</li><li>Fixed issue with&#160;<a shape="rect" 
href="spring-boot.html">Spring Boot</a> would eager shutdown some Camel 
resources like type converters, which spring-boot should let Camel handle the 
lifecycle of these resources.</li><li>Fixed&#160;<a shape="rect" 
href="cxfrs.html">CXFRS</a> using simple binding mode would use the 
content-length header from the incoming message in the response, instead of 
calculating the length based on the output message body.</li><li>Fixed an issue 
with&#160;<a shape="rect" href="simple.html">Simple</a> if starting the 
expression with&#160;<code>file:</code> could fail with an 
error.</li><li>Fixed&#160;<a shape="rect" href="spring-boot.html">Spring 
Boot</a> may report spring type converter errors if <a shape="rect" 
href="stream-caching.html">Stream caching</a> is enab
 led.</li><li>Fixed&#160;<a shape="rect" 
href="idempotent-consumer.html">Idempotent Consumer</a> would not propagate 
exception thrown from&#160;<code>IdempotentRepository</code> to Camel's&#160;<a 
shape="rect" href="error-handler.html">Error Handler</a> such 
as&#160;<code>onException</code><code><br clear="none"></code></li></ul><h3 
id="Camel2.17.0Release-New">New <a shape="rect" 
href="enterprise-integration-patterns.html">Enterprise Integration 
Patterns</a></h3><h3 id="Camel2.17.0Release-New.1">New <a shape="rect" 
href="components.html">Components</a></h3><ul><li><a shape="rect" 
href="aws-kinesis.html">camel-aws</a><span style="line-height: 1.42857;"> - AWS 
kinesis streams component added</span></li><li><a shape="rect" 
href="aws-ddbstream.html">camel-aws</a> - DynamoDB streams component 
added</li><li><a shape="rect" href="braintree.html">camel-braintree</a>&#160;- 
for interacting with Braintree Payments.</li><li><a shape="rect" 
href="cdi-testing.html">camel-test-cdi</a> - ease testi
 ng of Camel CDI applications</li><li><a shape="rect" 
href="etcd.html">camel-etcd</a><span style="line-height: 1.42857;">&#160;- 
Integrating Camel with&#160;</span><a shape="rect" class="external-link" 
href="https://coreos.com/etcd/"; style="line-height: 1.42857;" 
rel="nofollow">Etcd</a><span style="line-height: 1.42857;">&#160;key value 
store</span></li><li>camel-kubernetes - Integrates Camel with 
Kubernetes</li><li><a shape="rect" href="ignite.html">camel-ignite</a> - for 
working with Apache Ignite.</li><li>camel-ironmq - messaging with the <a 
shape="rect" class="external-link" href="http://www.iron.io/platform/ironmq/"; 
rel="nofollow">IronMQ</a> cloud messaging.</li><li><a shape="rect" 
href="jcache.html">camel-jcache</a><a shape="rect" 
href="mllp.html"><span>&#160;- support&#160;</span></a><a shape="rect" 
class="external-link" href="https://github.com/jsr107/jsr107spec"; 
rel="nofollow">JCache / JSR107</a><a shape="rect" 
href="mllp.html"><span>&#160;caching.</span></a></li><li><a shap
 e="rect" href="mllp.html">camel-mllp</a> -&#160;<span style="color: 
rgb(0,0,0);">for working with the HL7 MLLP protocol. This is an alternative 
to&#160;<a shape="rect" href="hl7.html">HL7</a> component.</span></li><li><span 
style="color: rgb(0,0,0);">camel-nats - for interacting with Nats messaging 
platform</span></li><li><a shape="rect" 
href="apache-spark.html">camel-spark</a> - bridges Apache Spark computations 
with Camel endpoints</li><li><a shape="rect" 
href="sql-stored-procedure.html">camel-sql</a> - Now supports calling stored 
procedures using the new <a shape="rect" 
href="sql-stored-procedure.html">sql-stored component</a>.</li></ul><h3 
id="Camel2.17.0Release-NewDSL">New DSL</h3><h3 
id="Camel2.17.0Release-NewAnnotations">New Annotations</h3><h3 
id="Camel2.17.0Release-NewDataFormats">New <a shape="rect" 
href="data-format.html">Data Formats</a></h3><ul><li><a shape="rect" 
href="mime-multipart.html">MIME-Multipart</a> - mime based data 
format.</li><li><a shape="rect" href="lzf-d
 ata-format.html">LZF Data Format</a> - LZF based data format.&#160;</li><li><a 
shape="rect" href="yaml-data-format.html">YAML Data Format</a> - YAML based 
data format.</li><li>Hessian - Caucho Hessian based data format.</li></ul><h3 
id="Camel2.17.0Release-New.2">New <a shape="rect" 
href="languages.html">Languages</a></h3><h3 id="Camel2.17.0Release-New.3">New 
<a shape="rect" 
href="examples.html">Examples</a></h3><ul><li>camel-example-cdi-metrics - 
illustrates the integration between Camel, Dropwizard Metrics and 
CDI.</li><li>camel-example-cdi-properties -&#160;<span>illustrates the 
integration between Camel, DeltaSpike and CDI for configuration 
properties.</span></li><li><span>camel-example-cdi-osgi - a<span>&#160;CDI 
application using the SJMS component that can be executed inside an OSGi 
container using PAX 
CDI.</span></span></li><li><span>camel-example-cdi-rest-servlet 
-&#160;<span>illustrates the Camel REST DSL being used in a Web application 
that uses CDI as dependency injection
  framework.</span></span></li><li>camel-example-cdi-test - demonstrates the 
testing features that are provided as part of the integration between Camel and 
CDI.<span><span><br 
clear="none"></span></span></li><li>camel-example-spring-boot-metrics - showing 
a Camel spring-boot application that report metrics to Graphite. Requires 
Graphite running on your network.</li><li>camel-example-widget-gadget-cdi - The 
Widget and Gadget use-case from the EIP book implemented in Java with CDI 
dependency Injection.</li><li>camel-example-widget-gadget-java - The Widget and 
Gadget use-case from the EIP book implemented in plain old Java Main without 
any kind of <em>application 
server</em>.</li><li>camel-example-widget-gadget-xml - The Widget and Gadget 
use-case from the EIP book implemented in Spring XML without any Java code or 
any kind of&#160;<em>application server</em>.</li></ul><h3 
id="Camel2.17.0Release-New.4">New <a shape="rect" 
href="tutorials.html">Tutorials</a></h3><h2 id="Camel2.17.0Relea
 se-APIbreaking">API breaking</h2><ul><li>As part of the <a shape="rect" 
href="cdi.html">Camel CDI</a> component refactoring:<ul><li>The 
<code>@ContextName</code>&#160;qualifier does not have a default empty value 
anymore as it is irrelevant</li><li>The&#160;CdiPropertiesComponent&#160;class 
has been removed, the standard&#160;PropertiesComponent&#160;can be used 
instead</li></ul></li></ul><h2 id="Camel2.17.0Release-KnownIssues">Known 
Issues</h2><h2 id="Camel2.17.0Release-Dependencyupgrades">Dependency 
upgrades</h2><ul><li>Apache Cassandra from 2.1.8 to 2.2.2</li><li>Apache 
Deltaspike from 1.5.1 to 1.5.2</li><li>Apache Gora from 0.6 to 
0.6.1</li><li>Apache Jackrabbit from 2.11.0 to 2.11.3</li><li>Apache Kafka from 
0.8.2.2 to 0.9.0.0</li><li>Apache Lucene from 4.10.4 to 5.2.1</li><li>Apache 
Mina from 2.0.9 to 2.0.10</li><li>Apache OpenEjb from 4.7.2 to 
4.7.3</li><li>Apache Solr from 4.10.4 to 5.2.1</li><li>Aws SDK Java to version 
1.10.37</li><li>Atmosphere from <span class="blob-code-
 inner">2.4.0</span> to 2.4.1.4</li><li>Cassandra driver from 2.1.8 to 
2.1.9</li><li>Cassandra-unit from 2.1.9.2 to 2.2.2.1</li><li>Cglib from 3.1 to 
3.2.0</li><li>Classmate from 1.3.0 to 1.3.1</li><li>Chunk from 3.0.1 to 
3.1.2</li><li>Drools from 6.2.0.Final to 6.3.0.Final</li><li>EHCache from 
2.10.0 to 2.10.1</li><li>Elasticsearch from 1.7.3 to 2.0.0</li><li>Embedded 
Mongodb from 1.50.0 to 1.50.2</li><li>Facebook4j from 2.3.1 to 
2.4.2</li><li>GAE from 1.9.26 to 1.9.32</li><li>Google Gson from 2.4 to 
2.61</li><li>Hazelcast from 3.5.2 to 3.6</li><li>Infinispan from 8.0.1.Final to 
8.1.2.Final</li><li>Jackson from 2.6.3 to 2.7.1</li><li>Jboss Xnio from 
3.3.1.Final to 3.3.4.Final</li><li>Jboss Weld from 2.3.0.Final to 
2.3.3.Final</li><li>Jbpm from 6.2.0.Final to 6.3.0.Final</li><li>Jgit from 
<span class="blob-code-inner">4.1.<span class="x x-first 
x-last">0.201509280440</span>-r</span> to <span 
class="blob-code-inner">4.1.<span class="x x-first 
x-last">1.201511131810</span>-r</span></li
 ><li>Joda-time from 2.8.2 to 2.9.1</li><li>Json-path from 2.0.0 to 
 >2.1.0</li><li>Jt400 from 8.6 to 8.7</li><li>Kie from 6.2.0.Final to 
 >6.3.0.Final</li><li>Maven Exec plugin from 1.2.1 to 1.4.0</li><li>Mongodb 
 >Java driver from 3.0.4 to 3.2.0</li><li>Mvel from 2.2.6.Final to 
 >2.2.7.Final</li><li>Ognl from 3.1 to 3.1.1</li><li>Olingo from 2.0.4 to 
 >2.0.5</li><li>Optaplanner from 6.2.0.Final to 6.3.0.Final</li><li>Pax-exam 
 >from 4.6.0 to 4.8.0</li><li>Spring 4.1.x to 4.2.x</li><li>Spring-Boot 1.2.x 
 >to 1.3.x</li><li>Spring Integration 2.x to 4.x</li><li>slf4j-api 1.6.x to 
 >1.7.x</li><li>Undertow from 1.3.3.Final to 1.3.7.Final</li><li>Vertx from 
 >3.1.0 to 3.2.0</li><li>Zookeeper from 3.4.6 to 3.4.7</li></ul><h2 
 >id="Camel2.17.0Release-Importantchangestoconsiderwhenupgrading">Important 
 >changes to consider when upgrading</h2><ul><li><strong>This is the last 
 >release that will support Java 1.7. Releases after this is expected to 
 >require Java 1.8+.&#160;</strong></li><li>Some changes in&#160;<a sha
 pe="rect" href="rest-dsl.html">Rest DSL</a>&#160;to adjust naming and types to 
the Swagger Spec 2.0</li><li>Any custom component that supports suspension in 
doSuspend/doResume should implement the new&#160;<code>Suspendable</code> 
marker interface, so Camel knows there is custom logic for suspension in the 
component.</li><li>Exchange and Message only output id in their toString method 
to avoid outputting any message details such as sensitive details from message 
bodies.</li><li>Removed camel-hbase as Karaf feature as it did not really work 
well in OSGi</li><li>Upgraded camel-hbase to Hadoop 2.x and HBase 
1.1.x</li><li>camel-infinispan requires Java 8.</li><li>camel-mustache requires 
Java 8.</li><li>Support for Spring 4.0.x is deprecated. Support for Spring 3.x 
is being <strong>removed</strong> in the next release.</li><li>Support for 
Karaf 2.x and 3.x is deprecated. And removed in next release, where Karaf 4.x 
onwards is only supported.</li><li>camel-jetty8 is deprecated and being r
 emoved in next release.</li><li>Moved some Camel tooling related dependencies 
(such as maven/plexus) from the Camel Parent BOM to the tooling BOM (to have 
them separated).</li><li>camel-amqp do not support 0.9 
anymore.&#160;</li><li>camel-spring-integration feature has been removed from 
the Camel karaf.</li><li>The&#160;<a shape="rect" href="mail.html">Mail</a> 
component now requires to configure to, cc, and bcc using lower case keys, eg 
to=f...@bar.com, instead of&#160;<a shape="rect" class="external-link" 
href="mailto:To=f...@bar.com"; rel="nofollow">To=f...@bar.com</a>&#160;as 
previously.</li><li>The&#160;<a shape="rect" 
href="file2.html">File</a>&#160;consumer no longer probe the file content by 
default. See the option&#160;<code>probeContentType</code> for more 
details.</li><li>If using&#160;<a shape="rect" 
href="bean.html">Bean</a>&#160;or&#160;<a shape="rect" 
href="class.html">Class</a>&#160;component and specifying additional parameters 
in the endpoint uri to configure on the be
 an, then these options should now be prefixed with bean., eg 
<code>foo=123</code>&#160;is now <code>bean.foo=123</code>.</li><li>The&#160;<a 
shape="rect" href="twitter.html">Twitter</a> delay option is changed from 
seconds to milli seconds by default, eg 10 should be 10000 to indicate 10 
seconds. This is aligned how other components with delay option 
behaves.&#160;</li><li>The options&#160;<code>attributeNames</code> 
and&#160;<code>messageAttributeNames</code> on&#160;<a shape="rect" 
href="aws-sqs.html">AWS-SQS</a> is changed to a string type where you can 
separate multiple values using comma. Before the type was a Collection which 
was much harder to configure in the Camel uris.</li><li><a shape="rect" 
href="rest-dsl.html">Rest DSL</a> is exposing the REST services using all local 
IP address (eg 0.0.0.0) by default, instead of the local IP address of the 
host.</li><li>The&#160;<a shape="rect" href="hbase.html">hbase</a> component 
now require row mapping from the endpoint uri to be p
 refixed with <code style="line-height: 1.42857;">row.</code>&#160;as 
prefix.<br clear="none">Before: 
<code>family=info&amp;qualifier=firstName&amp;family2=birthdate&amp;qualifier2=year</code>.&#160;After:&#160;<code>row.family=info&amp;row.qualifier=firstName&amp;row.family2=birthdate&amp;row.qualifier2=year</code>.</li><li>As
 part of the <a shape="rect" href="cdi.html">Camel CDI</a> component 
refactoring,&#160;<em>DeltaSpike</em> is not used anymore for the sourcing of 
the configuration properties. This new version of the component is agnostic to 
any configuration sourcing mechanism and delegates that concern to the 
application so that it can declare a 
custom&#160;<code>PropertiesComponent</code>&#160;bean whose sourcing is 
tailored to its need. <em>DeltaSpike</em> can still be used by the application 
by declaring a&#160;<code>PropertiesComponent</code>&#160;bean configured with 
a&#160;<code>PropertiesParser</code>&#160;relying on <em>DeltaSpike</em>. See 
the&#160;<code>camel-examp
 le-cdi-properties</code>&#160;example for more details.</li><li>The&#160;<a 
shape="rect" href="kafka.html">Kafka</a> component has been migrated to use the 
Java Kafka client instead of Scala. As such there may be migration efforts or 
code changes that can affect users upgrading.</li></ul><h2 
id="Camel2.17.0Release-GettingtheDistributions">Getting the 
Distributions</h2><h3 id="Camel2.17.0Release-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/ap
 ache-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-ico
 n 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.17.0Release-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="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 for Windows</p></td><td col
 span="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><div
 class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Source for Unix/Linux/Cygwin</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.tar.gz";>apache-camel-x.y.x-src.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-src.tar.gz.asc">apache-camel-x.y.x-src.tar.gz.asc</a></p></td></tr></tbody></table></div><h3
 id="Camel2.17.0Release-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-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/loop.html
==============================================================================
--- websites/production/camel/content/loop.html (original)
+++ websites/production/camel/content/loop.html Fri Mar 11 08:20:16 2016
@@ -86,53 +86,19 @@
        <tbody>
         <tr>
         <td valign="top" width="100%">
-<div class="wiki-content maincontent"><h2 id="Loop-Loop">Loop</h2>
-<p>The Loop allows for processing a message a number of times, possibly in a 
different way for each iteration.  Useful mostly during testing.</p>
-
-<div class="confluence-information-macro 
confluence-information-macro-information"><p class="title">Default 
mode</p><span class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
-<p>Notice by default the loop uses the same exchange throughout the looping. 
So the result from the previous iteration will be used for the next (eg <a 
shape="rect" href="pipes-and-filters.html">Pipes And Filters</a>). From 
<strong>Camel 2.8</strong> onwards you can enable copy mode instead. See the 
options table for more details.</p></div></div>
-
-<h3 id="Loop-Options">Options</h3>
-<div class="confluenceTableSmall"></div>
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p> Name </p></th><th colspan="1" 
rowspan="1" class="confluenceTh"><p> Default Value </p></th><th colspan="1" 
rowspan="1" class="confluenceTh"><p> Description </p></th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p> <code>copy</code> </p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p> <code>false</code> 
</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 
2.8:</strong> Whether or not copy mode is used. If <code>false</code> then the 
same Exchange will be used for each iteration. So the result from the previous 
iteration will be <em>visible</em> for the next iteration. Instead you can 
enable copy mode, and then each iteration <em>restarts</em> with a fresh copy 
of the input <a shape="rect" href="exchange.html">Exchange</a>. 
</p></td></tr></tbody></table></div>
-
-
-<h3 id="Loop-Exchangeproperties">Exchange properties</h3>
-<p>For each iteration two properties are set on the <code>Exchange</code>.  
Processors can rely on these properties to process the <a shape="rect" 
href="message.html">Message</a> in different ways.</p>
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p> Property </p></th><th 
colspan="1" rowspan="1" class="confluenceTh"><p> Description 
</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> 
<code>CamelLoopSize</code> </p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p> Total number of loops </p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p> <code>CamelLoopIndex</code> 
</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Index of the 
current iteration (0 based) </p></td></tr></tbody></table></div>
-
-
-<h4 id="Loop-Examples">Examples</h4>
-
-<p>The following example shows how to take a request from the 
<strong>direct:x</strong> endpoint, then send the message repetitively to 
<strong>mock:result</strong>.  The number of times the message is sent is 
either passed as an argument to <code>loop()</code>, or determined at runtime 
by evaluating an expression.  The expression <strong>must</strong> evaluate to 
an <code>int</code>, otherwise a <code>RuntimeCamelException</code> is 
thrown.</p>
-
-<p><strong>Using the <a shape="rect" href="fluent-builders.html">Fluent 
Builders</a></strong></p>
-
-<p>Pass loop count as an argument</p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<div class="wiki-content maincontent"><h2 id="Loop-Loop">Loop</h2><p>The Loop 
allows for processing a message a number of times, possibly in a different way 
for each iteration. Useful mostly during testing.</p><div 
class="confluence-information-macro 
confluence-information-macro-information"><p class="title">Default 
mode</p><span class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>Notice by default the loop uses 
the same exchange throughout the looping. So the result from the previous 
iteration will be used for the next (eg <a shape="rect" 
href="pipes-and-filters.html">Pipes and Filters</a>). From <strong>Camel 
2.8</strong> onwards you can enable copy mode instead. See the options table 
for more details.</p></div></div><h3 id="Loop-Options">Options</h3><div 
class="confluenceTableSmall">&#160;</div><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class
 ="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>copy</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.8:</strong> Whether or not 
copy mode is used. If <code>false</code> then the same Exchange will be used 
for each iteration. So the result from the previous iteration will be 
<em>visible</em> for the next iteration. Instead you can enable copy mode, and 
then each iteration <em>restarts</em> with a fresh copy of the input <a 
shape="rect" href="exchange.html">Exchange</a>.</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd">doWhile</td><td colspan="1" 
rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" 
class="confluenceTd"><strong>Camel 2.17:</stro
 ng> Enables the while loop that loops until the predicate evaluates to false 
or null.</td></tr></tbody></table></div><h3 
id="Loop-Exchangeproperties">Exchange properties</h3><p>For each iteration two 
properties are set on the <code>Exchange</code>. Processors can rely on these 
properties to process the <a shape="rect" href="message.html">Message</a> in 
different ways.</p><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Property</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>CamelLoopSize</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Total number of loops. This is 
not available if running the loop in while loop mode.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>CamelLoopIndex</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Index of the current itera
 tion (0 based)</p></td></tr></tbody></table></div><h4 
id="Loop-Examples">Examples</h4><p>The following example shows how to take a 
request from the <strong>direct:x</strong> endpoint, then send the message 
repetitively to <strong>mock:result</strong>. The number of times the message 
is sent is either passed as an argument to <code>loop()</code>, or determined 
at runtime by evaluating an expression. The expression <strong>must</strong> 
evaluate to an <code>int</code>, otherwise a <code>RuntimeCamelException</code> 
is thrown.</p><p><strong>Using the <a shape="rect" 
href="fluent-builders.html">Fluent Builders</a></strong></p><p>Pass loop count 
as an argument</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[
 from(&quot;direct:a&quot;).loop(8).to(&quot;mock:result&quot;);
 ]]></script>
-</div></div>
-
-<p>Use expression to determine loop count</p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+</div></div>Use expression to determine loop count<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[
 
from(&quot;direct:b&quot;).loop(header(&quot;loop&quot;)).to(&quot;mock:result&quot;);
 ]]></script>
-</div></div>
-
-<p>Use expression to determine loop count</p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+</div></div>Use expression to determine loop count<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[
 
from(&quot;direct:c&quot;).loop().xpath(&quot;/hello/@times&quot;).to(&quot;mock:result&quot;);
 ]]></script>
-</div></div>
-
-<p><strong>Using the <a shape="rect" href="spring-xml-extensions.html">Spring 
XML Extensions</a></strong></p>
-
-<p>Pass loop count as an argument</p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+</div></div><strong>Using the <a shape="rect" 
href="spring-xml-extensions.html">Spring XML Extensions</a></strong><p>Pass 
loop count as an argument</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;route&gt;
   &lt;from uri=&quot;direct:a&quot;/&gt;
@@ -142,10 +108,7 @@ from(&quot;direct:c&quot;).loop().xpath(
   &lt;/loop&gt;
 &lt;/route&gt;
 ]]></script>
-</div></div>
-
-<p>Use expression to determine loop count</p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+</div></div>Use expression to determine loop count<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;route&gt;
   &lt;from uri=&quot;direct:b&quot;/&gt;
@@ -155,16 +118,7 @@ from(&quot;direct:c&quot;).loop().xpath(
   &lt;/loop&gt;
 &lt;/route&gt;
 ]]></script>
-</div></div>
-
-<p>For further examples of this pattern in use you could look at one of the <a 
shape="rect" class="external-link" 
href="http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/LoopTest.java?view=markup";>junit
 test case</a></p>
-
-<h4 id="Loop-Usingcopymode">Using copy mode</h4>
-<p><strong>Available as of Camel 2.8</strong></p>
-
-<p>Now suppose we send a message to "direct:start" endpoint containing the 
letter A.<br clear="none">
-The output of processing this route will be that, each "mock:loop" endpoint 
will receive "AB" as message.</p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+</div></div>For further examples of this pattern in use you could look at one 
of the <a shape="rect" class="external-link" 
href="http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/LoopTest.java?view=markup";>junit
 test case</a><h4 id="Loop-Usingcopymode">Using copy 
mode</h4><p><strong>Available as of Camel 2.8</strong></p><p>Now suppose we 
send a message to "direct:start" endpoint containing the letter A.<br 
clear="none"> The output of processing this route will be that, each 
"mock:loop" endpoint will receive "AB" as message.</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[
 from(&quot;direct:start&quot;)
     // instruct loop to use copy mode, which mean it will use a copy of the 
input exchange
@@ -175,10 +129,7 @@ from(&quot;direct:start&quot;)
     .end()
     .to(&quot;mock:result&quot;);
 ]]></script>
-</div></div>
-
-<p>However if we do <strong>not</strong> enable copy mode then "mock:loop" 
will receive "AB", "ABB", "ABBB", etc. messages.</p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+</div></div>However if we do <strong>not</strong> enable copy mode then 
"mock:loop" will receive "AB", "ABB", "ABBB", etc. messages.<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[
 from(&quot;direct:start&quot;)
     // by default loop will keep using the same exchange so on the 2nd and 3rd 
iteration its
@@ -189,10 +140,7 @@ from(&quot;direct:start&quot;)
     .end()
     .to(&quot;mock:result&quot;);
 ]]></script>
-</div></div>
-
-<p>The equivalent example in XML DSL in copy mode is as follows:</p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+</div></div>The equivalent example in XML DSL in copy mode is as follows:<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;route&gt;
   &lt;from uri=&quot;direct:start&quot;/&gt;
@@ -207,12 +155,30 @@ from(&quot;direct:start&quot;)
   &lt;to uri=&quot;mock:result&quot;/&gt;
 &lt;/route&gt;
 ]]></script>
-</div></div>
-
+</div></div><h4 id="Loop-Usingwhilemode">Using while 
mode</h4><p><strong>Available as of Camel 2.17</strong></p><p>The loop can act 
like a while loop that loops until the expression evaluates to false or 
null.</p><p>For example the route below loops while the length of the message 
body is 5 or less characters. Notice that the DSL 
uses&#160;<strong>loopDoWhile</strong>.</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[from(&quot;direct:start&quot;)
+    .loopDoWhile(simple(&quot;${body.length} &lt;= 5&quot;))
+        .to(&quot;mock:loop&quot;)
+        .transform(body().append(&quot;A&quot;))
+    .end()
+    .to(&quot;mock:result&quot;);]]></script>
+</div></div><p>And the same example in XML:</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;route&gt;
+      &lt;from uri=&quot;direct:start&quot;/&gt;
+      &lt;loop doWhile=&quot;true&quot;&gt;
+        &lt;simple&gt;${body.length} &amp;lt;= 5&lt;/simple&gt;
+        &lt;to uri=&quot;mock:loop&quot;/&gt;
+        &lt;transform&gt;
+          &lt;simple&gt;A${body}&lt;/simple&gt;
+        &lt;/transform&gt;
+      &lt;/loop&gt;
+      &lt;to uri=&quot;mock:result&quot;/&gt;
+    &lt;/route&gt;
 
-<h4 id="Loop-UsingThisPattern">Using This Pattern</h4>
+]]></script>
+</div></div><p>Notice in XML that the while loop is turned on using the 
<strong>doWhile</strong> attribute.</p><p>&#160;</p><p></p><h4 
id="Loop-UsingThisPattern">Using This Pattern</h4>
 
-<p>If you would like to use this EIP Pattern then please read the <a 
shape="rect" href="getting-started.html">Getting Started</a>, you may also find 
the <a shape="rect" href="architecture.html">Architecture</a> useful 
particularly the description of <a shape="rect" 
href="endpoint.html">Endpoint</a> and <a shape="rect" 
href="uris.html">URIs</a>. Then you could try out some of the <a shape="rect" 
href="examples.html">Examples</a> first before trying this pattern out.</p> 
</div>
+<p>If you would like to use this EIP Pattern then please read the <a 
shape="rect" href="getting-started.html">Getting Started</a>, you may also find 
the <a shape="rect" href="architecture.html">Architecture</a> useful 
particularly the description of <a shape="rect" 
href="endpoint.html">Endpoint</a> and <a shape="rect" 
href="uris.html">URIs</a>. Then you could try out some of the <a shape="rect" 
href="examples.html">Examples</a> first before trying this pattern 
out.</p></div>
         </td>
         <td valign="top">
           <div class="navigation">


Reply via email to