Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Wiki Markup
h1. Camel 2.12.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.12.0 release which approx XXX issues resolved (new features, improvements and bug fixes such as...)

* [Endpoint Annotations] along with automatically created HTML documentation for the endpoint parameters; this makes it easier for component developers to add a few refactoring-safe annotations to their Endpoint or Consumer implementations and, (along with javadoc comments on the field or setter method), get nice user documentation on how to use the endpoint for free.
* [ComponentConfiguration] API provides a handy API for tools developers to introspect on a Component to find all the possible parameters, their types and any extra annotations (like Bean Validation Annotations) to be able to create/edit endpoints or URI strings so that tools can generate nicer UIs for configuring endpoints than just letting folks edit Strings.
* [EndpointCompleter] API provides a hook so that command line tools (like [Karaf's shell|http://karaf.apache.org/manual/latest-2.3.x/users-guide/using-console.html]), IDEs and web tools can get (bash tab like) auto-completion on endpoint paths (such as file or directory names, message queue names, database table names) when creating or using new endpoints
* Reduced stack-frames in use during routing, that also makes Camel's stack traces being logged much less verbose. This also allows people to easier debug the internals of Camel as less {{AsyncCallback}} callbacks are in use during routing.
* Easy to use [Message History] out of the box. And included message history as "route stack-trace" when exceptions logged by [Error Handler] to make it easier for end users to spot where the exception occurred. 
* [Spring Web Services] now supports setting/receiving SOAP headers more easily using a header on the Camel [Message].
* Evaluating [Groovy] expressions is faster as we cache the compiled scripts.
* Added {{base64}} option to [Shiro Security] to allow transferring security token over [JMS] and other transports as base64 encoded representation.
* Made it easier to use [Shiro Security] as the credentials can be provided in headers, when sending a message to a secured route.
* [Bindy] now supports enums.
* Added new [BacklogDebugger] to perform live debugging of messages during routing. The [BacklogDebugger] has JMX API allows tooling to control the debugger.
* While using the [Jackson library|http://xircles.codehaus.org/projects/jackson] through the [JSON] Dataformat there's now a {{jsonView}} attribute you could make use of directly inside the [DSL] itself.
* [SMPP] now supports optional parameters in all commands where they are possible.
* [JDBC] now supports named parameters.
* Added timeout support for [Direct] producers to wait for consumer to become active.
* Added {{stats}} action to [ControlBus] to easily get performance statics in a single XML message.
* Added support for request timeout on [Netty] producer, and to configure logging level on [Netty] consumer to be less noisy for ChannelClosedException which can flood the logs when client disconnects abruptly.
* [Spring Batch|SpringBatch] component producer now returns the {{JobExecution}} instance as the output message. Users can use the {{JobExecution}} instance to perform some operations using the Spring Batch API directly.
* Added support for NULL values in [SQL|SQL Component] with named parameters.
* Optimized [Jetty] streaming responses in non-chunked mode; and as well using buffer sizes based on {{HttpServletResponse.getBufferSize()}} instead of fixed size of 4kb.
* Added {{greedy}} option to [scheduled polling consumer|Polling Consumer].
* Added support for accessing the length field on Java arrays in [Simple] language.
* Added support for using JAXB annotations with Camel's Jackson [JSON] component.
* Added the ability for [Bindy] to skip content when parsing fixed-length records.
* [MongoDB] now supports aggregation queries.
* [Netty] allows to use shared Netty boss and worker thread pools.
* The [Camel Maven Archetypes] for component and data format now packages as OSGi bundles out of the box.
* Easier [Stream caching] configuration using {{StreamCachingStrategy}}. Also allows spool directory per [CamelContext] instead of shared per JVM. And insight at runtime using JMX management. As well allowing to plugin 3rd party implementations.
* Improved [Netty] to be able to join an UDP multicast group.
* Using Camel [Spring] is now setting up Camel routes later in the process allow Spring to complete all of its dependency injection, before Camel {{RouteBuilder}} instances is configured. This allows to safely use Spring dependency injection in these {{RouteBuilder}} classes.
* Services in a [CamelContext] which can only be enlisted once (eg it similar to a static in a JVM) has simpler and fixed MBean names in JMX.
* [JDBC based aggregation repository|SQL Component] for the [Aggregate|Aggregator2] EIP now supports optimistic locking, allows clustered Camel applications to use a shared database for the aggregation repository.
* [Recipient List] stores a property ({{Exchange.RECIPIENT_LIST_ENDPOINT}}) on the [Exchange] with the [URIs] of the [Endpoint] the message was sent to.
* Added {{mask}} option to [Camel JMX] to hide sensitive information such as passwords.
* Added {{outputType}} option supporting {{SelectList}}, and {{SelectOne}} to [SQL Component] to dictate the output message body type when doing SQL SELECT queries.
* [Polling Consumer]s such as [File|File2], and [FTP|FTP2] now supports using custom scheduler. Providing a new [Quartz2], and [Spring] based out of the box, that allows to use CRON based scheduler.

h3. Fixed Issues

* Fixed setting .id in Java DSL on some [EIP]s such as the [Validate]
* Fixed [Dead Letter Channel] always handled exception, which wasn't the case if an [Exception Clause] was in use, which didn't had handled=true.
* Fixed [Using PropertyPlaceholder] in attributes defined on {{<camelContext>}}.
* All Camel [Components] will configure their consumers when being created to ensure you can configure from [URIs] with {{consumer.}} as prefix.
* Fixed [QuickfixJEndpoint|Quickfix] to adhere a given InOut MEP correctly.
* Fixed using property placeholders in a [Simple] predicate used inside a when in a [Content Based Router] when using [Java DSL]
* Fixed a race condition in [File|File2] consumer which may lead to a tiny window for another process to pickup a file, as the read lock is committed before the file is moved afterwards etc. Now read locks is executed last.
* [HTTP4] now validates that only one instance of {{org.apache.camel.util.jsse.SSLContextParameters}} is used per component, as multiple is not supported, and could lead to undesired side effects.
* Fixed possible dead-lock during [Graceful Shutdown] if a route starts from [SEDA] and uses [Splitter] or [Multicast] and maximumRedeliveries was enabled as well.
* Fixed [TokenizeXML|Splitter] to support self closing tags.
* Fixed [Blueprint Testing] to work with {{isMockEndpointsAndSkip}} and other similar functionality of the {{CamelBlueprintTestSupport}} class.
* Fixed [Routing Slip] to emit {{ExchangeSentEvents}} also
* Fixed [Quartz] routes with stateful jobs may not trigger if redeployment with changed endpoint uris. 
* Fixed [Recipient List], [Routing Slip], and [Dynamic Router] EIPs to work with [Stream Caching]
* Fixed suspending/resuming Camel [Quartz] routes
* Fixed [SQL Component] using queries with a single parameter and the data is JSON like structure (having comma separators)
* Fixed [Jetty] to be able to use stream cached streams that was spooled to disk, as its reply message when sending back reply to the caller.

h3. New [Enterprise Integration Patterns]

h3. New [Components]

* [{{camel-core}}|DataFormat Component] - A Camel [DataFormat Component] for working with [Data Format]s as if it was a regular [Component] supporting [Endpoint]s and [URIs].
* [{{camel-disruptor}}|Disruptor] - [SEDA] behavior using the ultra-fast [LMAX Disruptor|https://github.com/LMAX-Exchange/disruptor] library.
* [{{camel-geocoder}}|Geocoder] - For looking up geocodes (latitude, longitude) for a given address, or reverse lookup with [Java API for Google Geocoder|https://code.google.com/p/geocoder-java/]
* [{{camel-leveldb}}|LevelDB] - Added docs for this component.
* [{{camel-mustache}}|Mustache] - For templating using [Mustache|http://mustache.github.io/]
* [{{camel-mvel}}|MVEL Component] - For templating using [MVEL|http://mvel.codehaus.org/]
* [{{camel-netty-http}}|Netty HTTP] - HTTP component using [Netty] as transport
* [{{camel-quartz2}}|Quartz2] - For scheduling using the Quartz 2.x scheduler
* [{{camel-sap-netweaver}}|SAP NetWeaver] - For integration with [SAP NetWeaver Gateway|http://scn.sap.com/community/developer-center/netweaver-gateway]
* [{{camel-stomp}}|Stomp] - For communicating with [Stomp|http://stomp.github.io/] compliant message brokers, like [Apache ActiveMQ|http://activemq.apache.org] or [ActiveMQ Apollo|http://activemq.apache.org/apollo/]
* [{{camel-vertx}}|Vertx] - For working with the [Vertx|http://vertx.io/] [EventBus|http://vertx.io/core_manual_js.html#the-event-bus].
* [{{camel-weather}}|Weather] - For polling weather information from [Open Weather Map|http://openweathermap.org] 
* [{{camel-yammer}}|Yammer] - Allows you to interact with the [Yammer|http://yammer.com] enterprise social network
* [{{camel-rabbitmq}}|RabbitMQ] - Allows you to interact with the [RabbitMQ|http://www.rabbitmq.com/].

h3. New DSL

h3. New Annotations

h3. New [Data Formats|Data Format]

h3. New [Languages]

h3. New [Examples]

* [MyBatis Example]
* [Netty HTTP Server Example]

h3. New [Tutorials]

h2. API changes

* The interface {{org.apache.camel.api.management.mbean.ManagedTracerBacklogMBean}} has been renamed to {{org.apache.camel.api.management.mbean.ManagedBacklogTracerMBean}}
* Added {{inMemory}}, and {{length}} methods to {{org.apache.camel.StreamCache}}
* Changed the parameter type {{ProcessorDefinition}} to {{NamedNode}} on method {{getObjectNameForProcessor}} in interface {{org.apache.camel.spi.ManagementNamingStrategy}}
* Added {{removeTypeConverter}} method to {{org.apache.camel.spi.TypeConverterRegistry}}

h2. Known Issues

h2. Dependency Upgrades
* AHC 1.7.11 to 1.7.19
* AWS Java SDK 1.3.27 to 1.5.1
* Beanio from 2.0.5 to 2.0.6
* Bouncy Castle 1.47 to 1.49
* Commons Codec 1.6 to 1.8
* Commons Net 3.1 to 3.3
* Commons Httpclient 4.2.3 to 4.2.5
* Commons Httpcore 4.2.3 to 4.2.4
* CXF 2.7.4 to 2.7.6
* Disruptor 3.1.1 to 3.2.0
* Ehcache 2.5.2 to 2.7.2
* HAPI 2.0 to 2.1
* Groovy 2.1.3 to 2.1.6
* Hawtdispatch 1.13 to 1.17
* Hibernate Validator 4.1.0.Final to 5.0.1.Final
* Hibernate 4.2.3 to 4.2.4
* Jackson 2.1.4 to 2.2.2
* Jersey 1.13 to 1.17.1
* Jettison 1.3.3 to 1.3.4
* JRuby 1.7.2 to 1.7.4
* Krati 0.4.8 to 0.4.9
* Leveldbjni 1.6 to 1.7
* Mail 1.4.5 to 1.4.7
* MongoDB Java Driver 2.9.1 to 2.11.2
* MQTT Client 1.4 to 1.5
* MVEL 2.1.3.Final to 2.1.6.Final
* Netty 3.6.5 to 3.6.6
* OpenEJB 4.5.1 to 4.5.2
* OpenJPA 2.2.1 to 2.2.2
* Saxon 9.4.0.4 to 9.5.0.2
* Scala 2.10.1 to 2.10.2
* Shiro 1.2.1 to 1.2.2
* SNMP4J 2.1.0 to 2.2.2
* Spring 3.1.4.RELEASE to 3.2.4.RELEASE
* Spring Batch 2.1.9.RELEASE to 2.2.1.RELEASE 
* Spring Data Redis 1.0.3.RELEASE to 1.0.4.RELEASE 
* Spring Security 3.1.3.RELEASE to 3.1.4.RELEASE
* Spring Web Services 2.1.2 to 2.1.3
* TestNG 6.8 to 6.8.5
* XStream 1.4.3 to 1.4.4

h2. Internal changes
* The following classes in {{org.apache.camel.processor}} has been removed as they are no longer needed due internal optimization: {{UnitOfWorkProcessor}}, {{ChildUnitOfWorkProcessor}}, {{RouteContextProcessor}}, {{RouteInflightRepositoryProcessor}}, and {{RoutePolicyProcessor}}

h2. Changes that may affect end users
* The [File|File2] and [FTP|FTP2] consumers when using idempotent repository will no longer invoke {{contains}} with a directory name; this has been changed to only be checked for files.
* Shutting down using [Graceful Shutdown] now requires the timeout value to be positive. And improved logic to avoid getting stuck in waiting for inflight messages, and having counter go negative.
* [Tracer] now requires explicitly to be enabled on {{CamelContext}} to be available and in use.
* The class {{org.apache.camel.processor.interceptor.BacklogTracerInterceptor}} has been removed as it was no longer needed due internal optimizations.
* The [Stream Caching] default threshold for spooling to disk has been changed from 64kb to 128kb.
* The unary operators in [Simple] is now only applied on functions
* Using Camel [Spring] is now setting up Camel routes later in the process allow Spring to complete all of its dependency injection, before Camel {{RouteBuilder}} instances is configured. This allows to safely use Spring dependency injection in these {{RouteBuilder}} classes.
* Changing destination using JMX on {{org.apache.camel.api.management.mbean.ManagedSendProcessorMBean}} no longer supported.
* Camel now uses {{xxxxxx}} instead of {{******}} when masking passwords (sanitize) when logging [URIs] in the log. Using {{xxxxx}} is more friendly with JMX naming.
* The {{DefaultProducer}} now delegates to the {{Endpoint}} in the {{isSingleton()}} method call, to use the same value as its endpoint.


h2. Important changes to consider when upgrading
* Spring 3.0.x is no longer supported.
* The usage of the deprecated built-in {{CommonsHttpMessageSender}} has been replaced with {{HttpUrlConnectionMessageSender}} by [Spring Web Services]. Consider this in case either the {{timeout}} or {{sslContextParameters}} option is used through the Producer of this component.
* {{camel-scala-29}} module has been removed.

h2. Getting the Distributions

h3. Binary Distributions

|| Description || Download Link || PGP Signature file of download ||
| Windows Distribution | [apache-camel-2.12.0.zip|http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.12.0/apache-camel-2.12.0.zip] | [apache-camel-2.12.0.zip.asc|http://www.apache.org/dist/camel/apache-camel/2.12.0/apache-camel-2.12.0.zip.asc] |
| Unix/Linux/Cygwin Distribution | [apache-camel-2.12.0.tar.gz|http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.12.0/apache-camel-2.12.0.tar.gz] | [apache-camel-2.12.0.tar.gz.asc|http://www.apache.org/dist/camel/apache-camel/2.12.0/apache-camel-2.12.0.tar.gz.asc] |
{info:title=The above URLs use redirection}
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 [FireFox|http://www.mozilla.com/en-US/firefox/]

{info}

h3. Source Distributions

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

| Source for Unix/Linux/Cygwin | [apache-camel-2.12.0-src.tar.gz|http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.12.0/apache-camel-2.12.0-src.tar.gz] | [apache-camel-2.12.0-src.tar.gz.asc|http://www.apache.org/dist/camel/apache-camel/2.12.0/apache-camel-2.12.0-src.tar.gz.asc] |

h3. Getting the Binaries using Maven 2

To use this release in your maven project, the proper dependency configuration that you should use in your [Maven POM|http://maven.apache.org/guides/introduction/introduction-to-the-pom.html] is:
{code:xml}
<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-core</artifactId>
  <version>2.12.0</version>
</dependency>
{code}

h3. SVN Tag Checkout

{code}
svn co http://svn.apache.org/repos/asf/camel/tags/camel-2.12.0
{code}

h2. Changelog

For a more detailed view of new features and bug fixes, see the:
* [release notes for 2.12.0|http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311211&styleName=Html]