Modified: websites/production/camel/content/camel-2160-release.html ============================================================================== --- websites/production/camel/content/camel-2160-release.html (original) +++ websites/production/camel/content/camel-2160-release.html Sun Jul 19 10:19:32 2015 @@ -84,7 +84,7 @@ <tbody> <tr> <td valign="top" width="100%"> -<div class="wiki-content maincontent"><h1 id="Camel2.16.0Release-Camel2.16.0release(currentlyinprogress)">Camel 2.16.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"> </div><h2 id="Camel2.16.0Release-NewandNoteworthy">New and Noteworthy</h2><p>Welcome to the 2.16.0 release which approx XXX issues resolved (new features, improvements and bug fixes such as...)</p><p>Noteworthy improvements:</p><ul><li>The route models (definition classes) preserve property placeholders, which allows round trip editing, and also prevents showing potential sensitive information</li><li>Added onPrepareFailure option to <a shape ="rect" href="dead-letter-channel.html">Dead Letter Channel</a> to allow a custom processor to prepare the Exchange before sending to the dead letter queue.</li><li><a shape="rect" href="mongodb.html">MongoDB</a> tailable consumers now allow setting the <code>readPreference</code> option.</li><li>Using setFaultBody / setFaultHeader behaves similar to setBody / setHeader to preserve existing headers/attachments by setting on existing IN or OUT message.</li><li>Java DSL using choice with end vs endChoice now validates you use them as intended. Any misconfiguration now throws an exception explaining the problem.</li><li><a shape="rect" href="pojo-producing.html">POJO Producing</a> and <a shape="rect" href="pojo-consuming.html">POJO Consuming</a> lifecycle is now in sync with <a shape="rect" href="camelcontext.html">CamelContext</a> which ensures it works as similar to Camel <a shape="rect" href="routes.html">Routes</a> does. Also the created producer/consumer is stopped when <a shape="rect" href="camelcontext.html">CamelContext</a> is stopping to cleanup properly.</li><li><a shape="rect" href="jms.html">JMS</a> component now allows configuring concurrentConsumers/maxConcurrentConsumers separately between from(jms) vs to(jms) using request/reply over JMS</li><li><span><a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/CAMEL-8506">Added SEARCH</a> operation to Elasticsearch component</span></li><li><span>The <a shape="rect" href="properties.html">Properties</a> component (property placeholder) now supports an encoding option to allow reading the .properties files using a specific charset such as UTF-8. By default ISO-8859-1 is used (latin1)</span></li><li><span>Added <code>receviveBufferSize</code> option to the <a shape="rect" href="ftp.html">FTP</a> component to make download faster. The size is by default 32kb buffer.</span></li><li><span>The <a shape="rect" href="aggregator2.html"> Aggregator2</a> EIP now allows an external source using a <code>AggregateController</code> to control the aggregator, such as for forcing completing a group or all groups, or query runtime information from the aggregator. A default controller is provided out of the box if none has been configured.</span></li><li><span>The <a shape="rect" href="aggregator2.html">Aggregator2</a> now enlists in JMX using a <code>ManagedAggregateProcessorMBean</code> which has more information, and also allows using the aggregate controller to control it.</span></li><li><span>The <a shape="rect" href="aggregator2.html">Aggregator2</a> now includes more runtime statistics which can be accessed from Java and JMX about number of incoming and completed exchanges, and per different completion triggers.</span></li><li><span>The <a shape="rect" href="aggregator2.html">Aggregator2</a> now supports pre-completion mode if the aggregation strategy implements <code>PreCompletionAwareAg gregationStrategy</code>. This supports the use-case where an incoming Exchange are used to determine if the current aggregated group is completed or not. If completed the group is emitted as-is, and the new incoming Exchange is used to start a new group from scratch.</span></li><li><span>Added options to <a shape="rect" href="mail.html">Mail</a> consumer so it can skip or handle a mail message that cannot be read from the mail server in the batch; and then move on to read the next message. This ensures the consumer can deal with mail boxes that has problematic mails that otherwise will cause no mails to be retrieve by the consumer in the batch.</span></li><li>The runtime route processors and their corresponding model definition are now linked by their id using <code>HasId</code>, so its easier to obtain the processor or model definition from the <code>getProcessor(id)</code> and <code>getProcessorDefintion(id)</code> api on CamelContext.</li><li>CamelContext now also includes a getManagedProcessor API to easily get the mbean client api for the processor, so you can access the runtime JMX statistics from Java code. </li><li><span><a shape="rect" href="spring-boot.html">Spring Boot</a> applications now <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/CAMEL-8532">block the main thread of the execution</a></span></li><li><span><a shape="rect" href="spring-boot.html">Spring Boot</a> automagically <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/CAMEL-8523">loads XML routes definitions</a> from classpath</span></li><li><span>Added <code>MainListener</code> to make it easier for Camel Boot / Standalone Camel to implement custom logic to trigger during the starting and stopping of the application.</span></li><li><span><span>Camel Jackson now provides <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/CAMEL-8554"><code>Map</code> to <code>Object</c ode> converter</a></span></span></li><li><span>Ability to refer to existing hazelcast instance by id, using <a shape="rect" href="hazelcast-component.html">Hazelcast Component</a></span></li><li><a shape="rect" href="direct.html">Direct</a> and <a shape="rect" href="direct-vm.html">Direct-VM</a> now supports the <span>failIfNoConsumers option</span></li><li>Making it easier to add custom <a shape="rect" href="type-converter.html">Type Converter</a> to your Camel applications without having to use the META-INF file. In Spring or Blueprint just add them as <bean>s. See more details at <a shape="rect" href="type-converter.html">Type Converter</a> documentation.</li><li>camel-cxf PAYLOAD supports stream cache out of box.</li><li><p><code>BridgePropertyPlaceholderConfigurer</code> supports to handle the <span><a shape="rect" href="jasypt.html">jasypt </a>encryption inside and outside of the camelContext.</span></p></li><li><p>The camel-aws component now sup port Amazon DynamoDB version 2<span><br clear="none"></span></p></li><li><p>The <a shape="rect" href="wire-tap.html">Wire Tap</a> eip now also emits event notifications when sending the Exchange to the wire tap destination</p></li><li><a shape="rect" href="camel-test.html">Camel Test</a> has new option isDumpRouteStats that dumps all route usage statistics as XML files in target/camel-route-stats directory, which can be used to inspect "route coverage" reports.</li><li>Now <a shape="rect" href="netty4.html">Camel Netty</a> component doesn't intercept consumers with <code>httpMethodRestrict=OPTIONS</code></li><li><span>Now <a shape="rect" href="netty4-http.html">Netty HTTP</a> resolves OPTIONS prefix matches earlier</span></li><li>Using <a shape="rect" href="load-balancer.html">Load Balancer</a> with Java DSL now builds the route model using the specific model types, which renders a more accurate route model</li><li>Enhanced the PredicateBuilder to support vargs and list in the "or" builder method</li><li>Using custom <code>HttpBinding</code> with <a shape="rect" href="http.html">HTTP</a> and <a shape="rect" href="http4.html">HTTP4</a> is now easier as they can be instantiated using a default no-arg constructor</li><li>Added <code>readLock=idempotent</code> to the <a shape="rect" href="file2.html">File2</a> consumer which allows to reuse an idempotent repository as read-lock which enables Camel to run reliable in clustered mode, where each node competes for the same files from a shared file system. This requires that the idempotent repository supports clustering such as <a shape="rect" href="hazelcast-component.html">Hazelcast Component</a> or <a shape="rect" href="infinispan.html">Infinispan</a> - or using the JDBC for a shared database table.</li><li><a shape="rect" href="rx.html">Camel RX</a> now ensures that observe and subscribe are done within an unit of work to ensure on completions is executed, such as they a re done when you use regular Camel routes.</li><li>The <a shape="rect" href="jms.html">JMS</a> component now includes the underlying <code>javax.jms.Session</code> instance on the Camel message which allows end users to easier to use client acknowledge mode, in case the client wants to use the session to call recover or rollback.</li><li>Added <code>completionEager</code> option to <a shape="rect" href="idempotent-consumer.html">Idempotent Consumer</a> to whether to complete the idempotent consumer eager or when the exchange is done.</li><li>Working with the Camel source code in Eclipse with m2eclipse plugin improved to avoid endless file changed detection and recompile the source.</li><li>Add option <code>suppressExceptions</code> to <a shape="rect" href="jsonpath.html">JSonPath</a> which allows to ignore exceptions such as NoSuchPathException when the json payload does not contain the path defined in the json expression.</li><li><a shape="rect" h ref="spring-boot.html">Spring Boot</a> now creates <code>CamelContext</code>, <code>ProducerTemplate</code> and <code>ConsumerTemplate</code> beans only if those are not defined by the user.  </li><li>New <code>camel-archetype-spring-boot</code> to create a new Camel Spring Boot project using Maven.</li><li>New <code>camel-archetype-cdi</code> to create a new Camel CDI project using Maven.</li><li><a shape="rect" href="ftp2.html">FTP2</a> doesn't support absolute directories in endpoint URIs. In such cases, paths will be treated as relative and WARN message will be printed in logs. In future versions, there'll be no such assumption and validation exception will be thrown instead.</li><li><a shape="rect" href="swagger.html">Swagger</a> module now supports getting api-docs from multiple camel contexts in the JVM. The entry point at /api-docs now lists the contexts detected, and you need to append the context id in the path, eg /api-docs/myCamel</li><li><a shap e="rect" href="ftp2.html">FTP2</a> supports <code>autoCreate=true</code> for ftp consumers</li><li><a shape="rect" href="rest-dsl.html">Rest DSL</a> now supports to define parameter using fine grained details for the <a shape="rect" href="swagger.html">Swagger</a> api documentation. For an example see the <code>camel-example-servlet-rest-tomcat</code> in the Apache Camel distribution.</li><li>The <a shape="rect" href="simple.html">Simple</a> language now has a equals ignore case operator (=~) when comparing with string values </li><li>If using <contextScan> with Spring or Blueprint to filter RouteBuilder classes, then Camel will now by default only look for singleton beans. You can turn on the old behavior to include prototype scoped with the new option <pre>includeNonSingletons</pre></li><li>The <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/spi/IdempotentRepository.html">Idem potentRepository</a> now supports clear operation, to clear the repository, and expose it over JMX.</li><li><a shape="rect" href="netty4.html">Netty4</a> in clientMode will now automatic re-connect if the connection was disconnected to the server.</li><li>The <code>throwException</code> EIP now supports creating a new exception instance from a simple language expressions, which allows to make it dynamic based on information from the current Exchange.</li><li>When using <a shape="rect" href="expression.html">Expression</a> or <a shape="rect" href="predicate.html">Predicate</a> in the routes, you can refer to the value as an external resource by using <strong>resource:classpath:path</strong> or <strong>resource:file:path</strong> - for example <code>resource:classpath:com/foo/myscript.groovy</code>.</li><li>Added option useMessageBodyForSql to the <a shape="rect" href="sql-component.html">SQL Component</a> which allows to use more dynamic SQL queries inst ead of the fixed SQL defined in the endpoint uri.</li><li>Added sticky option to failover <a shape="rect" href="load-balancer.html">Load Balancer</a> so the load balancer can start from the last known good endpoint.</li><li>Added option <code>shareUnitOfWork</code> to <a shape="rect" href="content-enricher.html">Content Enricher</a> eip</li><li><a shape="rect" href="content-enricher.html">Content Enricher</a> with enrich and pollEnrich now supports dynamic endpoint uris computed using an <a shape="rect" href="expression.html">Expression</a> that allows to use values from the current <a shape="rect" href="exchange.html">Exchange</a> so you for example can poll a file which name is computed from data from the <a shape="rect" href="exchange.html">Exchange</a> etc. This change breaks the XML DSL a little bit and there is an easy migration effort. The Java DSL stays backwards compatible.</li><li>The Camel Karaf commands about routes now no longer requir e the context-id as 2nd parameter that is optional - if none provided then the command is a bulk operation for all Camel contexts.</li></ul><p>Fixed the following issues:</p><ul><li>File language now properly supports file extensions having double dots, such as .tar.gz</li><li>Fixed issue with doTry not stopping routing if a fault message was set using setFaultBody within the doTry.</li><li>Fixed <a shape="rect" href="bean.html">Bean</a> language to support end parenthesis in quoted string literals as part of method parameters, and not as end of method signature. </li><li>Fixed <a shape="rect" href="ftp2.html">FTP2</a> using <code>pollEnrich</code> with disconnect=true and delete=true, would disconnect before deleting the file. Now we disconnect last.</li><li>Various EIPs such as <a shape="rect" href="splitter.html">Splitter</a>, <a shape="rect" href="recipient-list.html">Recipient List</a>, <a shape="rect" href="multicast.html">Multicast</a> no longer reuse message id in their sub messages, but each sub message has its own unique message id (just as the exchange has).</li><li>Fixed an issue with the circuit breaker <a shape="rect" href="load-balancer.html">Load Balancer</a> not honoring the half open after period after an error was detected.</li><li>Fixed <a shape="rect" href="ftp2.html">FTP2</a> now calling disconnect if there was no messages to poll, even when disconnect=true configured.</li><li>Fixed <a shape="rect" href="throttler.html">Throttler</a> using method call expression in XML DSL was not working</li><li>Fixed stopping a route may stop context scoped OnException that would otherwise send message to an endpoint, now been stopped and an IllegalStateException was thrown while handling the exception.</li><li>Fixed using a <a shape="rect" href="load-balancer.html">Load Balancer</a> from a context scoped onException may double up its processors participating in the balancer per route in the context.</li><li>Fixed <code>parallelAggregate</code> on multicast/splitter/recipient list to use a thread pool for running concurrently. </li><li>Fixed <a shape="rect" href="stream-caching.html">Stream caching</a> to not delete data that was spooled to disk before both exchanges are done routing.</li><li>Fixed <a shape="rect" href="defaulterrorhandler.html">DefaultErrorHandler</a> to use 1 sec redelivery delay out of the box as the other error handlers does. </li><li>Fixed setting <code>logExhaustedMessageHistory=true</code> on <a shape="rect" href="dead-letter-channel.html">Dead Letter Channel</a> to log the message history. This option is by default false on DLC as it would be as before (not noisy).</li><li>Fixed double refresh of the parent Spring Boot Application Context</li><li>Fixed configuring endpoint uri's with primitive types when the value is looked up in the registry using #notation would not work.</li><li>Fixed using transacte d in the Scala DSL</li><li>camel-swagger now filters out older Camel releases that do not support rest-dsl when it discovers Camel's in the JVM</li><li>Fixed <a shape="rect" href="mail.html">Mail</a> consumer to use the default value of 60 seconds as poll interval again, instead of 0.5 sec.</li><li>Fixed <a shape="rect" href="netty.html">Netty</a> and <a shape="rect" href="netty4.html">Netty4</a> may perform x2 redelivery when attempting to redeliver to a netty producer endpoint</li><li>Fixed <a shape="rect" href="recipient-list.html">Recipient List</a> would not work if using RAW() syntax in endpoint uri</li><li>Fixed Camel Commands to not show correct route status for suspended routes in the routes-list command.</li><li>Fixed using <a shape="rect" href="http.html">HTTP</a> and <code>Exchange.HTTP_QUERY</code> or <code>Exchange.HTTP_URI</code> may double encode the value.</li><li>Fixed starting a route from a file endpoint, and then do a  <code>pollEnrich</code> from another file endpoint, and both using the same readLock=marker, would only delete one of the marker files when done.</li></ul><h3 id="Camel2.16.0Release-New">New <a shape="rect" href="enterprise-integration-patterns.html">Enterprise Integration Patterns</a></h3><h3 id="Camel2.16.0Release-New.1">New <a shape="rect" href="components.html">Components</a></h3><ul><li><a shape="rect" href="paho.html">camel-paho</a> - For MQTT messaging using Eclipse Paho client</li><li><a shape="rect" href="pdf.html">camel-pdf</a> - For creating PDF documents</li><li><a shape="rect" href="grape.html">camel-grape</a> - allows you to fetch, load and manage additional jars when CamelContext is running.</li><li><a shape="rect" href="slack.html">camel-slack</a> - allows you to connect to an instance of Slack and delivers a message contained in the message body via a pre established Slack incoming webhook.</li><li><a shape="rect" href="aws-ec2.html">camel- aws-ec2</a> - Component providing support to Amazon Web Services EC2 </li><li><a shape="rect" href="undertow.html">camel-undertow</a> - To use <a shape="rect" class="external-link" href="http://undertow.io/index.html" rel="nofollow">Undertow</a> as HTTP server or client.</li><li>camel-git - A generic Git component</li></ul><h3 id="Camel2.16.0Release-NewDSL">New DSL</h3><ul><li><a shape="rect" href="script.html">Script</a> - to execute a script during routing</li></ul><h3 id="Camel2.16.0Release-NewAnnotations">New Annotations</h3><h3 id="Camel2.16.0Release-NewDataFormats">New <a shape="rect" href="data-format.html">Data Formats</a></h3><ul><li><a shape="rect" href="boon.html">camel-boon</a> - For mapping POJO to/from json</li></ul><h3 id="Camel2.16.0Release-New.2">New <a shape="rect" href="languages.html">Languages</a></h3><h3 id="Camel2.16.0Release-New.3">New <a shape="rect" href="examples.html">Examples</a></h3><h3 id="Camel2.16.0Release-New.4">New <a shape="rect" href="tutori als.html">Tutorials</a></h3><h2 id="Camel2.16.0Release-APIbreaking">API breaking</h2><ul><li><p class="p1"> org.apache.camel.mode.LoadBalancerDefinition no longer implements org.apache.camel.processor.loadbalancer.LoadBalancer which is the runtime processor (this was never intended).</p></li><li>The <code>ref</code> attribute on <code><loadBalance></code> has been removed, as it has been deprecated for a long time, and you should use a <code><customLoadBalancer></code> to refer to a custom load balancer.</li><li>The <code>copy</code> method on <code>StreamCache</code> now takes an <code>Exchange</code> as parameter.</li><li>Various APIs in <code>camel-jms</code> has been adjusted to support including the JMS session parameter - <code>javax.jms.Session</code>. Though these API changes are mostly internal facing, and we do not expect end users problems.</li><li>The <code>resourceUri</code> and <code>resourceRef</code> attributes on <code><enrich></code> and <code><pollEnrich></code> has been removed as they now support a dynamic uris computed from an <a shape="rect" href="expression.html">Expression</a>.</li></ul><h2 id="Camel2.16.0Release-KnownIssues">Known Issues</h2><h2 id="Camel2.16.0Release-Dependencyupgrades">Dependency upgrades</h2><ul><li>Amazon Web Service Java SDK from 1.8.9.1 to 1.9.40</li><li>Apache Commons Cli from 1.2 to 1.3.1</li><li>Apache Commons Compress from 1.5 to 1.9</li><li>Apache Commons Lang from 3.3.2 to 3.4</li><li>Apache Deltaspike from 1.3.0 to 1.4.1</li><li>Apache DS from 2.0.0-M19 to 2.0.0-M20</li><li>Apache HttpComponents Core from 4.3.3 to 4.4.1</li><li>Apache HttpComponents Client from 4.3.6 to 4.4.1</li><li>Apache JClouds from 1.8.1 to 1.9.0</li><li>Apache Olingo Odata from 2.0.0 to 2.0.4</li><li>Apns from 0.2.3 to 1.0.0.Beta6</li><li>AspectJ from 1.6.2 to 1.8.5</li><li>Async-http-client from 1.9.8 to 1.9.26</li><li>Atmosphere from 2.2. 6 to 2.3.2</li><li>Cassandra from 2.1.2 to 2.1.6</li><li><p>Cassandra Datastax Java Driver from 2.1.2 to 2.1.6</p></li><li>Chunk Templates from 2.6.3 to 2.6.4</li><li>DNSJava from 2.1.6 to 2.1.7</li><li>Docker-java from 0.10.5 to 1.3.0</li><li>Dropbox core Java SDK from 1.7.6 to 1.7.7</li><li>Dropwizard Metrics from 3.1.0 to 3.1.2</li><li>Ehcache from 2.9.1 to 2.10.0</li><li>Facebook4j from 1.1.12 to 2.2.2</li><li>Freemarker from 2.3.21 to 2.3.22</li><li>Google App Engine from 1.8.3 to 1.9.21</li><li>Gson from 3.2 to 3.2.1</li><li>iCal4j from 1.5.0.2 to 1.6.0</li><li>Hazelcast from 3.4.2 to 3.5</li><li>Infinispan from 6.0.2.Final to 7.2.3.Final</li><li><span>Jackson2 from 2.4.3 to 2.5.4</span></li><li><span>Jackrabbit from 2.10.0 to 2.10.1</span></li><li><span>Jboss Marshalling from 1.4.4.Final to 1.4.10.Final</span></li><li><span>Jboss Weld from 2.2.4.Final to 2.2.13.Final</span></li><li><span>Jgroups from 3.6.1.Final to 3.6.3.Final</span></li><li><span>Joda-time from 2.5 to 2.8.1< /span></li><li><span>Jsch from 0.1.51 to 0.1.53</span></li><li>Jsonpath from 1.2.0 to 2.0.0</li><li>Kafka from 0.8.1.1 to 0.8.2.0</li><li>LightCouch from 0.1.3 to 0.1.8</li><li>MongoDB Java Driver from 2.12.4 to 3.0.2</li><li>MongoDB test harness from 1.46.4 to 1.48.0</li><li>Mvel2 from 2.2.1.Final to 2.2.5.Final</li><li>OGNL from 3.0.8 to 3.0.11</li><li>OpenEJB from 4.6.0.2 to 4.7.2</li><li>OpenJPA from 2.3.0 to 2.4.0</li><li>Openshift Java Client 2.5.0.Final to 2.7.0.Final</li><li>PDFBox from 1.6.0 to 1.8.9</li><li>Restlet from 2.2.x to 2.3.1<span><br clear="none"></span></li><li>SLF4J from 1.7.10 to 1.7.12</li><li>Snakeyaml from 1.14 to 1.15</li><li>Spring upgrades</li><li>Sshd from 0.13.0 to 0.14.0</li><li>TestNG from 6.8.8 to 6.8.21</li><li>Twitter4J from 4.0.2 to 4.0.3</li><li>XStream from 1.4.7 to 1.4.8</li><li>VertX from 2.2.5 to 3.0.0</li><li>ZXing from 3.0.1 to 3.2.0</li></ul><h2 id="Camel2.16.0Release-Importantchangestoconsiderwhenupgrading">Important changes to consider when upgrading</h2><ul><li>The dumpRoutesAsXml operation now preserve property placeholder used in the route models. </li><li>Using setFaultBody / setFaultHeader behaves similar to setBody / setHeader to preserve existing headers/attachments by setting on existing IN or OUT message.</li><li>If using concurrent consumer on <a shape="rect" href="jms.html">JMS</a> endpoints for request/reply over JMS then you must use the new replyToConcurrentConsumers, replyToMaxConcurrentConsumers options to configure the values. </li><li>When the <a shape="rect" href="aggregator2.html">Aggregator2</a> is forced completed the exchange property <code>Exchange.AGGREGATED_COMPLETED_BY</code> value has been changed from "forceCompletion" to "force" so its named like the other completion triggers.</li><li>Removed unsupported modules camel-web and camel-web-standalone.</li><li>Removed unsupported camel:dot functionality from camel:run plugin.</li><li>Removed unsupported camel- archetype-scala-component from maven archetypes.</li><li>The Maven coordinate for linkedin and olingo2 components changed to be aligned like all the others having groupId as just org.apache.camel.</li><li>If using MongoDB component, the option<em> invokeGetLastError</em> doesn't exist anymore. The option invokeGetLastError instructs the MongoDB Java driver to invoke <em>getLastError()</em> after every call. In the 3.0.0 MongoDB driver implementation, the <em>getLastError()</em> method in WriteResult has been removed. So, if needed, use an acknowledged WriteConcern when executing the write operation and then verify the correctness of the operation with the method <em>wasAcknowledged()</em> of WriteResult.</li><li>The <a shape="rect" href="jing.html">Jing</a> component now uses <code>jing</code> as schema name in uris, instead of <code>rng</code> or <code>rnc</code>. Those names has been removed.</li><li><a shape="rect" href="swagger.html">Swagger</a> module now su pports getting api-docs from multiple camel contexts in the JVM. The entry point at /api-docs now lists the contexts detected, and you need to append the context id in the path, eg /api-docs/myCamel</li><li>If using <contextScan> with Spring or Blueprint to filter RouteBuilder classes, then Camel will now by default only look for singleton beans. You can turn on the old behavior to include prototype scoped with the new option <pre>includeNonSingletons</pre></li><li>camel-vertx has been upgraded to vertx 3.0 which requires Java 8 at runtime.</li><li><code>camel-cdi</code> is now using CDI 1.1 api - support for 1.0 has been dropped.</li><li><a shape="rect" href="content-enricher.html">Content Enricher</a> with enrich and pollEnrich now supports dynamic endpoint uris computed using an <a shape="rect" href="expression.html">Expression</a> that allows to use values from the current <a shape="rect" href="exchange.html">Exchange</a> so you for example can poll a f ile which name is computed from data from the <a shape="rect" href="exchange.html">Exchange</a> etc. This change breaks the XML DSL a little bit and there is an easy migration effort. The Java DSL stays backwards compatible.</li><li>Support for CXF 2.7 is dropped.</li><li>camel-jetty8 is being considered deprecated and we would like to drop this in a nearby future release as Jetty 8.x is EOL. </li></ul><h2 id="Camel2.16.0Release-GettingtheDistributions">Getting the Distributions</h2><h3 id="Camel2.16.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/2.16.0/apache-camel-2.16.0.zip">apache-camel-2.16.0.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/2.16.0/apache-camel-2.16.0.zip.asc">apache-camel-2.16.0.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/2.16.0/apache-camel-2.16.0.tar.gz">apache-camel-2.16.0.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/2.16.0/apache-camel-2.16.0.tar.gz.asc">apache-camel-2.16.0.tar.gz.asc</a></p></td></tr></tbody></table></div><div class="con fluence-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.16.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.16.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"> +<div class="wiki-content maincontent"><h1 id="Camel2.16.0Release-Camel2.16.0release(currentlyinprogress)">Camel 2.16.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"> </div><h2 id="Camel2.16.0Release-NewandNoteworthy">New and Noteworthy</h2><p>Welcome to the 2.16.0 release which approx XXX issues resolved (new features, improvements and bug fixes such as...)</p><p>Noteworthy improvements:</p><ul><li>The route models (definition classes) preserve property placeholders, which allows round trip editing, and also prevents showing potential sensitive information</li><li>Added onPrepareFailure option to <a shape ="rect" href="dead-letter-channel.html">Dead Letter Channel</a> to allow a custom processor to prepare the Exchange before sending to the dead letter queue.</li><li><a shape="rect" href="mongodb.html">MongoDB</a> tailable consumers now allow setting the <code>readPreference</code> option.</li><li>Using setFaultBody / setFaultHeader behaves similar to setBody / setHeader to preserve existing headers/attachments by setting on existing IN or OUT message.</li><li>Java DSL using choice with end vs endChoice now validates you use them as intended. Any misconfiguration now throws an exception explaining the problem.</li><li><a shape="rect" href="pojo-producing.html">POJO Producing</a> and <a shape="rect" href="pojo-consuming.html">POJO Consuming</a> lifecycle is now in sync with <a shape="rect" href="camelcontext.html">CamelContext</a> which ensures it works as similar to Camel <a shape="rect" href="routes.html">Routes</a> does. Also the created producer/consumer is stopped when <a shape="rect" href="camelcontext.html">CamelContext</a> is stopping to cleanup properly.</li><li><a shape="rect" href="jms.html">JMS</a> component now allows configuring concurrentConsumers/maxConcurrentConsumers separately between from(jms) vs to(jms) using request/reply over JMS</li><li><span><a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/CAMEL-8506">Added SEARCH</a> operation to Elasticsearch component</span></li><li><span>The <a shape="rect" href="properties.html">Properties</a> component (property placeholder) now supports an encoding option to allow reading the .properties files using a specific charset such as UTF-8. By default ISO-8859-1 is used (latin1)</span></li><li><span>Added <code>receviveBufferSize</code> option to the <a shape="rect" href="ftp.html">FTP</a> component to make download faster. The size is by default 32kb buffer.</span></li><li><span>The <a shape="rect" href="aggregator2.html"> Aggregator2</a> EIP now allows an external source using a <code>AggregateController</code> to control the aggregator, such as for forcing completing a group or all groups, or query runtime information from the aggregator. A default controller is provided out of the box if none has been configured.</span></li><li><span>The <a shape="rect" href="aggregator2.html">Aggregator2</a> now enlists in JMX using a <code>ManagedAggregateProcessorMBean</code> which has more information, and also allows using the aggregate controller to control it.</span></li><li><span>The <a shape="rect" href="aggregator2.html">Aggregator2</a> now includes more runtime statistics which can be accessed from Java and JMX about number of incoming and completed exchanges, and per different completion triggers.</span></li><li><span>The <a shape="rect" href="aggregator2.html">Aggregator2</a> now supports pre-completion mode if the aggregation strategy implements <code>PreCompletionAwareAg gregationStrategy</code>. This supports the use-case where an incoming Exchange are used to determine if the current aggregated group is completed or not. If completed the group is emitted as-is, and the new incoming Exchange is used to start a new group from scratch.</span></li><li><span>Added options to <a shape="rect" href="mail.html">Mail</a> consumer so it can skip or handle a mail message that cannot be read from the mail server in the batch; and then move on to read the next message. This ensures the consumer can deal with mail boxes that has problematic mails that otherwise will cause no mails to be retrieve by the consumer in the batch.</span></li><li>The runtime route processors and their corresponding model definition are now linked by their id using <code>HasId</code>, so its easier to obtain the processor or model definition from the <code>getProcessor(id)</code> and <code>getProcessorDefintion(id)</code> api on CamelContext.</li><li>CamelContext now also includes a getManagedProcessor API to easily get the mbean client api for the processor, so you can access the runtime JMX statistics from Java code. </li><li><span><a shape="rect" href="spring-boot.html">Spring Boot</a> applications now <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/CAMEL-8532">block the main thread of the execution</a></span></li><li><span><a shape="rect" href="spring-boot.html">Spring Boot</a> automagically <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/CAMEL-8523">loads XML routes definitions</a> from classpath</span></li><li><span>Added <code>MainListener</code> to make it easier for Camel Boot / Standalone Camel to implement custom logic to trigger during the starting and stopping of the application.</span></li><li><span><span>Camel Jackson now provides <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/CAMEL-8554"><code>Map</code> to <code>Object</c ode> converter</a></span></span></li><li><span>Ability to refer to existing hazelcast instance by id, using <a shape="rect" href="hazelcast-component.html">Hazelcast Component</a></span></li><li><a shape="rect" href="direct.html">Direct</a> and <a shape="rect" href="direct-vm.html">Direct-VM</a> now supports the <span>failIfNoConsumers option</span></li><li>Making it easier to add custom <a shape="rect" href="type-converter.html">Type Converter</a> to your Camel applications without having to use the META-INF file. In Spring or Blueprint just add them as <bean>s. See more details at <a shape="rect" href="type-converter.html">Type Converter</a> documentation.</li><li>camel-cxf PAYLOAD supports stream cache out of box.</li><li><p><code>BridgePropertyPlaceholderConfigurer</code> supports to handle the <span><a shape="rect" href="jasypt.html">jasypt </a>encryption inside and outside of the camelContext.</span></p></li><li><p>The camel-aws component now sup port Amazon DynamoDB version 2<span><br clear="none"></span></p></li><li><p>The <a shape="rect" href="wire-tap.html">Wire Tap</a> eip now also emits event notifications when sending the Exchange to the wire tap destination</p></li><li><a shape="rect" href="camel-test.html">Camel Test</a> has new option isDumpRouteStats that dumps all route usage statistics as XML files in target/camel-route-stats directory, which can be used to inspect "route coverage" reports.</li><li>Now <a shape="rect" href="netty4.html">Camel Netty</a> component doesn't intercept consumers with <code>httpMethodRestrict=OPTIONS</code></li><li><span>Now <a shape="rect" href="netty4-http.html">Netty HTTP</a> resolves OPTIONS prefix matches earlier</span></li><li>Using <a shape="rect" href="load-balancer.html">Load Balancer</a> with Java DSL now builds the route model using the specific model types, which renders a more accurate route model</li><li>Enhanced the PredicateBuilder to support vargs and list in the "or" builder method</li><li>Using custom <code>HttpBinding</code> with <a shape="rect" href="http.html">HTTP</a> and <a shape="rect" href="http4.html">HTTP4</a> is now easier as they can be instantiated using a default no-arg constructor</li><li>Added <code>readLock=idempotent</code> to the <a shape="rect" href="file2.html">File2</a> consumer which allows to reuse an idempotent repository as read-lock which enables Camel to run reliable in clustered mode, where each node competes for the same files from a shared file system. This requires that the idempotent repository supports clustering such as <a shape="rect" href="hazelcast-component.html">Hazelcast Component</a> or <a shape="rect" href="infinispan.html">Infinispan</a> - or using the JDBC for a shared database table.</li><li><a shape="rect" href="rx.html">Camel RX</a> now ensures that observe and subscribe are done within an unit of work to ensure on completions is executed, such as they a re done when you use regular Camel routes.</li><li>The <a shape="rect" href="jms.html">JMS</a> component now includes the underlying <code>javax.jms.Session</code> instance on the Camel message which allows end users to easier to use client acknowledge mode, in case the client wants to use the session to call recover or rollback.</li><li>Added <code>completionEager</code> option to <a shape="rect" href="idempotent-consumer.html">Idempotent Consumer</a> to whether to complete the idempotent consumer eager or when the exchange is done.</li><li>Working with the Camel source code in Eclipse with m2eclipse plugin improved to avoid endless file changed detection and recompile the source.</li><li>Add option <code>suppressExceptions</code> to <a shape="rect" href="jsonpath.html">JSonPath</a> which allows to ignore exceptions such as NoSuchPathException when the json payload does not contain the path defined in the json expression.</li><li><a shape="rect" h ref="spring-boot.html">Spring Boot</a> now creates <code>CamelContext</code>, <code>ProducerTemplate</code> and <code>ConsumerTemplate</code> beans only if those are not defined by the user.  </li><li>New <code>camel-archetype-spring-boot</code> to create a new Camel Spring Boot project using Maven.</li><li>New <code>camel-archetype-cdi</code> to create a new Camel CDI project using Maven.</li><li><a shape="rect" href="ftp2.html">FTP2</a> doesn't support absolute directories in endpoint URIs. In such cases, paths will be treated as relative and WARN message will be printed in logs. In future versions, there'll be no such assumption and validation exception will be thrown instead.</li><li><a shape="rect" href="swagger.html">Swagger</a> module now supports getting api-docs from multiple camel contexts in the JVM. The entry point at /api-docs now lists the contexts detected, and you need to append the context id in the path, eg /api-docs/myCamel</li><li><a shap e="rect" href="ftp2.html">FTP2</a> supports <code>autoCreate=true</code> for ftp consumers</li><li><a shape="rect" href="rest-dsl.html">Rest DSL</a> now supports to define parameter using fine grained details for the <a shape="rect" href="swagger.html">Swagger</a> api documentation. For an example see the <code>camel-example-servlet-rest-tomcat</code> in the Apache Camel distribution.</li><li>The <a shape="rect" href="simple.html">Simple</a> language now has a equals ignore case operator (=~) when comparing with string values </li><li>If using <contextScan> with Spring or Blueprint to filter RouteBuilder classes, then Camel will now by default only look for singleton beans. You can turn on the old behavior to include prototype scoped with the new option <pre>includeNonSingletons</pre></li><li>The <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/spi/IdempotentRepository.html">Idem potentRepository</a> now supports clear operation, to clear the repository, and expose it over JMX.</li><li><a shape="rect" href="netty4.html">Netty4</a> in clientMode will now automatic re-connect if the connection was disconnected to the server.</li><li>The <code>throwException</code> EIP now supports creating a new exception instance from a simple language expressions, which allows to make it dynamic based on information from the current Exchange.</li><li>When using <a shape="rect" href="expression.html">Expression</a> or <a shape="rect" href="predicate.html">Predicate</a> in the routes, you can refer to the value as an external resource by using <strong>resource:classpath:path</strong> or <strong>resource:file:path</strong> - for example <code>resource:classpath:com/foo/myscript.groovy</code>.</li><li>Added option useMessageBodyForSql to the <a shape="rect" href="sql-component.html">SQL Component</a> which allows to use more dynamic SQL queries inst ead of the fixed SQL defined in the endpoint uri.</li><li>Added sticky option to failover <a shape="rect" href="load-balancer.html">Load Balancer</a> so the load balancer can start from the last known good endpoint.</li><li>Added option <code>shareUnitOfWork</code> to <a shape="rect" href="content-enricher.html">Content Enricher</a> eip</li><li><a shape="rect" href="content-enricher.html">Content Enricher</a> with enrich and pollEnrich now supports dynamic endpoint uris computed using an <a shape="rect" href="expression.html">Expression</a> that allows to use values from the current <a shape="rect" href="exchange.html">Exchange</a> so you for example can poll a file which name is computed from data from the <a shape="rect" href="exchange.html">Exchange</a> etc. This change breaks the XML DSL a little bit and there is an easy migration effort. The Java DSL stays backwards compatible.</li><li>The Camel Karaf commands about routes now no longer requir e the context-id as 2nd parameter that is optional - if none provided then the command is a bulk operation for all Camel contexts.</li></ul><p>Fixed the following issues:</p><ul><li>File language now properly supports file extensions having double dots, such as .tar.gz</li><li>Fixed issue with doTry not stopping routing if a fault message was set using setFaultBody within the doTry.</li><li>Fixed <a shape="rect" href="bean.html">Bean</a> language to support end parenthesis in quoted string literals as part of method parameters, and not as end of method signature. </li><li>Fixed <a shape="rect" href="ftp2.html">FTP2</a> using <code>pollEnrich</code> with disconnect=true and delete=true, would disconnect before deleting the file. Now we disconnect last.</li><li>Various EIPs such as <a shape="rect" href="splitter.html">Splitter</a>, <a shape="rect" href="recipient-list.html">Recipient List</a>, <a shape="rect" href="multicast.html">Multicast</a> no longer reuse message id in their sub messages, but each sub message has its own unique message id (just as the exchange has).</li><li>Fixed an issue with the circuit breaker <a shape="rect" href="load-balancer.html">Load Balancer</a> not honoring the half open after period after an error was detected.</li><li>Fixed <a shape="rect" href="ftp2.html">FTP2</a> now calling disconnect if there was no messages to poll, even when disconnect=true configured.</li><li>Fixed <a shape="rect" href="throttler.html">Throttler</a> using method call expression in XML DSL was not working</li><li>Fixed stopping a route may stop context scoped OnException that would otherwise send message to an endpoint, now been stopped and an IllegalStateException was thrown while handling the exception.</li><li>Fixed using a <a shape="rect" href="load-balancer.html">Load Balancer</a> from a context scoped onException may double up its processors participating in the balancer per route in the context.</li><li>Fixed <code>parallelAggregate</code> on multicast/splitter/recipient list to use a thread pool for running concurrently. </li><li>Fixed <a shape="rect" href="stream-caching.html">Stream caching</a> to not delete data that was spooled to disk before both exchanges are done routing.</li><li>Fixed <a shape="rect" href="defaulterrorhandler.html">DefaultErrorHandler</a> to use 1 sec redelivery delay out of the box as the other error handlers does. </li><li>Fixed setting <code>logExhaustedMessageHistory=true</code> on <a shape="rect" href="dead-letter-channel.html">Dead Letter Channel</a> to log the message history. This option is by default false on DLC as it would be as before (not noisy).</li><li>Fixed double refresh of the parent Spring Boot Application Context</li><li>Fixed configuring endpoint uri's with primitive types when the value is looked up in the registry using #notation would not work.</li><li>Fixed using transacte d in the Scala DSL</li><li>camel-swagger now filters out older Camel releases that do not support rest-dsl when it discovers Camel's in the JVM</li><li>Fixed <a shape="rect" href="mail.html">Mail</a> consumer to use the default value of 60 seconds as poll interval again, instead of 0.5 sec.</li><li>Fixed <a shape="rect" href="netty.html">Netty</a> and <a shape="rect" href="netty4.html">Netty4</a> may perform x2 redelivery when attempting to redeliver to a netty producer endpoint</li><li>Fixed <a shape="rect" href="recipient-list.html">Recipient List</a> would not work if using RAW() syntax in endpoint uri</li><li>Fixed Camel Commands to not show correct route status for suspended routes in the routes-list command.</li><li>Fixed using <a shape="rect" href="http.html">HTTP</a> and <code>Exchange.HTTP_QUERY</code> or <code>Exchange.HTTP_URI</code> may double encode the value.</li><li>Fixed starting a route from a file endpoint, and then do a  <code>pollEnrich</code> from another file endpoint, and both using the same readLock=marker, would only delete one of the marker files when done.</li></ul><h3 id="Camel2.16.0Release-New">New <a shape="rect" href="enterprise-integration-patterns.html">Enterprise Integration Patterns</a></h3><h3 id="Camel2.16.0Release-New.1">New <a shape="rect" href="components.html">Components</a></h3><ul><li><a shape="rect" href="paho.html">camel-paho</a> - For MQTT messaging using Eclipse Paho client</li><li><a shape="rect" href="pdf.html">camel-pdf</a> - For creating PDF documents</li><li><a shape="rect" href="grape.html">camel-grape</a> - allows you to fetch, load and manage additional jars when CamelContext is running.</li><li><a shape="rect" href="slack.html">camel-slack</a> - allows you to connect to an instance of Slack and delivers a message contained in the message body via a pre established Slack incoming webhook.</li><li><a shape="rect" href="aws-ec2.html">camel- aws-ec2</a> - Component providing support to Amazon Web Services EC2 </li><li><a shape="rect" href="undertow.html">camel-undertow</a> - To use <a shape="rect" class="external-link" href="http://undertow.io/index.html" rel="nofollow">Undertow</a> as HTTP server or client.</li><li>camel-git - A generic Git component</li></ul><h3 id="Camel2.16.0Release-NewDSL">New DSL</h3><ul><li><a shape="rect" href="script.html">Script</a> - to execute a script during routing</li></ul><h3 id="Camel2.16.0Release-NewAnnotations">New Annotations</h3><h3 id="Camel2.16.0Release-NewDataFormats">New <a shape="rect" href="data-format.html">Data Formats</a></h3><ul><li><a shape="rect" href="boon.html">camel-boon</a> - For mapping POJO to/from json</li></ul><h3 id="Camel2.16.0Release-New.2">New <a shape="rect" href="languages.html">Languages</a></h3><h3 id="Camel2.16.0Release-New.3">New <a shape="rect" href="examples.html">Examples</a></h3><h3 id="Camel2.16.0Release-New.4">New <a shape="rect" href="tutori als.html">Tutorials</a></h3><h2 id="Camel2.16.0Release-APIbreaking">API breaking</h2><ul><li><p class="p1"> org.apache.camel.mode.LoadBalancerDefinition no longer implements org.apache.camel.processor.loadbalancer.LoadBalancer which is the runtime processor (this was never intended).</p></li><li>The <code>ref</code> attribute on <code><loadBalance></code> has been removed, as it has been deprecated for a long time, and you should use a <code><customLoadBalancer></code> to refer to a custom load balancer.</li><li>The <code>copy</code> method on <code>StreamCache</code> now takes an <code>Exchange</code> as parameter.</li><li>Various APIs in <code>camel-jms</code> has been adjusted to support including the JMS session parameter - <code>javax.jms.Session</code>. Though these API changes are mostly internal facing, and we do not expect end users problems.</li><li>The <code>resourceUri</code> and <code>resourceRef</code> attributes on <code><enrich></code> and <code><pollEnrich></code> has been removed as they now support a dynamic uris computed from an <a shape="rect" href="expression.html">Expression</a>.</li></ul><h2 id="Camel2.16.0Release-KnownIssues">Known Issues</h2><h2 id="Camel2.16.0Release-Dependencyupgrades">Dependency upgrades</h2><ul><li>Amazon Web Service Java SDK from 1.8.9.1 to 1.9.40</li><li>Apache Commons Cli from 1.2 to 1.3.1</li><li>Apache Commons Compress from 1.5 to 1.9</li><li>Apache Commons Lang from 3.3.2 to 3.4</li><li>Apache Deltaspike from 1.3.0 to 1.4.1</li><li>Apache DS from 2.0.0-M19 to 2.0.0-M20</li><li>Apache HttpComponents Core from 4.3.3 to 4.4.1</li><li>Apache HttpComponents Client from 4.3.6 to 4.4.1</li><li>Apache JClouds from 1.8.1 to 1.9.0</li><li>Apache Olingo Odata from 2.0.0 to 2.0.4</li><li>Apns from 0.2.3 to 1.0.0.Beta6</li><li>AspectJ from 1.6.2 to 1.8.5</li><li>Async-http-client from 1.9.8 to 1.9.26</li><li>Atmosphere from 2.2. 6 to 2.3.2</li><li>Cassandra from 2.1.2 to 2.1.6</li><li><p>Cassandra Datastax Java Driver from 2.1.2 to 2.1.6</p></li><li>Chunk Templates from 2.6.3 to 2.6.4</li><li>CMIS 0.8.0 to 0.13.0</li><li>DNSJava from 2.1.6 to 2.1.7</li><li>Docker-java from 0.10.5 to 1.3.0</li><li>Dropbox core Java SDK from 1.7.6 to 1.7.7</li><li>Dropwizard Metrics from 3.1.0 to 3.1.2</li><li>Ehcache from 2.9.1 to 2.10.0</li><li>Facebook4j from 1.1.12 to 2.2.2</li><li>Freemarker from 2.3.21 to 2.3.22</li><li>Google App Engine from 1.8.3 to 1.9.21</li><li>Gson from 3.2 to 3.2.1</li><li>iCal4j from 1.5.0.2 to 1.6.0</li><li>Hazelcast from 3.4.2 to 3.5</li><li>Infinispan from 6.0.2.Final to 7.2.3.Final</li><li><span>Jackson2 from 2.4.3 to 2.5.4</span></li><li><span>Jackrabbit from 2.10.0 to 2.10.1</span></li><li><span>Jboss Marshalling from 1.4.4.Final to 1.4.10.Final</span></li><li><span>Jboss Weld from 2.2.4.Final to 2.2.13.Final</span></li><li><span>Jgroups from 3.6.1.Final to 3.6.3.Final</span></li><li><span >Joda-time from 2.5 to 2.8.1</span></li><li><span>Jsch from 0.1.51 to >0.1.53</span></li><li>Jsonpath from 1.2.0 to 2.0.0</li><li>Kafka from 0.8.1.1 >to 0.8.2.0</li><li>LightCouch from 0.1.3 to 0.1.8</li><li>MongoDB Java Driver >from 2.12.4 to 3.0.2</li><li>MongoDB test harness from 1.46.4 to >1.48.0</li><li>Mvel2 from 2.2.1.Final to 2.2.5.Final</li><li>OGNL from 3.0.8 >to 3.0.11</li><li>OpenEJB from 4.6.0.2 to 4.7.2</li><li>OpenJPA from 2.3.0 to >2.4.0</li><li>Openshift Java Client 2.5.0.Final to 2.7.0.Final</li><li>PDFBox >from 1.6.0 to 1.8.9</li><li>Restlet from 2.2.x to 2.3.1<span><br >clear="none"></span></li><li>SLF4J from 1.7.10 to 1.7.12</li><li>Snakeyaml >from 1.14 to 1.15</li><li>Spring upgrades</li><li>Sshd from 0.13.0 to >0.14.0</li><li>TestNG from 6.8.8 to 6.8.21</li><li>Twitter4J from 4.0.2 to >4.0.3</li><li>XStream from 1.4.7 to 1.4.8</li><li>VertX from 2.2.5 to >3.0.0</li><li>ZXing from 3.0.1 to 3.2.0</li></ul><h2 >id="Camel2.16.0Release-Importantchangestoconsiderwhenupgrading">I mportant changes to consider when upgrading</h2><ul><li>The dumpRoutesAsXml operation now preserve property placeholder used in the route models. </li><li>Using setFaultBody / setFaultHeader behaves similar to setBody / setHeader to preserve existing headers/attachments by setting on existing IN or OUT message.</li><li>If using concurrent consumer on <a shape="rect" href="jms.html">JMS</a> endpoints for request/reply over JMS then you must use the new replyToConcurrentConsumers, replyToMaxConcurrentConsumers options to configure the values. </li><li>When the <a shape="rect" href="aggregator2.html">Aggregator2</a> is forced completed the exchange property <code>Exchange.AGGREGATED_COMPLETED_BY</code> value has been changed from "forceCompletion" to "force" so its named like the other completion triggers.</li><li>Removed unsupported modules camel-web and camel-web-standalone.</li><li>Removed unsupported camel:dot functionality from camel:run plugin.</li>< li>Removed unsupported camel-archetype-scala-component from maven archetypes.</li><li>The Maven coordinate for linkedin and olingo2 components changed to be aligned like all the others having groupId as just org.apache.camel.</li><li>If using MongoDB component, the option<em> invokeGetLastError</em> doesn't exist anymore. The option invokeGetLastError instructs the MongoDB Java driver to invoke <em>getLastError()</em> after every call. In the 3.0.0 MongoDB driver implementation, the <em>getLastError()</em> method in WriteResult has been removed. So, if needed, use an acknowledged WriteConcern when executing the write operation and then verify the correctness of the operation with the method <em>wasAcknowledged()</em> of WriteResult.</li><li>The <a shape="rect" href="jing.html">Jing</a> component now uses <code>jing</code> as schema name in uris, instead of <code>rng</code> or <code>rnc</code>. Those names has been removed.</li><li><a shape="rect" href="swagger.ht ml">Swagger</a> module now supports getting api-docs from multiple camel contexts in the JVM. The entry point at /api-docs now lists the contexts detected, and you need to append the context id in the path, eg /api-docs/myCamel</li><li>If using <contextScan> with Spring or Blueprint to filter RouteBuilder classes, then Camel will now by default only look for singleton beans. You can turn on the old behavior to include prototype scoped with the new option <pre>includeNonSingletons</pre></li><li>camel-vertx has been upgraded to vertx 3.0 which requires Java 8 at runtime.</li><li><code>camel-cdi</code> is now using CDI 1.1 api - support for 1.0 has been dropped.</li><li><a shape="rect" href="content-enricher.html">Content Enricher</a> with enrich and pollEnrich now supports dynamic endpoint uris computed using an <a shape="rect" href="expression.html">Expression</a> that allows to use values from the current <a shape="rect" href="exchange.html">Exchange</a> so you for example can poll a file which name is computed from data from the <a shape="rect" href="exchange.html">Exchange</a> etc. This change breaks the XML DSL a little bit and there is an easy migration effort. The Java DSL stays backwards compatible.</li><li>Support for CXF 2.7 is dropped.</li><li>camel-jetty8 is being considered deprecated and we would like to drop this in a nearby future release as Jetty 8.x is EOL. </li></ul><h2 id="Camel2.16.0Release-GettingtheDistributions">Getting the Distributions</h2><h3 id="Camel2.16.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/2.16.0/apache-camel-2.16.0.zip">apache-camel-2.16.0.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/2.16.0/apache-camel-2.16.0.zip.asc">apache-camel-2.16.0.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/2.16.0/apache-camel-2.16.0.tar.gz">apache-camel-2.16.0.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/2.16.0/apache-camel-2.16.0.tar.gz.asc">apache-camel-2.16.0.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.16.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" ro wspan="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.16.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[<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-core</artifactId>
Modified: websites/production/camel/content/spring-testing.html ============================================================================== --- websites/production/camel/content/spring-testing.html (original) +++ websites/production/camel/content/spring-testing.html Sun Jul 19 10:19:32 2015 @@ -123,7 +123,7 @@ public class FilterTest extends SpringRu } } ]]></script> -</div></div><p>Notice that we use <strong>@DirtiesContext</strong> on the test methods to force <a shape="rect" href="spring-testing.html">Spring Testing</a> to automatically reload the <a shape="rect" href="camelcontext.html">CamelContext</a> after each test method - this ensures that the tests don't clash with each other (e.g. one test method sending to an endpoint that is then reused in another test method).</p><p>Also notice the use of <strong>@ContextConfiguration</strong> to indicate that by default we should look for the <a shape="rect" class="external-link" href="http://svn.apache.org/repos/asf/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/patterns/FilterTest-context.xml">FilterTest-context.xml on the classpath</a> to configure the test case which looks like this</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div></div>Notice that we use <strong>@DirtiesContext</strong> on the test methods to force <a shape="rect" href="spring-testing.html">Spring Testing</a> to automatically reload the <a shape="rect" href="camelcontext.html">CamelContext</a> after each test method - this ensures that the tests don't clash with each other (e.g. one test method sending to an endpoint that is then reused in another test method).<p>Also notice the use of <strong>@ContextConfiguration</strong> to indicate that by default we should look for the <a shape="rect" class="external-link" href="http://svn.apache.org/repos/asf/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/patterns/FilterTest-context.xml">FilterTest-context.xml on the classpath</a> to configure the test case which looks like this</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[ <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" @@ -145,7 +145,7 @@ public class FilterTest extends SpringRu </beans> ]]></script> -</div></div><p>This test will load a Spring XML configuration file calledFilterTest-context.xml from the classpath in the same package structure as the FilterTest class and initialize it along with any Camel routes we define inside it, then inject theCamelContextinstance into our test case.</p><p>For instance, like this maven folder layout:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div></div>This test will load a Spring XML configuration file calledFilterTest-context.xml from the classpath in the same package structure as the FilterTest class and initialize it along with any Camel routes we define inside it, then inject theCamelContextinstance into our test case.<p>For instance, like this maven folder layout:</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[src/test/java/org/apache/camel/spring/patterns/FilterTest.java src/test/resources/org/apache/camel/spring/patterns/FilterTest-context.xml ]]></script> @@ -197,7 +197,7 @@ public class FilterTest extends Abstract } } ]]></script> -</div></div><p>This is similar to the XML Config example above except that there is no XML file and instead the nested <strong>ContextConfig</strong> class does all of the configuration; so your entire test case is contained in a single Java class. We currently have to reference by class name this class in the <strong>@ContextConfiguration</strong> which is a bit ugly. Please vote for <a shape="rect" class="external-link" href="http://jira.springframework.org/browse/SJC-238" rel="nofollow">SJC-238</a> to address this and make Spring Test work more cleanly with Spring JavaConfig.</p><h4 id="SpringTesting-PlainSpringTestusingJUnit4.0.xRunnerwithXMLConfig">Plain Spring Test using JUnit 4.0.x Runner with XML Config</h4><p>You can avoid extending Spring classes by using the SpringJUnit4ClassRunner provided by Spring Test.  This custom JUnit runner means you are free to choose your own class hierarchy while retaining all the capabilities of Spring Test.</p><div class="confluence-info rmation-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>This is for Spring 4.0.x. If you use Spring 4.1 or newer, then see the next section.</p></div></div><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div></div>This is similar to the XML Config example above except that there is no XML file and instead the nested <strong>ContextConfig</strong> class does all of the configuration; so your entire test case is contained in a single Java class. We currently have to reference by class name this class in the <strong>@ContextConfiguration</strong> which is a bit ugly. Please vote for <a shape="rect" class="external-link" href="http://jira.springframework.org/browse/SJC-238" rel="nofollow">SJC-238</a> to address this and make Spring Test work more cleanly with Spring JavaConfig.<h4 id="SpringTesting-PlainSpringTestusingJUnit4.0.xRunnerwithXMLConfig">Plain Spring Test using JUnit 4.0.x Runner with XML Config</h4><p>You can avoid extending Spring classes by using the SpringJUnit4ClassRunner provided by Spring Test.  This custom JUnit runner means you are free to choose your own class hierarchy while retaining all the capabilities of Spring Test.</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>This is for Spring 4.0.x. If you use Spring 4.1 or newer, then see the next section.</p></div></div><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[@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration public class MyCamelTest { @@ -244,7 +244,7 @@ public class MyCamelTest { Â Â } } ]]></script> -</div></div><h3 id="SpringTesting-CamelEnhancedSpringTest"><span style="line-height: 1.5625;">Camel Enhanced Spring Test</span></h3><p>Using org.apache.camel.test.junit4.CamelSpringJUnit4ClassRunner runner with the <strong>@RunWith</strong> annotation or extending org.apache.camel.testng.AbstractCamelTestNGSpringContextTests provides the full feature set of Spring Test with support for the feature set provided in the CamelTestSupport classes.  A number of Camel specific annotations have been developed in order to provide for declarative manipulation of the Camel context(s) involved in the test.  These annotations free your test classes from having to inherit from the CamelSpringTestSupport classes and also reduce the amount of code required to customize the tests.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Annotation Class</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p >Applies To</p></th><th colspan="1" rowspan="1" >class="confluenceTh"><p>Description</p></th><th colspan="1" rowspan="1" >class="confluenceTh"><p>Default Behavioir If Not Present</p></th><th >colspan="1" rowspan="1" class="confluenceTh"><p>Default Behavior If >Present</p></th></tr><tr><td colspan="1" rowspan="1" >class="confluenceTd"><p>org.apache.camel.test.spring.DisableJmx</p></td><td >colspan="1" rowspan="1" class="confluenceTd"><p>Class</p></td><td colspan="1" >rowspan="1" class="confluenceTd"><p>Indicates if JMX should be globally >disabled in the CamelContexts that are bootstrapped  during the test >through the use of Spring Test loaded application contexts.</p></td><td >colspan="1" rowspan="1" class="confluenceTd"><p>JMX is disabled</p></td><td >colspan="1" rowspan="1" class="confluenceTd"><p>JMX is >disabled</p></td></tr><tr><td colspan="1" rowspan="1" >class="confluenceTd"><p>org.apache.camel.test.spring.ExcludeRoutes</p></td><td > colspan="1" rowspan="1" class="confluenceTd"><p>Cla ss</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Indicates if certain route builder classes should be excluded from discovery.  Initializes a org.apache.camel.spi.PackageScanClassResolver to exclude a set of given classes from being resolved. Typically this is used at test time to exclude certain routes, which might otherwise be just noisy, from being discovered and initialized.</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Not enabled and no routes are excluded</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>No routes are excluded</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.camel.test.spring.LazyLoadTypeConverters (Deprecated)</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Class</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Indicates if the CamelContexts that are bootstrapped during the test through the use of Spring Test loaded application contexts should use lazy loading of type converters.</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Type converters are not lazy loaded</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Type converters are not lazy loaded</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.camel.test.spring.MockEndpoints</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Class</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Triggers the auto-mocking of endpoints whose URIs match the provided filter.  The default filter is "*" which matches all endpoints.  See org.apache.camel.impl.InterceptSendToMockEndpointStrategy for more details on the registration of the mock endpoints.</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Not enabled</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>All endpoints are sniffed and recorded in a mock endpoint.</p></td></tr><tr><td colspan="1" rowspan="1" class=" confluenceTd"><p>org.apache.camel.test.spring.MockEndpointsAndSkip</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Class</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Triggers the auto-mocking of endpoints whose URIs match the provided filter.  The default filter is "*", which matches all endpoints.  See <a shape="rect" class="external-link" href="http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToMockEndpointStrategy.java?view=markup">org.apache.camel.impl.InterceptSendToMockEndpointStrategy</a> for more details on the registration of the mock endpoints.  This annotation will also skip sending the message to matched endpoints as well.</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Not enabled</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>All endpoints are sniffed and recorded in a mock endpoint.  The original endpoint is not invoked.</p></ td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.camel.test.spring.ProvidesBreakpoint</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Method</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Indicates that the annotated method returns an org.apache.camel.spi.Breakpoint for use in the test.  Useful for intercepting traffic to all endpoints or simply for setting a break point in an IDE for debugging.  The method must be public, static, take no arguments, and return org.apache.camel.spi.Breakpoint.</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>N/A</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The returned Breakpoint is registered in the CamelContext(s)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.camel.test.spring.ShutdownTimeout</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Class</p></td><td colspan="1" rowspan="1" class="confluence Td"><p>Indicates to set the shutdown timeout of all CamelContexts instantiated through the use of Spring Test loaded application contexts.  If no annotation is used, the timeout is automatically reduced to 10 seconds by the test framework.</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>10 seconds</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>10 seconds</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.camel.test.spring.UseAdviceWith</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Class</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Indicates the use of adviceWith() within the test class.  If a class is annotated with this annotation and UseAdviceWith#value() returns true, any CamelContexts bootstrapped during the test through the use of Spring Test loaded application contexts will not be started automatically.  The test author is responsible for injecti ng the Camel contexts into the test and executing CamelContext#start() on them at the appropriate time after any advice has been applied to the routes in the CamelContext(s).</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>CamelContexts do not automatically start.</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>CamelContexts do not automatically start.</p></td></tr></tbody></table></div><p>The following example illustrates the use of the <strong>@MockEndpoints</strong> annotation in order to setup mock endpoints as interceptors on all endpoints using the Camel Log component and the <strong>@DisableJmx</strong> annotation to enable JMX which is disabled during tests by default.  Note that we still use the <strong>@DirtiesContext</strong> annotation to ensure that the CamelContext, routes, and mock endpoints are reinitialized between test methods.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div></div><h3 id="SpringTesting-CamelEnhancedSpringTest"><span style="line-height: 1.5625;">Camel Enhanced Spring Test</span></h3><p>Using org.apache.camel.test.junit4.CamelSpringJUnit4ClassRunner runner with the <strong>@RunWith</strong> annotation or extending org.apache.camel.testng.AbstractCamelTestNGSpringContextTests provides the full feature set of Spring Test with support for the feature set provided in the CamelTestSupport classes.  A number of Camel specific annotations have been developed in order to provide for declarative manipulation of the Camel context(s) involved in the test.  These annotations free your test classes from having to inherit from the CamelSpringTestSupport classes and also reduce the amount of code required to customize the tests.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Annotation Class</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p >Applies To</p></th><th colspan="1" rowspan="1" >class="confluenceTh"><p>Description</p></th><th colspan="1" rowspan="1" >class="confluenceTh"><p>Default Behavioir If Not Present</p></th><th >colspan="1" rowspan="1" class="confluenceTh"><p>Default Behavior If >Present</p></th></tr><tr><td colspan="1" rowspan="1" >class="confluenceTd"><p>org.apache.camel.test.spring.DisableJmx</p></td><td >colspan="1" rowspan="1" class="confluenceTd"><p>Class</p></td><td colspan="1" >rowspan="1" class="confluenceTd"><p>Indicates if JMX should be globally >disabled in the CamelContexts that are bootstrapped  during the test >through the use of Spring Test loaded application contexts.</p></td><td >colspan="1" rowspan="1" class="confluenceTd"><p>JMX is disabled</p></td><td >colspan="1" rowspan="1" class="confluenceTd"><p>JMX is >disabled</p></td></tr><tr><td colspan="1" rowspan="1" >class="confluenceTd"><p>org.apache.camel.test.spring.ExcludeRoutes</p></td><td > colspan="1" rowspan="1" class="confluenceTd"><p>Cla ss</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Indicates if certain route builder classes should be excluded from discovery.  Initializes a org.apache.camel.spi.PackageScanClassResolver to exclude a set of given classes from being resolved. Typically this is used at test time to exclude certain routes, which might otherwise be just noisy, from being discovered and initialized.</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Not enabled and no routes are excluded</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>No routes are excluded</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.camel.test.spring.LazyLoadTypeConverters (Deprecated)</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Class</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Indicates if the CamelContexts that are bootstrapped during the test through the use of Spring Test loaded application contexts should use lazy loading of type converters.</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Type converters are not lazy loaded</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Type converters are not lazy loaded</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.camel.test.spring.MockEndpoints</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Class</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Triggers the auto-mocking of endpoints whose URIs match the provided filter.  The default filter is "*" which matches all endpoints.  See org.apache.camel.impl.InterceptSendToMockEndpointStrategy for more details on the registration of the mock endpoints.</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Not enabled</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>All endpoints are sniffed and recorded in a mock endpoint.</p></td></tr><tr><td colspan="1" rowspan="1" class=" confluenceTd"><p>org.apache.camel.test.spring.MockEndpointsAndSkip</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Class</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Triggers the auto-mocking of endpoints whose URIs match the provided filter.  The default filter is "*", which matches all endpoints.  See <a shape="rect" class="external-link" href="http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToMockEndpointStrategy.java?view=markup">org.apache.camel.impl.InterceptSendToMockEndpointStrategy</a> for more details on the registration of the mock endpoints.  This annotation will also skip sending the message to matched endpoints as well.</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Not enabled</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>All endpoints are sniffed and recorded in a mock endpoint.  The original endpoint is not invoked.</p></ td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.camel.test.spring.ProvidesBreakpoint</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Method</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Indicates that the annotated method returns an org.apache.camel.spi.Breakpoint for use in the test.  Useful for intercepting traffic to all endpoints or simply for setting a break point in an IDE for debugging.  The method must be public, static, take no arguments, and return org.apache.camel.spi.Breakpoint.</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>N/A</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The returned Breakpoint is registered in the CamelContext(s)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.camel.test.spring.ShutdownTimeout</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Class</p></td><td colspan="1" rowspan="1" class="confluence Td"><p>Indicates to set the shutdown timeout of all CamelContexts instantiated through the use of Spring Test loaded application contexts.  If no annotation is used, the timeout is automatically reduced to 10 seconds by the test framework.</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>10 seconds</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>10 seconds</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.camel.test.spring.UseAdviceWith</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Class</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Indicates the use of adviceWith() within the test class.  If a class is annotated with this annotation and UseAdviceWith#value() returns true, any CamelContexts bootstrapped during the test through the use of Spring Test loaded application contexts will not be started automatically.  The test author is responsible for injecti ng the Camel contexts into the test and executing CamelContext#start() on them at the appropriate time after any advice has been applied to the routes in the CamelContext(s).</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>CamelContexts do not automatically start.</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>CamelContexts do not automatically start.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">org.apache.camel.test.spring.UseOverridePropertiesWithPropertiesComponent</td><td colspan="1" rowspan="1" class="confluenceTd">Method</td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.16:</strong>Indicates that the annotated method returns a java.util.Properties for use in the test, and that those properties override any existing properties configured on the PropertiesComponent</td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd">Override properties</td></tr> </tbody></table></div><p>The following example illustrates the use of the <strong>@MockEndpoints</strong> annotation in order to setup mock endpoints as interceptors on all endpoints using the Camel Log component and the <strong>@DisableJmx</strong> annotation to enable JMX which is disabled during tests by default.  Note that we still use the <strong>@DirtiesContext</strong> annotation to ensure that the CamelContext, routes, and mock endpoints are reinitialized between test methods.</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[@RunWith(CamelSpringJUnit4ClassRunner.class) @BootstrapWith(CamelTestContextBootstrapper.class) @ContextConfiguration