h1. Camel 1.4.0 release

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

{div:style=min-height:200px}
h2. New and Noteworthy
 
Welcome to the 1.4.0 release which approx 250 issues resolved (new features, improvements and bug fixes such as...)

* major improvements in [JMS] and [Mail] components
* major improvements in [Camel JMX] management (enabled by default)
* major improvements in [Transactional Client]. Bypassing [Dead Letter Channel] redelivery, letting the originator system handle this, resulting in the JMSMessage is rolled back to the JMS queue.
* attachment support for [Message]
* various improvements in [CXF], [File], [FTP], [Velocity], [Stream], [Atom] and [XMPP] components
* various improvements in the Java and Spring DSL
* new transaction error handler, see [Transactional Client]
* introduced [ExceptionPolicyStrategy|Dead Letter Channel] as strategy for exception clause selection during error handling (much improved default strategy in Camel)
* intercept() default behavior changed (see section - important changes)
* JMS headers now preserve packagename style headers so [Bean] and [File] headers is preserved, so you can safely send the filename or bean method to invoke over the JMS wire
* introduced [Debugger] and [Tracer] interceptor to track how exchanges is routed
* refinements to run in OSGi containers
* some internal refactorings of package structure to avoid cycle dependencies
* @deprecated some core classes, that will be removed in Camel 2.0
* improved feedback for misconfiguration of camel routes such as mistypes of parameters
* overall improved wiki documentation
* improved javadoc for camel-core and camel-spring
* dependencies is now on the finer grained jars if applicable (e.g. Spring)
* WebSphere 6.1 support

h3. New [Enterprise Integration Patterns]

* None

h3. New [Components]

* [Flatpack] for processing fixed width or delimited files or messages using the FlatPack library (work in progress)
* [SpringIntegration] for integration with Spring Integration

h3. New DSL

* [Scala|Scala DSL] (work in progress, not fully feature complete)

h3. New [Data Formats|Data Format]

* None

h3. New [Languages]

* None

h3. New Examples

* ANT build files for running the examples
* [camel-example-loan-broker|Loan Broker Example]
* [camel-example-spring-jms|tutorial-jmsremoting]

h2. API breakings

Potentially there can be an API breaking when upgrading from Camel 1.3 or older. We are sorry for this and will try to refrain from such API breakings in the future Camel 1.x releases. An API overhaul is scheduled for Camel 2.0. 

h2. Known Issues

* None

h2. Important changes to consider when upgrading
h3. CamelTemplate marked as @deprecated

CamelTemplate has been marked as @deprecated and you should use ProducerTemplate instead.
From Camel 1.4.0 on the ProducerTemplate must be retrieved from the CamelContext. You can then use it the same way as before.
{code}
ProducerTemplate camelTemplate = camelContext.createProducerTemplate();
{code}

h3. [Bean] component minor change
Bean component sets a reference to the bean that is being invoked as a property on the Exchange. This property has change its key from "CamelBean" to "org.apache.camel.bean.BeanHolder" and the type is now a BeanHolder.

h3. Unit test kits
The unit test kits camel-core-tests.jar and camel-spring-tests.jar is no longer distributed with the binary distribution. These jars can be downloaded from maven repositories.

h3. JMX
In Camel 1.4 the [Camel JMX] agent has been enabled by default. To disable it, as the default in previous versions, you have to explicitly disable it. See the [Camel JMX] documentation for details.

h3. Default behavior of intercept() changed
In Camel 1.4 the DSL for intercept() has changed its default behavior to proceed by default.

In Camel 1.3 you had to do this:
{code}
intercept().log("log:orders").proceed();
from("direct:order").to("seda:verifyOrder");
...
{code}

In Camel 1.4 the proceed is default:
{code}
intercept().log("log:orders");
from("direct:order").to("seda:verifyOrder");
...
{code}

And in Camel 1.3 stop was default:
{code}
intercept(header("user").isEqualTo("test")).log("log:test");
from("direct:order").to("seda:verifyOrder");
...
{code}
 
In Camel 1.4 you have to explicit state the stop:
{code}
intercept(header("user").isEqualTo("test")).log("log:test").stop();
from("direct:order").to("seda:verifyOrder");
...
{code}

In the last two examples we want to filter out all orders by a test user. In Camel 1.4 we need to use the {{stop()}} to stop the intercept chain from proceeding.

h4. URI validation
Camel is now more strict when it comes to validation of URI configuration. If a parameter name couldn't be resolved Camel will throw an Exception. In this regard the [File] component you must change the delay parameters to have the {{consumer.}} prefix. {{delay}} should be {{consumer.delay}}.

{div}

h2. Getting the Distributions

h3. Binary Distributions

||Description||Download Link||PGP Signature file of download
|Windows Distribution| [apache-camel-1.4.0.zip|http://www.apache.org/dyn/closer.cgi/activemq/apache-camel/1.4.0/apache-camel-1.4.0.zip]| [apache-camel-1.4.0.zip.asc|http://www.apache.org/dist/activemq/apache-camel/1.4.0/apache-camel-1.4.0.zip.asc]|
|Unix/Linux/Cygwin Distribution| [apache-camel-1.4.0.tar.gz|http://www.apache.org/dyn/closer.cgi/activemq/apache-camel/1.4.0/apache-camel-1.4.0.tar.gz]| [apache-camel-1.4.0.tar.gz.asc|http://www.apache.org/dist/activemq/apache-camel/1.4.0/apache-camel-1.4.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-1.4.0-src.zip|http://www.apache.org/dyn/closer.cgi/activemq/apache-camel/1.4.0/apache-camel-1.4.0-src.zip]| [apache-camel-1.4.0-src.zip.asc|http://www.apache.org/dist/activemq/apache-camel/1.4.0/apache-camel-1.4.0-src.zip.asc]|
|Source for Unix/Linux/Cygwin| [apache-camel-1.4.0-src.tar.gz|http://www.apache.org/dyn/closer.cgi/activemq/apache-camel/1.4.0/apache-camel-1.4.0-src.tar.gz]| [apache-camel-1.4.0-src.tar.gz.asc|http://www.apache.org/dist/activemq/apache-camel/1.4.0/apache-camel-1.4.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>1.4.0</version>
</dependency>
{code}


h3. SVN Tag Checkout

{code}
svn co https://svn.apache.org/repos/asf/activemq/camel/tags/camel-1.4.0
{code}

h2. Changelog
For a more detailed view of new features and bug fixes, see the [release notes|http://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11020&styleName=Html&version=11849]

{jiraissues:url=http://issues.apache.org/activemq/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?&pid=11020&fixfor=11849&sorter/field=issuekey&sorter/order=DESC&tempMax=1000}