h1. Camel 2.11.0 release (currently in progress)

{div:style=padding-right:20px;float:left;margin-left:-20px;}
!http://camel.apache.org/download.data/camel-box-v1.0-150x200.png!
{div}
{div:style=min-height:200px}
{div}

h2. New and Noteworthy

Welcome to the 2.11.0 release with approximately XXX issues resolved - including new features, improvements, and bug fixes, such as: 

* Added support for SOAP 1.2 in [SOAP] data format.
* [Cache] operation for add/update now supports expiry headers to control time to live/idle/eternal.
* Added {{allowNullBody}} option to [JMS] to configure whether sending messages with no body is allowed.
* Added {{connectOnStartup}} option to [HDFS] to allow to connect on demand, to avoid having Hadoop block for long time connecting to the HDFS cluster, as it has a hardcoded 15 minute retry mechanism. 
* Added support for daily and weekly trends to [Twitter] component.
* The [Camel Maven Archetypes] now generates projects without any license headers.
* Added 'rejectOld' option to the [Resequencer] to prevent out of order messages from being delivered after capacity/timeout events occur
* Further optimized [XPath] under concurrent load, and as well ensured resources are cleaned up eagerly
* Added options {{allowNullBody}} and {{readLockMinLength}} to the [File|File2] and [FTP|FTP2] components.
* Made {{changed}} read lock strategy on [FTP|FTP2] go faster (eg when the FTP server has a lot of files in the directory) if you enable the {{fastExistsCheck=true}} option as well. Notice that some FTP server may not support this.
* [HL7] moves to HAPI 2.0 and supports using a dedicated Parser instance in the [HL7] MLLP codec and DataFormat. Added "Terser" language and expression to be able to extract fields from a parsed message. [HL7] now uses Apache Mina 2.x.
* Add an option {{HttpMethodRestrict}} to restrict HTTP method in [Jetty] and [Servlet]
* Add support for selection of [direct-vm] consumers by using ant-like path expression.
* The [POJO Producing], and [POJO Consuming] with @Consume, @Produce, @EndpointInject now supports a new {{property} attribute to get the endpoint configuration from a bean property (eg using a getter method); this allows you to configure this on the bean using conventional bean configuration.
* Testing with {{camel-test-blueprint}} on Windows no longer tries to cleanup after testing taking up 5 seconds and logging WARNs.
* The [File|File2], and [FTP|FTP2] components now support {{fileExist=Move}} option to move any existing files before writing a file.
* Added option {{loadStatisticsEnabled}} on [Camel JMX] to allow to disable load statistics if not needed (avoids a background thread being in use, to calculate the load stats).
* Enabled "lazy connections" for [XMPP] providers via the {{testConnectionOnStartup}} option
* Added a connection monitor to detect and fix dropped [XMPP] consumer connections at configurable {{connectionPollDelay}} intervals
* Added an {{org.apache.camel.builder.ExchangeBuilder}} to build the [Exchange] using a builder pattern.
* The [Camel Run Maven Goal] can now run [CDI] applications.
* The Camel [CDI] component has improved a lot.
* Added option {{allowRedeliveryWhileStopping}} to [error handlers|Dead Letter Channel] to control if redelivery is allowed during stopping/shutting down Camel or the route(s). Turning this option {{false}} allows to stop quicker by rejecting redelivery attempts.
* Added support for specifying user info in Camel [Endpoint] urls, which contains the @ sign; now the @ sign can be given as is; without being encoded to %40.
* Added robust connection support for [JMX]. Optional {{testConnectionOnStartup}} allows a JMX consumer to attach to a JMX server that becomes available _after_ the JMX endpoint starts; {{reconnectOnConnectionFailure}} enables re-connection of failed JMX connections.
* [JAXB] and [SOAP] data format now supports controlling namespace prefix mappings when marshalling (eg to avoid prefixes such as ns2, ns3, ns4 etc.)
* Added support for using raw uris when [Component]s create [Endpoint]s. This gives component writers full power in case their component has special syntax/notation for endpoint uri configurations.
* [EIP]s configured with custom {{AggregationStrategy}} will now strict check the custom strategy exists in the [Registry] and no longer fallback and use a default strategy if not.
* Camel now logs on shutdown if any thread pools hasn't been properly shutdown, and will shutdown them as fail safe (can only be done for the thread pools Camel manages).
* The buffer size of [Stream caching] is now configurable.
* Improved startup performance.
* Added [JMS] URI option {{messageListenerContainerFactoryRef}} which allows you to specify a {{MessageListenerContainerFactory}} to determine what {{org.springframework.jms.listener.AbstractMessageListenerContainer}} to use to consume messages.
* [MQTT] producer now leverages the [Asynchronous Routing Engine]

h3. Fixed issues

* Fixed [RoutePolicy] used from Spring XML with {{routePolicyRef}} may not invoke all callbacks on the policy.
* Fixed [Mina] consumer to force disconnect upon timeout when doing request/reply, as late replies may cause side effects otherwise.
* Fixed [simple] language with empty quoted literals in predicates, so you can compare against empty strings.
* Fixed [SOAP] data format to set SOAP 1.1 namespace when marhsalling faults.
* Fixed [SEDA] producer to send to the right BlockingQueue being attached on the [SEDA] endpoint so that the sent messages don't get lost.
* Fixed using {{sendEmptyMessageWhenIdle=true}} on a batch consumer such as [File|File2] now working with [Aggregate|Aggregator2] EIP when using {{completionFromBatchConsumer}}
* Fixed {{MockEndpoint.expectedBodiesReceivedInAnyOrder}} to allow asserting on multiple arrival of the same/equal bodies.
* Fixed [MyBatis] to demarcate the running transactions properly while reading/writing from/to database.
* Fixed [Jetty], [HTTP], [HTTP4], and [AHC] http components not working in bridge mode if content path have spaces
* Fixed the [CXF] fallback convertor issue which camel will unregister it when the converter return null.
* Fixed the issue that [File2] endpoints on windows without volume name in the path url. 
* Fixed the issue of unmarshaling pgp messages encrypted with ElGamal.
* Fixed random [Load Balancer] to be even spread (before was a little less likely to pick the 1st)
* Fixed [Timer] to not fire during starting [CamelContext]
* Fixed [XMLSecurity DataFormat] to enable retrieval of password-protected private keys for asymmetric decryption
* Fixed [Exception Clause] using {{maximumRedeliveries(-1)}} may be wrongly inherited by another {{onException}} during a redelivery process.
* Fixed logging [Error Handler] to use configured logging level.
* Fixed issue when using multiple {{RouteBuilder}} with the Java DSL should have the [Exception Clause] being scoped per {{RouteBuilder}} instance.
* Fixed issue with restarting a [SEDA] consumer would not stop previous used thread pool.
* Fixed issue when running low on memory and doing request/reply over [JMS] may GC producer, causing a new producer to be created, and leaving a message listener running from the previous producer.
* Fixed issue with [Try Catch Finally] should clear redelivery exhaust state when catching exception in doCatch.
* Fixed potential NPE in [MQTT] producer, if a connection has been disconnected, and sending fails.

h3. New [Enterprise Integration Patterns]

h3. New Camel Karaf Command

h3. New [Components]

* {{[camel-cmis|cmis]}} - for integration of CMIS compliant content repositories
* {{[camel-couchdb|CouchDB]}} - for integration with [Apache CouchDB|http://couchdb.apache.org/]
* {{[camel-elasticsearch|ElasticSearch]}} - for [ElasticSearch|http://elasticsearch.org] integration
* {{[camel-sjms|sjms]}} - for "Springless" JMS integration
* {{[camel-neo4j|neo4j]}} - for talking to neo4j server from Camel.

h3. DSL Changes

* Added LoggingErrorHandler fluent builder to Scala DSL.

h3. New Annotations

h3. New [Data Formats|Data Format]

h3. New [Languages]

* [VTD-XML] - for fast and efficient XPath evaluation/splitting using the VTD-XML Library. {{camel-vtdxml}} hosted at [Camel Extra|http://camel-extra.googlecode.com/]

h3. New [Examples]

* [ActiveMQ Camel Tomcat] example shows how to embed Apache ActiveMQ and Camel in a web application running on Apache Tomcat.

h3. New [Tutorials]

h2. API changes/breaking

* [HL7] upgraded to now use Apache Mina 2.x.
* Renamed {{org.apache.camel.component.hbase.HBaseContats}} to {{org.apache.camel.component.hbase.HBaseConstants}}
* Added getter/setter methods for loadStatisticsEnabled on {{org.apache.camel.spi.ManagementStrategy}}
* Added {{shutdownGraceful}}, and {{awaitTermination}} methods to {{ExecutorServiceManager}} to make it easier to shutdown a thread pool gracefully waiting for its tasks to complete.
* Added method {{useRawUri()}} to {{org.apache.camel.Component}} to allow [Component]s to use raw uri when creating endpoints. (by default the uri has been encoded prior to creation).
* Added method {{newThread}} to {{org.apache.camel.spi.ExecutorServiceManager}} to create a new thread without using a thread pool.

h2. Internal/Non API refactorings that may affect users

* The [Camel Test Kit|Testing] provides a default [Properties] component out of the box; which mean using {{addComponent("properties", ...)}} is no longer needed; instead get the component using {{getComponent("properties")}} and configure the component instead.
* Minor adjustments to {{org.apache.camel.builder.ErrorHandlerBuilder}}.
* {{LRUCache}} will attempt to stop service on eviction of entry.

h2. Known Issues

* The [Tracer] may not output all details for some situations, such as when using {{onCompletion}} or {{intercept}}, etc.
* The project cannot fully build the site using Maven (e.g. running {{"mvn site"}}). There is no plan to fix this, as the project does not use maven site.
* JBoss 7 may log a WARNing when running Camel as a WAR file.

h2. Dependency Upgrades

* Async Http Client 1.7.5 to 1.7.6
* Axiom 1.2.10 to 1.2.12
* AWS 1.3.10 to 1.3.14
* BeanIO 2.0.0 to 2.0.2
* Commons Exec 1.0.1 to 1.1
* ConcurrentLinkedHashMap 1.2 to 1.3.1
* Ehcache bundle 2.5.1 to 2.6.0
* Groovy 1.8.6 to 2.0.5
* GSon 2.1 to 2.2.2
* Hazelcast 2.0.2 to 2.3
* HTTP Client 4.1.3 to 4.2.1
* Icu4j 4.0.1 to 4.8.1.1
* Jackson 1.9.7 to 1.9.10
* Jaxen 1.1.3 to 1.1.4
* JClouds 1.4.0 to 1.5.1
* Jettison 1.3.1 to 1.3.2
* Jetty 7.5.4 to 7.6.7
* JRuby 1.6.7 to 1.6.7.2
* JT400 6.0 to 6.7
* Krati 0.4.5 to 0.4.6
* Lucene 3.6.0 to 3.6.1
* Mina 2.0.4 to 2.0.6
* MongoDB Java Driver 2.7.3 to 2.9.1
* Netty 3.5.1 to 3.5.8
* Ognl bundle 3.0.4_1 to 3.0.5_1
* Pax Logging 1.5.3 to 1.6.10
* QPid 0.16 to 0.18
* Quartz 1.8.5 to 1.8.6
* Restlet 2.0.14 to 2.0.15
* Scala 2.9.1 to 2.9.2
* Saxon 9.3.0.11 to 9.4.0.1
* Shiro 1.2.0 to 1.2.1
* Solr 3.6.0 to 3.6.1
* Spring Batch 2.1.8 to 2.1.9
* Spring Framework 3.1.1 to 3.1.2
* Spring Integration 2.1.2 to 2.1.3
* Spring Security 3.1.0 to 3.1.2
* SSHD 0.6.0 to 0.7.0
* TestNG 6.0.1 to 6.7
* Woodstox 4.1.2 to 4.1.3
* XStream 1.4.2 to 1.4.3

h2. Important changes to consider when upgrading

* {{camel-mina2}} now uses {{OrderedThreadPoolExecutor}} by default. There is a new option {{orderedThreadPoolExecutor}} you can configure it to {{false}} to revert back to unordered if needed. If using SSL etc. then ordered is required to be used.
* {{camel-netty}} now uses {{OrderedMemoryAwareThreadPoolExecutor}} by default. There is a new option {{orderedThreadPoolExecutor}} you can configure it to false to revert back to unordered if needed. If using SSL etc. then ordered is required to be used.
* The default value of the {{delay}} option on [Timer] has been changed from {{0}} to {{1000}}
* The default value of the {{convertLFtoCR}} option of the [HL7] MLLP codec has been changed from {{true}} to {{false}}. Likewise, the [HL7] DataFormat and TypeConverter do not perform this conversion anymore.
* The [Simple] language has limited its support for the escape character to only new line, carriage return and tab characters. This makes it easier to use back-slash characters in the [Simple] language without double escaping etc. 

h2. Notice

* Maven 3.0.2 or better is required to build the [Source]
* If you want to deploy Apache Camel 2.11.0 into Apache Karaf, we highly recommend to use the 'jre.properties.cxf' configuration, which is part of Apache Karaf 2.2.5 onwards. For example {{camel-cxf}}, {{camel-mail}}, and {{camel-spring-ws}} requires this to be installable; as well other features may as well.

h2. Getting the Distributions

h3. Binary Distributions

|| Description || Download Link || PGP Signature file of download ||
| Windows Distribution | [apache-camel-2.11.0.zip|http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.11.0/apache-camel-2.11.0.zip] | [apache-camel-2.11.0.zip.asc|http://www.apache.org/dist/camel/apache-camel/2.11.0/apache-camel-2.11.0.zip.asc] |
| Unix/Linux/Cygwin Distribution | [apache-camel-2.11.0.tar.gz|http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.11.0/apache-camel-2.11.0.tar.gz] | [apache-camel-2.11.0.tar.gz.asc|http://www.apache.org/dist/camel/apache-camel/2.11.0/apache-camel-2.11.0.tar.gz.asc] |

{info}

h3. Source Distributions

|| Description || Download Link || PGP Signature file of download ||
| Source Distribution | [apache-camel-2.11.0-src.zip|http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.11.0/apache-camel-2.11.0-src.zip] | [apache-camel-2.11.0-src.zip.asc|http://www.apache.org/dist/camel/apache-camel/2.11.0/apache-camel-2.11.0-src.zip.asc] |