Apache Camel Changelog

What's new in Apache Camel 2.18.2

Feb 3, 2017
  • Bug:
  • [CAMEL-10461] - camel-cmis - Parameters not taking in account
  • [CAMEL-10490] - JpaPollingConsumer does not support consumeLockEntity and others
  • [CAMEL-10511] - MllpTcpClientProducer should read all available bytes in TCP buffer for acknowledgment
  • [CAMEL-10539] - When bridging http endpoints and end users do not enable the bridgeEndpoint option they may get a NPE exception
  • [CAMEL-10548] - Converter from List to String is not found when @EnableAutoConfiguration is used
  • [CAMEL-10557] - Salesforce bulk API getBatchRequest uses wrong URL pattern
  • [CAMEL-10562] - UnsupportedOperationException in DefaultCamelContext#safelyStartRouteServices
  • [CAMEL-10568] - SftpChangedExclusiveReadLockStrategy integer overflow
  • [CAMEL-10573] - Align FallbackTypeConverter loading in OSGI environments
  • [CAMEL-10578] - Default namespaces defined on SOAPEnvelope cause problems with CXF PAYLOAD mode
  • [CAMEL-10579] - SOAP 1.1 unmarshalling fails for faults that lack a detail element
  • [CAMEL-10581] - toD (ToDynamicDefinition) does not honor RAW( ) contract - 'removes + from password'
  • [CAMEL-10582] - Spring Message headers are immutable
  • [CAMEL-10594] - Kafka consumer stays alive when camel context is shut down
  • [CAMEL-10597] - Swagger prints child object types as string parameters rather than refs
  • [CAMEL-10602] - camel:run with simple blueprint project failed "waiting for BlueprintContainer" although the route is active
  • [CAMEL-10603] - Realm parameter cause Exception
  • [CAMEL-10616] - shutdown timeout override not working in unit tests
  • [CAMEL-10628] - camel jetty9 endpoint configured with sslContextParametersRef and jetty handlers causes SSL handshake failure
  • [CAMEL-10634] - Camel Catalog contains some invalid entries for Spring-boot in 2.18.x
  • [CAMEL-10635] - camel-mongodb-gridfs - The component should not store state
  • [CAMEL-10640] - Custom AsyncHttpClientConfig not used in WsEndpoint
  • [CAMEL-10644] - Camel-MongoDB: component should not store state
  • [CAMEL-10653] - XQuery support broken in Camel 2.18.x
  • [CAMEL-10663] - Basic authentication information not sent on versions post 2.14.1
  • [CAMEL-10664] - SimpleIllegalSyntaxException in nested expression
  • [CAMEL-10675] - Swagger is not generating schema ref for body parameter
  • [CAMEL-10677] - SJMSBatchConsumer does not respect the consumerCount parameter
  • [CAMEL-10689] - NoFactoryAvailableException when invoking component-list ssh command
  • [CAMEL-10692] - OptaPlanner cannot load config from deployment
  • [CAMEL-10695] - camel-mqtt: TimeoutException thrown on MQTTEndpoint stop
  • [CAMEL-10701] - Classloader issue prevents from loading kafka authentication in OSGi environments
  • [CAMEL-10704] - XSLT will fail if the XML document contains a default namespace
  • [CAMEL-10708] - org.apache.camel.component.cxf.CxfEndpoint -- Lines 554 -558 should be Nullsafe
  • [CAMEL-10709] - camel-etcd: etcd stats endpoint fails because of a class cast exception
  • [CAMEL-10712] - Camel-SFTP endpoints will silently not delete file on disconnect
  • [CAMEL-10713] - SCP not handling errors for failed transfers correctly
  • [CAMEL-10727] - camel-ftp: knownHostsUri configuration with camel 2.18.1
  • [CAMEL-10732] - Remove from all caches when Groovy script is removed from Camel script cache
  • [CAMEL-10771] - CxfEndpoint shows WARNING altough endpoint-/port name is configured
  • Improvement:
  • [CAMEL-10509] - ManagedCamelContextMBean - additional namespaces are removed
  • [CAMEL-10550] - spring-boot: add a global option to disable data-format, language and components auto configuration
  • [CAMEL-10551] - spring-boot: make auto configured dataformats and languages prototype
  • [CAMEL-10552] - spring-boot: make component lazy loading
  • [CAMEL-10567] - Camel-Jackson: Add an option to allow the UnmarshallType header use
  • [CAMEL-10575] - snakeyaml: add an option to filter classes the yaml parser can construct
  • [CAMEL-10577] - Jetty9 producer only supports payloads up hardcoded limit (2MB)
  • [CAMEL-10589] - ServiceNow: add an option to convigure SSL/TLS
  • [CAMEL-10592] - Improve naming and description for sip components
  • [CAMEL-10604] - Camel-JacksonXML: Add an option to allow the UnmarshallType header use
  • [CAMEL-10606] - Modify quartz2 endpoint to be a singleton
  • [CAMEL-10619] - Add spring boot configuration for configuring shutdown options
  • [CAMEL-10661] - camel-hystrix - Fallback should route exchange if it was marked as stop due delay timeout
  • [CAMEL-10662] - camel-hystrix - If hystrix timeout occurs then the hystrix timeout exception should be cause
  • [CAMEL-10667] - Add tarFile data format to Java DSL
  • [CAMEL-10679] - Producer does not populate attachments from response
  • [CAMEL-10680] - Camel catalog - validate endpoint properties - consumer vs producer
  • [CAMEL-10684] - camel-catalog - Simple validator should provide location index of the error
  • [CAMEL-10697] - Infinite loop sometimes happen at the shutdown of the Kafka consumer
  • [CAMEL-10699] - Simple - Add short error message
  • [CAMEL-10700] - camel-maven - validate simple predicates and property placeholders
  • [CAMEL-10729] - Camel-AWS: S3 autocloseBody option
  • New Feature:
  • [CAMEL-10588] - Add HTTP proxy config params to camel-servicenow
  • Task:
  • [CAMEL-10605] - add camel-tar doc as wiki
  • [CAMEL-10623] - Camel CXF version not compatible with WildFly CXF
  • [CAMEL-10637] - IllegalStateException that is not thrown in IgniteMessagingEndpoint
  • [CAMEL-10647] - camel-test-karaf - Cause wrong build order
  • [CAMEL-10673] - Expose activemq-mqtt through parent POM
  • [CAMEL-10723] - Errors in documentation for camel-kinesis

New in Apache Camel 2.17.3 (Sep 17, 2016)

  • Bug:
  • [CAMEL-10038] - BlueprintPropertiesParser breaks propertyPlaceholder fallbackToUnaugmentedProperty behavior
  • [CAMEL-10082] - camel-api-component-maven-plugin doesn't handle inner class names in Javadoc
  • [CAMEL-10087] - camel-kafka does not work in OSGI container
  • [CAMEL-10091] - Camel-Git: Always check if Git instance is null in GitProducer before closing
  • [CAMEL-10094] - Camel-Linkedin: Sometimes LinkedInOAuthRequestFilter in API is using redirectQuery equal to null
  • [CAMEL-10103] - Camel FTP - Unknown parser type
  • [CAMEL-10104] - Mail consumer does not work with quartz scheduler
  • [CAMEL-10110] - Marshaling using CSV will insert escape char in header if using a pipe as separator
  • [CAMEL-10111] - Creating an InputStream from XMLStreamReader fails with ASCII default platform encoding
  • [CAMEL-10116] - NullPointerException in DefaultAsyncProcessorAwaitManager
  • [CAMEL-10117] - Camel-Elasticsearch: Default pathHome option should work on all the platforms
  • [CAMEL-10120] - Creating an InputStream from XMLStreamReader fails without default namespace
  • [CAMEL-10128] - camel-jt400 - Need to call configure consumer
  • [CAMEL-10136] - Missing Group attribute for Tokenize DSL added to the Body Expression
  • [CAMEL-10142] - ScheduledPollingConsumer properties
  • [CAMEL-10143] - Camel Salesforce component field LastActivityDate is typed with java.lang.String, which is not consistent with the Salesforce SOAP type "xsd:date"
  • [CAMEL-10144] - Salesforce keeps breaking backward compatibility by adding fields to older API versions
  • [CAMEL-10145] - Camel-Git: Pull and Push operations require the remote Name and not the remote Path to git repository
  • [CAMEL-10149] - Camel-Ftp: SftpOperations use sendKeepAliveMsg instead of sendIgnore method
  • [CAMEL-10150] - Camel-Apt: Check for empty lines in parseAsMap method of EndpointAnnotationProcessor
  • [CAMEL-10151] - camel-sql - Query parameter count mismatch when using IN and other names in SQL
  • [CAMEL-10153] - [Camel-cxf] the spring version range in the Import-Package should be [3.2,4)
  • [CAMEL-10155] - Reslet headers not getting filtered
  • [CAMEL-10157] - Values in KafkaConstants don't fit their variable name
  • [CAMEL-10174] - weaveByToString throws UnsupportedOperationException on CBR
  • [CAMEL-10176] - camel-cxf RawMessageContentRedirectInterceptor should be able to handle the case that OutputStream is null for an outgoing message
  • [CAMEL-10177] - Camel-catalog: wireTap is missing from all oneOf lists
  • [CAMEL-10181] - Camel-undertow: UndertowHttpBinding should be initialized in the endpoint and not at component level
  • [CAMEL-10200] - Mail consumer sets wrong Content-Type header for mails with attachment
  • [CAMEL-10215] - EventDrivenPollingConsumer is not thread safe when used with ConsumerCache
  • [CAMEL-10221] - Camel-Jcache: writeThrough option is never used
  • Improvement:
  • [CAMEL-10085] - UnsafeUriCharactersEncoder.checkRAW compiles regex pattern every call
  • [CAMEL-10095] - bug in "remove whitespace noise from uri"
  • [CAMEL-10096] - Camel tracer with stream caching should tracer after stream cache has been setup
  • [CAMEL-10121] - ResponseHandler in Mina2Producer should not log errors
  • [CAMEL-10125] - WARN on startup: "No Server set for org.apache.camel.component.jetty.JettyHttpComponent$1@3d484181"
  • [CAMEL-10180] - weaveByToUri - To make it easier to match sending to uris
  • [CAMEL-10218] - Camel-salesforce-maven-plugin error if version is specified as 37.0
  • Task:
  • [CAMEL-10163] - camel-twitter - Component docs - Some options are labelled wrong
  • [CAMEL-10214] - File Component: doneFileName option of Consumer missing from generated documentation
  • Test:
  • [CAMEL-10198] - JGroupsClusterTest and JGroupsComponentTest fail on some platforms

New in Apache Camel 2.16.2 (Feb 23, 2016)

  • Bug:
  • [CAMEL-8708] - SOAP unmarshalling shouldn't fail for Faults that lack an optional Detail element
  • [CAMEL-9106] - URI option mapMailMessage doesn't obey peek=true option
  • [CAMEL-9202] - Flatpack: Body reader never closed
  • [CAMEL-9246] - camel-cxf proxy with MTOM does not get attachment back when RPC/literal style WSDL used
  • [CAMEL-9270] - rest-dsl - CORS support doesn't work with Restlet 2.3
  • [CAMEL-9277] - FTP shutdown whole context on startup if throwExceptionOnConnectFailed true
  • [CAMEL-9281] - Http4 component removes trailing slashes from http requests (producer)
  • [CAMEL-9282] - IndexOutOfBoundsException if SoapAction parameter is empty
  • [CAMEL-9313] - CamelBlueprintTestSupport - can't initialize ConfigAdmin configurations
  • [CAMEL-9316] - LevelDBAggregationRepository is logging warnings when exchange is already complete on first aggregation
  • [CAMEL-9318] - org.apache.camel.component.twitter.TwitterEndpointEvent cannot be cast to org.apache.camel.component.direct.DirectEndpoint
  • [CAMEL-9319] - SshClient resource leak when used from ProducerTemplate
  • [CAMEL-9331] - Thread leak in Http4Endpoint, doStop() does not close() the httpClient
  • [CAMEL-9340] - FileIdempotentRepository fails to create fileStore when no path is specified
  • [CAMEL-9348] - Endpoints for the same websocket with different parameters cannot send message to websocket client
  • [CAMEL-9362] - Camel CDI component should not require the PAX CDI Camel capability
  • [CAMEL-9366] - CXFRS "skipFaultLogging" attribute doesn't work in Spring
  • [CAMEL-9368] - Netty4 producer hangs when connection is prematurely closed
  • [CAMEL-9375] - camel-tarfile - TarSplitter includes one extra empty entry at the end
  • [CAMEL-9384] - Host HTTP header should contain a port number if it differs form 80
  • [CAMEL-9386] - Camel-git: Support credentials in clone operation
  • [CAMEL-9405] - Amazon SQS message deletion behaviour change on exception
  • [CAMEL-9417] - SOAP 1.2 Fault processing should use value of Reasontext to build exception message
  • [CAMEL-9423] - dependency on restlet in camel-rx module does have default scope
  • [CAMEL-9424] - CronScheduledRoutePolicy regression introduced with 2.16, setting both start and stop route times fails with duplicate trigger
  • [CAMEL-9426] - spring-boot with rest-dsl with api-doc registers multiple instances with multiple RouteBuilders
  • [CAMEL-9439] - Cannot use camel-geocoder in Karaf
  • [CAMEL-9442] - Query string gets decoded when bridging from netty-http to http4
  • [CAMEL-9468] - Bindy fails to marshal objects in Spring Boot
  • [CAMEL-9480] - IdempotentConsumer - If exception from repo it should be able to handle by onException
  • [CAMEL-9489] - rest-dsl with api-doc should allow multiple rest's with cdi
  • [CAMEL-9491] - statement.maxRows not working as expected camel jdbc
  • [CAMEL-9503] - OnCompletion - restores the rollback only last in the wrong key
  • [CAMEL-9505] - RabbitMQConsumer don't use Camel ExceptionHandler BEFORE requeing message
  • [CAMEL-9509] - camel-cometd is not working with camel 2.15.2
  • [CAMEL-9519] - POM from camel-archetype-blueprint generated project caused CamelBlueprintTestSupport failure
  • [CAMEL-9526] - Blueprint depends-on can no longer contain multiple bean ids
  • [CAMEL-9528] - Camel loadbalancing example is broken
  • [CAMEL-9533] - Specifying a responseModel in RestOperationResponseMsgDefinition not output in Swagger API
  • [CAMEL-9543] - Discovering new type converters in OSGi wipes out those manually added
  • [CAMEL-9592] - Documentation on SQS ConcurrentConsumers Missing that you need to set maxMessagerPerPoll
  • [CAMEL-9634] - Xtokenize with streaming() does not close stream
  • Improvement:
  • [CAMEL-9326] - JndiRegistry should default to use CamelInitialContextFactory if no env factory specified
  • [CAMEL-9335] - camel-netty-http - Suppress Connection reset by peer WARNs
  • [CAMEL-9342] - Metrics component should log at debug level
  • [CAMEL-9346] - camel-sql - Add transacted option
  • [CAMEL-9359] - DefaultExchangeHolder.marshal() logs NULL header values to WARN
  • [CAMEL-9369] - Acknowledge messages for RabbitMQ InOut exchange when transferring exception
  • [CAMEL-9382] - netty4-http - Hostname should allow without double slash
  • [CAMEL-9409] - wiretap - Allow to use endpoint injected instance
  • [CAMEL-9410] - camel-netty-http - should default to port 80 and 443
  • [CAMEL-9427] - camel-jetty - Should also support rest-dsl with api-doc
  • [CAMEL-9434] - camel-catalog - Add did you mean functionality
  • [CAMEL-9436] - camel-catalog - Make it easy to include extra components
  • [CAMEL-9437] - Fix checkstyle indentation violation for generated API test cases
  • [CAMEL-9446] - camel-swagger-java - Support allowedValues in model generated
  • [CAMEL-9447] - camel-swagger-java - Add type for response model
  • [CAMEL-9451] - Rabbitmq consumer should be able to suspend/resume
  • [CAMEL-9455] - Enhance Google Calendar service account with user impersonation support
  • [CAMEL-9457] - Camel Main - Stop from JMX should trigger stop of the Main/JVM
  • [CAMEL-9469] - Properties component - Should include component docs
  • [CAMEL-9470] - Add consumer option to component docs
  • [CAMEL-9472] - Add multi value to component docs
  • [CAMEL-9475] - Simple - Calling method should favor best matching type
  • [CAMEL-9486] - Camel component docs - Add support for username password configured in userinfo part of uri
  • [CAMEL-9492] - camel-netty-http - The http/https protocol should be mandatory
  • [CAMEL-9500] - CamelVersionHelper cannot handle version qualifier
  • [CAMEL-9504] - OnCompletion - Keep caught exception so it can access the exception
  • [CAMEL-9508] - camel-sjms to support jms 2.0 in osgi manifest
  • [CAMEL-9518] - Swagger may see non-camel MBeans
  • [CAMEL-9537] - Specifying allowableValues in RestOperationParamDefinition is not output as an enum in swagger output
  • [CAMEL-9568] - Upgrade camel-http to use httpclient 4.4
  • Task:
  • [CAMEL-9402] - Upgrade Spring Dependency to 4.1.9.RELEASE or later
  • [CAMEL-9415] - Component docs - enum options that are optional should include a none enum
  • [CAMEL-9510] - In Netty4 HTTP Component there is a bug in maxHeaderSize option documentation
  • [CAMEL-9514] - camel-netty4 maximumPoolSize option is ignored

New in Apache Camel 2.16.1 (Dec 21, 2015)

  • Bug:
  • [CAMEL-8302] - Rabbitmq shouldn't require/bind queue if not specified
  • [CAMEL-8431] - Consume all files in aws S3 bucket where deleteAfterRead = false
  • [CAMEL-9101] - RabbitMQ specific message properties are forwarded as message headers
  • [CAMEL-9144] - Regression with camel-jackson 2.15.3
  • [CAMEL-9161] - Camel spring-boot not finding routes when using spring-cloud
  • [CAMEL-9171] - camel-xmpp processes no messages when running in Karaf
  • [CAMEL-9191] - camel-example-spring-jms ServerRoutes contains invalid URI parameter methodName
  • [CAMEL-9195] - Memory leak in UndertowProducer
  • [CAMEL-9196] - CLONE - DefaultShutdownStrategy shutdown timeout of 0 will never timeout and go in negative time
  • [CAMEL-9199] - RabbitMQ Consumer threads crash when sending partially serializable objects
  • [CAMEL-9205] - REST endpoint with CORS sends invalid header value for Access-Control-Allow-Origin
  • [CAMEL-9208] - camel-netty4-http does not resolve nettyHttpBinding option
  • [CAMEL-9215] - Missing .handled(true) in Camel 2.16.0 when using wiretap and newExchangeBody
  • [CAMEL-9216] - Camel-AMQP page gives recipe that doesn't work
  • [CAMEL-9217] - URI validation verifies usage of & char incorrectly
  • [CAMEL-9220] - swagger - Model schema not including nested objects
  • [CAMEL-9223] - IllegalArgumentException when reverting fields using property placeholders
  • [CAMEL-9227] - No type converter available to convert from Bean to List
  • [CAMEL-9230] - CXFRS NPE when response code not in Response.Status
  • [CAMEL-9231] - camel-example-spring-ws - Does not work
  • [CAMEL-9233] - ZipFileDataFormat doesn't take exchange's charset into account
  • [CAMEL-9235] - No type converter available when destination is super type
  • [CAMEL-9236] - Tokenize with regex grouping has a small bug
  • [CAMEL-9238] - NPE while GenericFile.changeFileName
  • [CAMEL-9243] - Invocation of Bean fails when Bean extends and abstract which implements the actual method
  • [CAMEL-9245] - camel-paho - Endpoint should allow a flexible naming.
  • [CAMEL-9247] - rest-dsl with api-doc should allow multiple rest's
  • [CAMEL-9248] - Exception is thrown when receiving a message where JMSDestination is null
  • [CAMEL-9255] - documentType not used for XPath predicates in XML DSL
  • [CAMEL-9257] - route stop/start doesn't work for camel-websocket producer
  • [CAMEL-9259] - enableTrace of the Main class doesn't work
  • [CAMEL-9269] - NotifyBuilder.fromRoute() does not work for some endpoint types
  • [CAMEL-9272] - openweathermap.org requires an APPID id since 09/10/2015
  • [CAMEL-9276] - Netty4 component allows multiple consumers to bind to the same {host}:{port}
  • [CAMEL-9279] - IndexRequests do not support parent-child relationships
  • [CAMEL-9284] - warning in logs when using propertyplaceholder with prop
  • [CAMEL-9287] - netty4-http - Use port 80 if no port number configured
  • [CAMEL-9290] - netty4 consumer in clientMode only reconnects once
  • [CAMEL-9311] - Concurrency issue with the dynamic router
  • [CAMEL-9320] - Cannot set XStream permissions on a per CamelContext basis
  • [CAMEL-9321] - Blueprint example and archetype does not work when executed with camel:run
  • [CAMEL-9383] - ConcurrentModificationException on running Camel via Main class
  • Improvement:
  • [CAMEL-9158] - camel-univocity-parsers should initize in doStart and not use reset flag
  • [CAMEL-9175] - Simple random function - Should trim the min/max values
  • [CAMEL-9178] - Apache Camel is not able to read map-id in Dozer mapping xml but does not throw any error
  • [CAMEL-9192] - camel-elsql - Allow using simple language as named parameters
  • [CAMEL-9193] - Aggregator in preCompletion mode should also timeout if the new group does not receive further messages
  • [CAMEL-9194] - camel-elasticsearch search request only supports map object
  • [CAMEL-9203] - camel-amqp should provide qpid dependencies
  • [CAMEL-9204] - Provide AMQP component factory method for AMQP 1.0
  • [CAMEL-9213] - CamelContext - explainEndpointJson should not include component properties
  • [CAMEL-9251] - rest-dsl - Allow to configure api-doc route id
  • [CAMEL-9256] - Paho file persistence store should be configurable
  • [CAMEL-9263] - camel-servlet - Allow to configure the context path without leading slash
  • [CAMEL-9264] - AWS Java SDK version
  • [CAMEL-9286] - Log component - Include log formatter options in docs
  • [CAMEL-9297] - Expose more configuration options from Camel's XStream component
  • [CAMEL-9298] - camel-netty4 - Connection timeout is already done by netty itself
  • [CAMEL-9303] - PropertiesComponent - Allow service host and port to be specified individually
  • [CAMEL-9309] - camel-jetty - Make it easier to turn on|off java transport over http
  • [CAMEL-9317] - camel-salesforce's XStream to use a system property to configure its setting
  • Task:
  • [CAMEL-9132] - Upgrade Kafka to 0.8.2.2
  • [CAMEL-9265] - Use servicemix-specs version of jsr311-api
  • [CAMEL-9300] - DeltaSpike container control dependency in Camel CDI should be optional
  • [CAMEL-9302] - Add camel-jolt to features
  • Test:
  • [CAMEL-9072] - camel-test-blueprint - Custom converter test fails

New in Apache Camel 2.16.0 (Oct 30, 2015)

  • The route models (definition classes) preserve property placeholders, which allows round trip editing, and also prevents showing potential sensitive information
  • Added onPrepareFailure option to Dead Letter Channel to allow a custom processor to prepare the Exchange before sending to the dead letter queue.
  • MongoDB tailable consumers now allow setting the readPreference option.
  • Using setFaultBody / setFaultHeader behaves similar to setBody / setHeader to preserve existing headers/attachments by setting on existing IN or OUT message.
  • Java DSL using choice with end vs endChoice now validates you use them as intended. Any misconfiguration now throws an exception explaining the problem.
  • POJO Producing and POJO Consuming lifecycle is now in sync with CamelContext which ensures it works as similar to Camel Routes does. Also the created producer/consumer is stopped when CamelContext is stopping to cleanup properly.
  • JMS component now allows configuring concurrentConsumers/maxConcurrentConsumers separately between from(jms) vs to(jms) using request/reply over JMS
  • Added SEARCH operation to Elasticsearch component
  • The Properties 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)
  • Added receviveBufferSize option to the FTP component to make download faster. The size is by default 32kb buffer.
  • The Aggregator2 EIP now allows an external source using a AggregateController 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.
  • The Aggregator2 now enlists in JMX using a ManagedAggregateProcessorMBean which has more information, and also allows using the aggregate controller to control it.
  • The Aggregator2 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.
  • The Aggregator2 now supports pre-completion mode if the aggregation strategy implements PreCompletionAwareAggregationStrategy. 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.
  • Added options to Mail 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.
  • The runtime route processors and their corresponding model definition are now linked by their id using HasId, so its easier to obtain the processor or model definition from the getProcessor(id) and getProcessorDefintion(id) api on CamelContext.
  • 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.
  • Spring Boot applications now block the main thread of the execution
  • Spring Boot automagically loads XML routes definitions from classpath
  • Added MainListener to make it easier for Camel Boot / Standalone Camel to implement custom logic to trigger during the starting and stopping of the application.
  • Camel Jackson now provides Map to Object converter
  • Ability to refer to existing hazelcast instance by id, using Hazelcast Component
  • Direct and Direct-VM now supports the failIfNoConsumers option
  • Making it easier to add custom Type Converter to your Camel applications without having to use the META-INF file. In Spring or Blueprint just add them as s. See more details at Type Converter documentation.
  • camel-cxf PAYLOAD supports stream cache out of box.
  • BridgePropertyPlaceholderConfigurer supports to handle the jasypt encryption inside and outside of the camelContext.
  • The camel-aws component now support Amazon DynamoDB version 2
  • The Wire Tap eip now also emits event notifications when sending the Exchange to the wire tap destination
  • Camel Test 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.
  • Now Camel Netty component doesn't intercept consumers with httpMethodRestrict=OPTIONS
  • Now Netty HTTP resolves OPTIONS prefix matches earlier
  • Using Load Balancer with Java DSL now builds the route model using the specific model types, which renders a more accurate route model
  • Enhanced the PredicateBuilder to support vargs and list in the "or" builder method
  • Using custom HttpBinding with HTTP and HTTP4 is now easier as they can be instantiated using a default no-arg constructor
  • Added readLock=idempotent to the File2 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 Hazelcast Component or Infinispan - or using the JDBC for a shared database table.
  • Camel RX now ensures that observe and subscribe are done within an unit of work to ensure on completions is executed, such as they are done when you use regular Camel routes.
  • The JMS component now includes the underlying javax.jms.Session 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.
  • Added completionEager option to Idempotent Consumer to whether to complete the idempotent consumer eager or when the exchange is done.
  • Working with the Camel source code in Eclipse with m2eclipse plugin improved to avoid endless file changed detection and recompile the source.
  • Add option suppressExceptions to JSonPath which allows to ignore exceptions such as NoSuchPathException when the json payload does not contain the path defined in the json expression.
  • Spring Boot now creates CamelContext, ProducerTemplate and ConsumerTemplate beans only if those are not defined by the user.
  • New camel-archetype-spring-boot to create a new Camel Spring Boot project using Maven.
  • New camel-archetype-cdi to create a new Camel CDI project using Maven.
  • FTP2 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.
  • Swagger 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
  • FTP2 supports autoCreate=true for ftp consumers
  • Rest DSL now supports to define parameter using fine grained details for the Swagger api documentation. For an example see the camel-example-servlet-rest-tomcat in the Apache Camel distribution.
  • The Simple language now has a equals ignore case operator (=~) when comparing with string values
  • If using 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
  • includeNonSingletons
  • The IdempotentRepository now supports clear operation, to clear the repository, and expose it over JMX.
  • Netty4 in clientMode will now automatic re-connect if the connection was disconnected to the server.
  • The throwException 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.
  • When using Expression or Predicate in the routes, you can refer to the value as an external resource by using resource:classpath:path or resource:file:path - for example resource:classpath:com/foo/myscript.groovy.
  • Added option useMessageBodyForSql to the SQL Component which allows to use more dynamic SQL queries instead of the fixed SQL defined in the endpoint uri.
  • Added sticky option to failover Load Balancer so the load balancer can start from the last known good endpoint.
  • Added option shareUnitOfWork to Content Enricher eip
  • Content Enricher with enrich and pollEnrich now supports dynamic endpoint uris computed using an Expression that allows to use values from the current Exchange so you for example can poll a file which name is computed from data from the Exchange etc. This change breaks the XML DSL a little bit and there is an easy migration effort. The Java DSL stays backwards compatible.
  • The Camel Karaf commands about routes now no longer require the context-id as 2nd parameter that is optional - if none provided then the command is a bulk operation for all Camel contexts.
  • A simpler version of dynamic to with the new and toD in the DSL, documented at Message Endpoint
  • Wire Tap now supports dynamic endpoint uris, in similar way the new and toD does
  • Rest DSL now supports the new and toD in the rest-dsl.
  • The EIP's now have more specialized processor mbeans in Camel JMX and you can also dump the processor as xml source to represent how it would appear in xml dsl
  • Configuring Camel JMX using JVM system properties now all take precedence over any existing configuration (some option was not doing that)
  • Introduced Extended JMX statistics level to gather additional metrics during runtime.
  • All the Camel-AWS components now support the definition (through URI options) of Proxy Host and Proxy Port.
  • The HTTP based consumers no longer include Camel headers in the responses by default (they already did this for the producers to not include Camel headers when calling a HTTP service).
  • Bindy now supports having multiple pojos as models in the same java package. Instead of configuring using package names, you configure using class names.
  • You can configure on the Type Converter registry what should happen if a duplicate type converter is being added (override, ignore or fail) as well configure the logging level.
  • Using CamelProxy now binds the method parameters to the message body/header using Camel annotations to define the binding rules. If no annotations is defined the the parameter is assumed the message body. You can turn this off to have the old behavior.
  • Camel JMX using custom JMX operations/attributes with @ManagedResource now also includes the default set of JMX from Camel, so you have both worlds.
  • Added completeAllOnStop option to Aggregator2 to allow to complete all pending exchanges from the aggregation repository when stopping. For example when using a memory based repository to ensure all of those exchanges are processed when stopping.
  • Allow to configure the OK status code ranges for HTTP, HTTP4, Netty HTTP, Netty4 HTTP, and Jetty components for their producers. The default range is 200-299.
  • Now Vert.x endpoints support multiple consumers.
  • Support for TAR files: marshalling and unmarshalling via a data format; splitting; aggregating. See Data Formats section below.
  • SJMS component has been aligned to bind between Camel Message and JMS Message in the same way as JMS component does that.
  • Added failsafe check to ensure JMS consumer will no longer send back a reply message to the same destination as itself to avoid endless loop. There is an option to turn this off in case you know what you are doing.
  • The Camel-hazelcast component now supports the Ringbuffer data structure.
  • New XSLT Aggregation Strategy to merge two messages with an XSLT file. See javadoc (link valid once this release is published). It is also accessible from the toolbox: AggregationStrategies.xslt().
  • A pure Java based Swagger component that also supports any JVM (standalone, war, jee, spring boot, et all) as the platform for API of the Camel Rest DSL. (previously a servlet was required).
  • Data Format's is now also enlisted in JMX under the dataformats group (requires the data format implementation is a Camel Service)
  • Configuring context-path in Rest DSL will now use the context-path when creating the http server (except for servlet as servlet urls are relative)
  • OptaPlanner compoent extended to support async solving, daemon mode and ProblemFactChange processing
  • Fixed the following issues:
  • File language now properly supports file extensions having double dots, such as .tar.gz
  • Fixed issue with doTry not stopping routing if a fault message was set using setFaultBody within the doTry.
  • Fixed Bean language to support end parenthesis in quoted string literals as part of method parameters, and not as end of method signature.
  • Fixed FTP2 using pollEnrich with disconnect=true and delete=true, would disconnect before deleting the file. Now we disconnect last.
  • Various EIPs such as Splitter, Recipient List, Multicast no longer reuse message id in their sub messages, but each sub message has its own unique message id (just as the exchange has).
  • Fixed an issue with the circuit breaker Load Balancer not honoring the half open after period after an error was detected.
  • Fixed FTP2 now calling disconnect if there was no messages to poll, even when disconnect=true configured.
  • Fixed Throttler using method call expression in XML DSL was not working
  • 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.
  • Fixed using a Load Balancer from a context scoped onException may double up its processors participating in the balancer per route in the context.
  • Fixed parallelAggregate on multicast/splitter/recipient list to use a thread pool for running concurrently.
  • Fixed Stream caching to not delete data that was spooled to disk before both exchanges are done routing.
  • Fixed DefaultErrorHandler to use 1 sec redelivery delay out of the box as the other error handlers does.
  • Fixed setting logExhaustedMessageHistory=true on Dead Letter Channel to log the message history. This option is by default false on DLC as it would be as before (not noisy).
  • Fixed double refresh of the parent Spring Boot Application Context
  • Fixed configuring endpoint uri's with primitive types when the value is looked up in the registry using #notation would not work.
  • Fixed using transacted in the Scala DSL
  • camel-swagger now filters out older Camel releases that do not support rest-dsl when it discovers Camel's in the JVM
  • Fixed Mail consumer to use the default value of 60 seconds as poll interval again, instead of 0.5 sec.
  • Fixed Netty and Netty4 may perform x2 redelivery when attempting to redeliver to a netty producer endpoint
  • Fixed Recipient List would not work if using RAW() syntax in endpoint uri
  • Fixed Camel Commands to not show correct route status for suspended routes in the routes-list command.
  • Fixed using HTTP and Exchange.HTTP_QUERY or Exchange.HTTP_URI may double encode the value.
  • Fixed starting a route from a file endpoint, and then do a pollEnrich from another file endpoint, and both using the same readLock=marker, would only delete one of the marker files when done.
  • Fixed JGroups managed routes starting too early.
  • Fixed HTTP4, HTTP, Netty4 HTTP, Netty HTTP producers forming URLs badly when using Exchange.HTTP_PATH and query parameters inside the endpoint URI.
  • Fixed MQTT receiving duplicates in some cases when the connection to the broker was lost.
  • Fixed Routing Slip and Dynamic Router to not evaluate expression again during each redelivery attempt from Error Handler if routing caused an exception.
  • Fixed a JMX leak where FTP producers was not unregistered from JMX when their routes are removed.
  • Fixed suspend/resume SEDA routes may in rare cases not poll new messages from the seda queue when resumed.

New in Apache Camel 2.15.3 (Aug 20, 2015)

  • Sub-task:
  • [CAMEL-8906] - Application hangs when Spring Boot Actuator shutdown hook is used
  • Bug:
  • [CAMEL-7500] - Concurrent modification of exchange during retry after netty TCP failure leads to futher processing of failed messages
  • [CAMEL-7678] - Update camel-rabbitmq URI for consumers
  • [CAMEL-8270] - camel-rabbitmq: exchangeName in URI must be optional, i.e. default "" exchange
  • [CAMEL-8460] - camel-spring-boot - Routes restart during startup
  • [CAMEL-8639] - Camel FTP component cannot recover after network failure
  • [CAMEL-8643] - Http Post from a streaming client sometimes fails to parse
  • [CAMEL-8646] - Camel doesn't allow intercept and advice on the same route
  • [CAMEL-8667] - java.lang.NullPointerException CamelSpringTestContextLoader.java:174
  • [CAMEL-8689] - camel-dozer: Multiple contexts / bundles - Does not use the correct classloader
  • [CAMEL-8715] - camel-sql - Should close ResultSet
  • [CAMEL-8718] - Connection leak with ftp consumer and invalid credentials
  • [CAMEL-8745] - Swagger requires context name with quotes
  • [CAMEL-8746] - Jasypt with BridgePropertyPlaceholderConfigurer is not handling spring property injection with defaults anymore
  • [CAMEL-8747] - camel-rx - Should leverage UoW when subscribe or observe
  • [CAMEL-8756] - KafkaConsumer doesn't stop consuming when suspended, preventing graceful route shutdown
  • [CAMEL-8757] - SO_TIMEOUT not really set on SFTP connections
  • [CAMEL-8758] - NPE for CacheComponent
  • [CAMEL-8764] - Camel-Spring-Redis: Jedis bundle require commons-pool2
  • [CAMEL-8765] - JpaConsumer - May poll too soon before JPA stuff is initialized
  • [CAMEL-8768] - hdfs2 component overwrite option is also being applied to directory filesystem path
  • [CAMEL-8770] - Camel Blueprint - depends-on does not work
  • [CAMEL-8771] - Add MaxChannelMemorySize and MaxTotalMemorySize for OrderedMemoryAwareThreadPoolExecutor
  • [CAMEL-8774] - DefaultJettyHttpBinding preserves CONTEXT_ENCODING from the request even HTTP response doesn't contain the header
  • [CAMEL-8780] - Camel exec component have trouble to load arguments list from message header
  • [CAMEL-8782] - Configuring endpoints using reference lookup may fail with matching primitive types with their Object counterpart types
  • [CAMEL-8783] - Transacted not working correctly in scala
  • [CAMEL-8784] - Policy, Validate, Wiretap Scala DSL don't work out of box
  • [CAMEL-8785] - StackOverFlowError using Custom InterceptStrategy
  • [CAMEL-8796] - camel-schematron - Provide the class loader of this component to work in OSGi environments
  • [CAMEL-8798] - weaveAddLast throwing UnsupportedOperation when route have a ChoiceDefinition
  • [CAMEL-8803] - Conflicting classes in camel-jetty9 Maven artifact dependencies
  • [CAMEL-8805] - NullPointerException on RestletComponent.disconnect
  • [CAMEL-8810] - Camel CXF may propagate wrong Content-Length headers
  • [CAMEL-8812] - Memory leak in HL7MLLPNettyDecoder
  • [CAMEL-8816] - Elasticsearch component fails in an OSGi environment due to missing names.txt
  • [CAMEL-8841] - camel:context-inflight returns 'Object name cannot be null'
  • [CAMEL-8871] - null body after exception from transform method
  • [CAMEL-8874] - camel-blueprint-archetypes should have test dependency of camel-test-blueprint
  • [CAMEL-8885] - ConsumeLockEntity without ConsumeDelete
  • [CAMEL-8887] - Exceptions on routes SFTP and SEDA or DISRUPTOR (probably others)
  • [CAMEL-8900] - Javadoc parser in API Component Framework misses first method with void return type in JDK7
  • [CAMEL-8901] - NBSP characters in camel-kafka:KafkaConfiguration parameter
  • [CAMEL-8902] - Camel Facebook - Endpoint URI must contain a parameter
  • [CAMEL-8908] - Kafka: Adapter causes Camel NotifyBuilder to throw a NullPointer exception
  • [CAMEL-8914] - Unable to shutdown endpoint when intercepted with interceptSendToEndpoint
  • [CAMEL-8927] - camel-ahc-ws - Do not swallow exception when connecting
  • [CAMEL-8933] - mail consumer (imap) polls continuously (not using the default polling interval)
  • [CAMEL-8945] - Loop - Should break out looping if exception happened during routing
  • [CAMEL-8949] - Netty 3 component spins on receiving TCP RST
  • [CAMEL-8950] - Injected Quartz2 scheduler doesn't have access to CamelContext in jobs
  • [CAMEL-8951] - RecipientList with RAW parameter do not work
  • [CAMEL-8954] - Lock information is not handovered together with Exchange on-completion synchronizations
  • [CAMEL-8957] - adviceWith() doesn't work with loadBalance().failover()
  • [CAMEL-8963] - camel:route-suspend karaf command doesn't work as expected
  • [CAMEL-8964] - CamelContext - API for control routes may cause Route not to update it state
  • [CAMEL-8967] - Karaf Camel command for route profile has karaf rbac problem
  • [CAMEL-8988] - Can't manually trigger quartz2 jobs
  • [CAMEL-8989] - SJMS drops messages with null body even if allowNullBody is true
  • [CAMEL-9005] - Yammer - Endpoint "received" does not work
  • [CAMEL-9012] - Olingo2's batch process generates the invalid request
  • [CAMEL-9013] - Camel HTTP no longer supporting chunked transfer encoding with Tomcat
  • [CAMEL-9017] - Camel-Hazelcast: HazelcastAggregationRepository::confirm should check useRecovery before using persistedCache
  • [CAMEL-9019] - ManagedRuntimeEndpointRegistry was not enlisted in JMX
  • [CAMEL-9029] - JGroups managed routes can be started too early
  • [CAMEL-9031] - Dependency missing in camel-kafka feature
  • [CAMEL-9032] - Bean component - Should filter out abstract methods
  • [CAMEL-9035] - unbind smpp connection bug
  • [CAMEL-9037] - DefaultJmsMessageListenerContainer leaks threads
  • [CAMEL-9043] - Fix camel-example-cxf-osgi/blueprint examples
  • [CAMEL-9048] - camel-core causes restart of karaf console if it is refreshed
  • [CAMEL-9049] - Websocket Component not shutting down embedded jetty server on component shutdown
  • Improvement:
  • [CAMEL-7501] - Only one ZooKeeperRoutePolicy possible
  • [CAMEL-7985] - camel-test-blueprint - Upgrading to newer felix fails with NPE in fileinstall
  • [CAMEL-8397] - Support Salesforce Analytics
  • [CAMEL-8598] - Set default timeouts on workflows registered by the camel-aws / aws-swf component
  • [CAMEL-8616] - Update Twitter4j to latest version
  • [CAMEL-8640] - BacklogTracer allocates 100k elements for an array even it is not enabled
  • [CAMEL-8653] - camel-kafka need to commit the last batch offset when shutdown the consumer
  • [CAMEL-8725] - explainEndpointJson should order the options according to the given order from the endpoint
  • [CAMEL-8734] - camel-netty-http - Should ignore case of context-path
  • [CAMEL-8790] - Kafka producer hard coded to use Strings
  • [CAMEL-8800] - Upgrade kafka to 0.8.2.1
  • [CAMEL-8811] - No data coding headers in deliverSM
  • [CAMEL-8821] - Support to disable the stream caching in camel-servlet from the camel context
  • [CAMEL-8836] - Remove the joda-time bundle camel-elasticsearch
  • [CAMEL-8845] - Property placeholder - service lookup should use underscore instead of dash
  • [CAMEL-8857] - Camel SCR should create OSGi service for CamelContext
  • [CAMEL-8948] - CamelBlueprintTestSupport tests have issues with namespace handlers
  • [CAMEL-8976] - netty-http - Allow to configure max size of headers
  • [CAMEL-8994] - Large memory use on Large core count(512) servers
  • [CAMEL-8995] - camel-restlet - Should defer UoW done until after writing response
  • [CAMEL-9003] - Allow multiple producers with differing request timeouts
  • [CAMEL-9010] - camel-stream - When using scanStream it should be able to deal if the file is deleted or not present
  • [CAMEL-9039] - Feature camel-core contains bundles, which should be made optional for micro-services deployment
  • [CAMEL-9054] - sftp - Reduce logging noise from JSCH
  • [CAMEL-9055] - camel-aws - SQS should not allow handover the delete task
  • [CAMEL-9064] - File language - Add functions to get extension in single mode
  • [CAMEL-9068] - Log output to show which route is shutdown and has a pending message
  • [CAMEL-9086] - Add support for relative path requests in netty http
  • [CAMEL-9091] - CXF Transport should convert response Date headers to HTTP-friendly format
  • New Feature:
  • [CAMEL-8827] - Enable file component to accept expression for the noop option
  • Task:
  • [CAMEL-8760] - Upgrade Netty 3
  • [CAMEL-8802] - Upgrade to CXF 3.0.5
  • [CAMEL-8819] - Jetty Maven Plugin - 8.1.7 does not exist
  • [CAMEL-8928] - spring-security not part of the camel BOM
  • [CAMEL-9021] - depends on non-free JAR
  • [CAMEL-9038] - Make the existing tests of camle-olingo2 automatically executable
  • [CAMEL-9051] - Upgrade ServiceMix-Specs to 2.4.0
  • Test:
  • [CAMEL-8919] - NettyUDPMulticastAsyncTest failing on Windows

New in Apache Camel 2.15.2 (May 6, 2015)

  • Bug:
  • [CAMEL-7849] - Decrypting properties via Jasypt outside of
  • [CAMEL-8460] - camel-spring-boot - Routes restart during startup
  • [CAMEL-8467] - Update camel-linkedin and camel-box components to use servicemix bundle for htmlunit
  • [CAMEL-8540] - S3Consumer uses maxMessagesPerPoll incorrectly
  • [CAMEL-8566] - Feature camel-cxf doesn't install all required dependencies
  • [CAMEL-8568] - Feature camel-swagger doesn't install all required dependencies
  • [CAMEL-8573] - Feature camel-hbase doesn't install all required dependencies
  • [CAMEL-8574] - Feature camel-hdfs doesn't install all required dependencies
  • [CAMEL-8575] - Salesforce component doesn't properly retries the request when doing re-login
  • [CAMEL-8584] - Circuit breaker does not honour halfOpenAfter period
  • [CAMEL-8585] - The lazy load option doesn't unlock the file
  • [CAMEL-8589] - url.getPort returning -1, needs additional check
  • [CAMEL-8592] - NPE in AbstractListAggregationStrategy if empty list
  • [CAMEL-8597] - Elasticsearch component ignores indexType header set from endpoint URL
  • [CAMEL-8607] - Camel endpoint RAW password unsafe characters
  • [CAMEL-8609] - Remove open-jpa bundle from camel-jpa feature
  • [CAMEL-8624] - Bean component - Potential NPE in BeanInfo
  • [CAMEL-8626] - Leaking exchangesInFlightKeys in ManagedRoute
  • [CAMEL-8628] - camel-dozer component fails when multiple expressions are used in a mapping
  • [CAMEL-8636] - camel-kafka need to commit the last batch of messages when the auto commit is false
  • [CAMEL-8649] - Camel RAW() cannot handle String of 50
  • [CAMEL-8660] - camel-ftp - Disconnect when no messages dont call disconnect
  • [CAMEL-8665] - Throttler EIP - Using method call for message per sec exp fails in spring
  • [CAMEL-8672] - Restlet Rest Component properties are ignored
  • [CAMEL-8673] - ConcurrentModificationException when creating dynamic routes
  • [CAMEL-8674] - Camel-Netty4 does not set remote UDP address in headers
  • [CAMEL-8678] - Infinite recursion in TransactionErrorHandler toString method
  • [CAMEL-8682] - Context scoped OnException should not be stopped if a route is stopped
  • [CAMEL-8683] - Using load balancer in onException adds duplicate outputs for each route defined
  • [CAMEL-8687] - SyslogConverter doesn't handle the structured data rightly
  • [CAMEL-8690] - Camel HDFS2 - ShutdownHookManager class not found when shutting down OSGi framework
  • [CAMEL-8694] - java.lang.NullPointerException in at org.apache.camel.component.netty4.http.NettyHttpProducer$NettyHttpProducerCallback.done
  • [CAMEL-8702] - when occurs "Connection reset by peer",netty4 client's EventLoopGroup select thread won't shut down
  • [CAMEL-8707] - camel-smpp: smpps doesn't work over proxy
  • [CAMEL-8713] - ParallelAggregate option when using parallel mode does not run in parallel
  • [CAMEL-8717] - camel-kafka feature miss kafka-clients bundle
  • [CAMEL-8737] - camel-salesforce - Unable to generate DTOs for Filtered Lookup fields
  • Improvement:
  • [CAMEL-8075] - Camel sftp should send a command to check if the connection is broken
  • [CAMEL-8532] - Spring Boot applications should block the main thread of the execution
  • [CAMEL-8562] - Removing a route - Should check if the route input endpoint is static and used by other routes
  • [CAMEL-8564] - Add support for dataformat ref parameter
  • [CAMEL-8571] - Split EIP - Should use new message id per splitted message
  • [CAMEL-8582] - No way to specify a custom ModelJAXBContextFactory when using Spring DSL/XML Namespace
  • [CAMEL-8593] - JmsEndpoint.configureListenerContainer() some debug logs miss {}
  • [CAMEL-8600] - Change the ftp default separator to be Unix style
  • [CAMEL-8601] - Add Support for SFDC-specific Field Types To The Camel SFDC Component
  • [CAMEL-8603] - camel-ftp - Reduce connection info logging from INFO to DEBUG
  • [CAMEL-8608] - Update async-http-client version from 1.9.8 to 1.9.17
  • [CAMEL-8612] - Update Cassandraql component dependencies
  • [CAMEL-8615] - Update Dropbox-core-sdk from 1.7.6 to 1.7.7
  • [CAMEL-8620] - Update LightCouch version from 0.1.3 to 0.1.6
  • [CAMEL-8621] - Update Apache Kafka version from 0.8.1.1 to 0.8.2.0
  • [CAMEL-8623] - Update Dropwizard Metrics from version 3.1.0 to 3.1.1
  • [CAMEL-8634] - Wire tap - Should emit event notification about sending to tapped endpoint
  • [CAMEL-8635] - XStream no longer supports dynamic CL updates
  • [CAMEL-8645] - Camel Netty component should not intercept consumers with httpMethodRestrict=OPTIONS
  • [CAMEL-8684] - Load balancer model should not implement processor
  • [CAMEL-8685] - Netty should resolve OPTIONS prefix matches earlier
  • [CAMEL-8693] - java.net.URISyntaxException: Invalid uri syntax: Trailing & marker found error should be configurable or skipped
  • [CAMEL-8710] - Make auth configurable for Google app components
  • [CAMEL-8712] - User the Netty Timer per Component
  • New Feature:
  • [CAMEL-8563] - camel-ftp - Add support for account option for login
  • Task:
  • [CAMEL-8577] - BOM does not publish scriptengine dependencies
  • [CAMEL-8644] - Update Google Gson version from 3.2 to 3.2.1
  • [CAMEL-8658] - Replace SMX bundles of commons-dbcp1 with Apache versions
  • [CAMEL-8659] - Update commons-lang to 2.6 (xmljson)
  • [CAMEL-8661] - Use managed version of jackrabbit in hdfs and hbase features
  • [CAMEL-8662] - Use managed version of avro in hdfs2 feature
  • [CAMEL-8671] - Update XStream from version 1.4.7 to version 1.4.8
  • Test:
  • [CAMEL-8619] - Camel WebSocket SSL tests fail
  • [CAMEL-8699] - Camel-example-cxf: Remove ref from LoadBalance tag

New in Apache Camel 2.15.1 (Apr 17, 2015)

  • Bug:
  • [CAMEL-7565] - SFTP using PollEnrich with "disconnect=true" and "delete=true" does NOT delete the file
  • [CAMEL-8437] - Simple bean call doesn't like parenthesis in parameter values
  • [CAMEL-8455] - camel-linkedin - update_key option should be optional in getHistoricalStatusUpdateStatistics
  • [CAMEL-8456] - Remove addCompanyUpdateComment endpoint from camel-linkedin
  • [CAMEL-8457] - Correct return types of some endpoints in camel-linkedin
  • [CAMEL-8458] - camel-linkedin - public_profile_url option should be String
  • [CAMEL-8461] - camel-netty-http does not respect client's keep-alive setting
  • [CAMEL-8462] - HttpServerChannelHandler should not store the instance of HttpRequest
  • [CAMEL-8464] - Remove likeCompanyUpdate endpoint from camel-linkedin
  • [CAMEL-8466] - Feature camel-linkedin is missing dependencies for xalan, xerces and xmlresolver
  • [CAMEL-8470] - Several small fixes for camel-linkedin
  • [CAMEL-8476] - Unexpected behavior in fault handling with doTry/doCatch
  • [CAMEL-8479] - TrapReceiveTest is failed within Camel 2.15.0
  • [CAMEL-8480] - camel-catalog has unnecessary imports if it cannot access some other artifacts
  • [CAMEL-8484] - File language - Should support file extensions with multiple dots such as tar.gz
  • [CAMEL-8490] - OSGI Import package are wrong
  • [CAMEL-8492] - BeanInfo introspection ignores overriden methods
  • [CAMEL-8498] - CamelContextFactoryBean missing setEndpoints method
  • [CAMEL-8500] - ClassCastException when something other than PropertiesComponent is bound to "properties" JNDI name
  • [CAMEL-8504] - Failed to process Schematron XSLT templates and/or rules on windows
  • [CAMEL-8505] - Missed CamelSchematronValidationStatus header
  • [CAMEL-8510] - NPE will be thrown from doAppend() of PaxLoggingConsumer during load testing
  • [CAMEL-8515] - Camel marshal/unmarshal - Should catch throwable in case dataformat causes an java.lang.Error
  • [CAMEL-8519] - Salesforce component security listener does not replace old auth header
  • [CAMEL-8520] - Camel XMPP doesn't use a DNS resolver to look at SRV records
  • [CAMEL-8521] - camel-script - Should try all classloaders before throwing IAE
  • [CAMEL-8530] - can't install camel-github feature in karaf
  • [CAMEL-8546] - No LanguageResolver found for language=js
  • [CAMEL-8547] - Usage of camel-xmlbeans depends on TCCL
  • [CAMEL-8556] - AnnotationTypeConverterLoader treats package as class
  • Improvement:
  • [CAMEL-5398] - Optimize String.replaceAll() to cache Patterns where suitable
  • [CAMEL-7474] - Error blocks mail-consumer
  • [CAMEL-8468] - Usage of camel-xstream depends on TCCL
  • [CAMEL-8483] - MongoDB Endpoints: Allow ReadPreference to be set on consumers
  • [CAMEL-8488] - Java DSL - Improved CBR to detect if endChoice vs end was invalid used
  • [CAMEL-8489] - camel-sjms - Allow to create empty message for null body
  • [CAMEL-8497] - Add extra capabilities to the github component
  • [CAMEL-8509] - camel-catalog - Add api to parse endpoint uri and reverse
  • [CAMEL-8511] - Properties component - Add encoding option to use when reading the properties files
  • [CAMEL-8513] - FTP consumer - Add option to use a larger buffer size so download is faster
  • [CAMEL-8514] - camel-castor should depend on castor-xml
  • [CAMEL-8516] - Salesforce component does not return the list of matching records for HTTP status code 300
  • [CAMEL-8517] - Salesforce session handling must declare shared fields volatile
  • [CAMEL-8536] - Using JCR API 2.0 jar which is already OSGi bundle
  • [CAMEL-8541] - Camel main TestSupport class is incompatible with the CDI specification
  • [CAMEL-8543] - Support easy configuration of HTTP proxy parameters for Camel salesforce component and maven plugin
  • [CAMEL-8544] - Camel - Dynamic router - unsupported cacheSize attribute
  • [CAMEL-8558] - Camel Catalog - Add humanize component name
  • New Feature:
  • [CAMEL-8465] - Add groups/getPosts endpoint to camel-linkedin
  • [CAMEL-8487] - Custom arguments to RabbitMQ queues
  • Task:
  • [CAMEL-8384] - 2.14.2 Snapshot builds missing sources/javadoc jars
  • [CAMEL-8454] - Correct a comment in files generated by camel-api-component-maven-plugin
  • [CAMEL-8533] - camel-ognl exposes servicemix ognl bundle
  • [CAMEL-8548] - upgrade commons-codec version to 1.10
  • Wish:
  • [CAMEL-8501] - BOM does not publish restlet dependencies

New in Apache Camel 2.15.0 (Mar 31, 2015)

  • New and Noteworthy:
  • Component, data format, language and eip documentation now included in the built component JARs. And Java API and JMX API to access that documentation. And APIs to explain an endpoint uri, eip configuration and what all those configured options mean. In other words the same level of complete documentation of your Camel apps at both design and runtime, accessible from Java / JMX and tooling.
  • Component, data format, language and eip can now have associated label(s) which are used for grouping components into: core, database, messaging, http, rest, etc.
  • The XML DSL schema now include documentation
  • Provide Configurer for user to configure the CXF conduit and CXF destination from Java code
  • Added a DelegateEndpoint interface into Camel API
  • Support to setup the SslContextParameters in the camel-restlet component
  • Java DSL - Should support nested choice in doTry .. doCatch
  • MongoDb component now stores OIDs of the inserted records in the message header
  • Recipient List now supports specifying custom Exchange Pattern in the endpoint ur's
  • Type Converter to enum's is now case insensitive, so you can convert safely level=info to an enum with name Level.INFO etc.
  • XSLT and Validation components now provides all their endpoint configurations in the endpoint, and not only in the component, making these components like any other components.
  • Made the Camel Karaf Commands reusable by moving common code into a camel-commands-core module that SPI can extend and plugin Camel commands for other environments.
  • Further hardening of the SJMS component.
  • Rest DSL with embedded routes now supports onException, intercept etc in use for those embedded routes, just like any regular routes.
  • Rest DSL now by default uses custom error message as-is without attempting to binding output (requires a HTTP error code of 300+ is set as a header)
  • Camel Using PropertyPlaceholder now supports specifying a default value together with the key to lookup.
  • Camel Using PropertyPlaceholder now supports not having to define a PropertiesComponent if all the placeholder keys has default values which are to be used (less configuration needed in those situations).
  • Camel Using PropertyPlaceholder now supports 3rd party functions to lookup the property values, this allow end users to implement their own logic - we provide 3 out of the box functions to lookup values from OS environment variable, JVM system properties, or the service name idiom.
  • RabbitMQ now pools Channels for the producer to avoid sharing same Channel among concurrent producers which are not recommended by RabbitMQ client.
  • Camel commands is now reusable outside Apache Karaf as a base by the commands-core module.
  • Camel commands using Jolokia for remote communication by the commands-jolokia module.
  • More minor processors such as setHeader, removeHeader, removeHeaders and ditto for properties is now also enlisted in JMX under processors.
  • Optimized usage of type conversion during routing reducing the number of attempts needed.
  • Optimized CaseInsentiveMap used as message headers to use a single map instead of two and yield less memory overhead and performance
  • Asynchronous routing engine that are forced to block threads now exposes this using a manager that offers runtime insight using JMX. And as well attempts to free blocked threads during graceful shutdown, to avoid any threads hanging in the JVM.
  • Swagger now supports any kind of runtime environment, as only JMX being enabled is required.
  • XML Security component supports now XAdES-BES/EPES in the signer endpoint.
  • HL7 MLLP codec now supports Netty4 based transport.
  • Inflight repository now allows to browse the current inflight exchanges to obtain information where these exchanges are inflight and for how long. Expose this information in JMX and Camel commands as well.
  • Graceful Shutdown now logs information about the inflight exchanges that are still present during shutdown and a timeout was hit.
  • Message History which dumps Exchange information not supports the Exchange.LOG_DEBUG_BODY_MAX_CHARS option to limit the max chars outputted in the logs.
  • DefaultClassLoader now fallback and use the application context classloader that may have been set on CamelContext to better be able to load classes/resources from classpath in different runtime environments.
  • Camel JMX now includes current inflight exchanges at processor level, which means we can have a complete breakdown where exchanges are, and as well from the improved InflightRegistry which has APi and JMX api to browse the current inflight with details of the exchange and processing times etc.
  • Support for Jetty 9 using the new camel-component-jetty9 module.
  • The EndpointRegistry now stores endpoints in two caches; a static unbounded cache to keep endpoints for their lifetime, and a dynamic limited cache to keep only the recently used endpoints.
  • Endpoint's used by routes are kept in the static cache of the EndpointRegistry as long as the lifetime of the routes.
  • Removing a route now also remove its static Endpoint's from the EndpointRegistry (if those endpoints are not shared and used by other routes). Mind that any dynamic endpoint created during routing from dynamic EIPs such as recipient list, routing slip, dynamic router etc, are not removed from the EndpointRegistry when the route is removed.
  • Dead Letter Channel now logs a WARN if a new exception occurred while it was attempting to process the dead letter message. The new exception will by default be handled so the Dead Letter Channel always complete succesfull. The new option deadLetterHandleNewException can be set to false to turn this off.
  • GroovyShell creation process can now be customized using GroovyShellFactory SPI interface.
  • Configuring endpoint uris in XML DSL now allow to specify the uri attribute using multiple lines; this can make it more readable when having very long uris. Notice only the uri attributes support this.
  • Configuring endpoint uris in XML DSL now allow to specify endpoint options using bean style in the configuration; this can make it more readable when having very long uris.
  • Using custom Jackson modules is easier with the Jackson JSON data format.
  • Enabling and disabling features using Jackson data format is easier from both Java and XML DSL.
  • Some HTTP producer now allows GET operations with message body (though a bit unusual to do)
  • Aggregate EIP now supports letting the AggregationStrategy determine if the current group is complete by returning a boolean property on the returned exchange.
  • camel-cdi supports CDI 1.0 onwards now.
  • Fixed issues:
  • Fixed processors was not enlisted in JMX when routes was transacted.
  • Fixed the NullPointerException when using CXF endpoint with enrich
  • Fixed the endpointProperty of restConfiguration doesn't work issue
  • Fixed the issue that CircuitBreakerLoadBalancer fails on async processors
  • Fixed MyBatis consumer ignoring maxMessagesPerPoll option
  • Fixed potential issue with pollEnrich not triggering error handler if an exception was thrown in the polling.
  • Fixed a memory leak if using Dynamic Router that loops many times, and uses any of convertBodyTo or setBody or transform in the loop, causing memory to stack up until the Exchange is done.
  • Fixed and improved how Bean component and Simple language invoking beans detect methods that are overridden, and able to filter and apply this as a single method, to be invoked. Avoids AmbiguousMethodCallException being thrown.
  • Fixed a thread leak if restarting routes using stop/start and the routes is a scheduled poll consumer, such as file/ftp components.
  • Using ?exchangePattern=InOnly or InOut in endpoint uris now take precedence as the pattern in use when sending to the endpoint, using to/recipient list.
  • Mail component no longer includes headers starting with Camel in their keys, as those are consider internal headers and should not be included in the sent emails.
  • Fixed readLock=fileLock on the file component
  • Fixed Stomp not detecting failure when sending, but was assuming a send always succeeded
  • Fixed MQTT sending to broker being more resilient and automatic ensure re-connection when connection failures
  • Fixed sending to FTP may cause the producer to hang in an endless reconnection attempt if the socket connection is dead. (Use soTimeout=10000 or some positive value to potential mitigate this in older releases).
  • Wire Tap and Multicast (in parallel mode) EIPs now copies the message body if its Stream caching based - this allows concurrent threads to work individually using their own copy of the stream, to have reliable access to the body.
  • New Components:
  • camel-beanstalk - for working with Amazon Beanstalk jobs.
  • came-cassandraql - Cassandra CQL3 support
  • camel-chunk - for templating with Chunk engine.
  • camel-docker - to communicate with Docker.
  • camel-dozer - Now also as a component to convert messages using the Dozer type conversion framework
  • camel-github - for integrating with github
  • camel-google-calendar - provides access to Google Calendar via the Google Calendar Web APIs.
  • camel-google-mail - provides access to Gmail via the Google Mail Web APIs.
  • camel-hipchat - to integrate with the Hipchat service
  • camel-pgevent - Component for sending/receiving notifications in PostgreSQL via the pgjdbc-ng driver
  • camel-jira - for integrating with JIRA issue tracker
  • camel-kura - for deploying Camel OSGi routes into Eclipse Kura M2M container.
  • camel-scr - for using Camel with SCR (OSGi declarative services) on OSGi containers such as Apache Karaf
  • camel-spring-boot - for using Camel with Spring Boot
  • camel-test-spring40 - for testing with Spring 4.0.x. camel-test-spring is for Spring 4.1.x onwards.
  • scheduler - for timer based scheduler using a scheduled thread pool and with more functionality.
  • New DSL:
  • Added removeProperties to remove the properties from exchange.
  • New Data Formats:
  • camel-univocity-parsers

New in Apache Camel 2.14.1 (Feb 18, 2015)

  • Bug:
  • [CAMEL-7224] - camel-smpp - fails to correctly send messages that require UCS-2 encoding
  • [CAMEL-7627] - Quartz/Quartz2 in cluster mode doesn't apply changed trigger settings
  • [CAMEL-7662] - MQTTProducerTest fails once enables it
  • [CAMEL-7697] - from("mqtt:..").to("mqtt:...") causes a seriously delayed delivery
  • [CAMEL-7784] - Camel : RSS - Ignores posts with identical published or updated date.
  • [CAMEL-7785] - setUnitOfWork in DefaultExchange throws NPE when called from Splitter.java
  • [CAMEL-7803] - DefaultJdbcPrepareStatementStrategy Iterator fails on null value inserts
  • [CAMEL-7820] - Interceptors not working for Rest DSL
  • [CAMEL-7824] - Camel manual throws some errors by opening in Safari or Firefox
  • [CAMEL-7826] - Olingo2 component sets incorrect value for "id" element in create entry endpoint
  • [CAMEL-7829] - Olingo2 component should handle 200 OK responses from OData servers for PUT method
  • [CAMEL-7830] - RestLetHeaderFilterStrategy should filter the header of "Transfer-Encoding"
  • [CAMEL-7836] - ConcurrentModificationException when creating dynamic routes
  • [CAMEL-7839] - Xpath is not namespace aware in choice
  • [CAMEL-7842] - Avoid using InputStreamEntity for byte[] input
  • [CAMEL-7852] - camel-msv component cannot be resolved in OSGi
  • [CAMEL-7855] - If you suspend a JMS route that is stopped, calling resume on it does not work and reports no error
  • [CAMEL-7856] - camel-cxf producer HttpAPI should not send the message body when using DELETE method
  • [CAMEL-7866] - barcodeFormat is always QR CODE
  • [CAMEL-7867] - NullPointerException when using CXF endpoint to enrich
  • [CAMEL-7868] - wrong concatenation of parameters in JettyHttpComponent
  • [CAMEL-7869] - endpointProperty does not work (restConfiguration - jetty)
  • [CAMEL-7870] - [camel-barcode] Writer/Reader hints should be re-optimized when setBarcodeFormat method called.
  • [CAMEL-7871] - [camel-barcode] failed to create AZTEC barcode
  • [CAMEL-7874] - json DataFormat: The prettyPrint option does not work as expected
  • [CAMEL-7879] - interceptFrom doesn't work when using rest dsl
  • [CAMEL-7880] - Cannot use custom DataFormats in REST DSL
  • [CAMEL-7881] - camel-resetlet feature should include httpclient4 bundle
  • [CAMEL-7882] - camel-syslog's CamelSyslogTimestamp header is suddenly a GregorianCalendar
  • [CAMEL-7883] - XSD decoding bad guess in Validator
  • [CAMEL-7885] - Timer - Restarting a timer endpoint may not trigger at expected time the first time
  • [CAMEL-7886] - Charset not correctly set from content-type
  • [CAMEL-7888] - HL7Decoder leaks memory
  • [CAMEL-7890] - XmlConverter.toSAXSourceFromStream does not set setNamespaceAware
  • [CAMEL-7892] - Unable to perform a restlet DELETE with no entity
  • [CAMEL-7894] - Encoder exception after sending a message with null body
  • [CAMEL-7896] - camel-netty-http producer should close the channel when the connection header is not keep alive
  • [CAMEL-7899] - camel-jetty should support to define multiple http method for the rest service
  • [CAMEL-7900] - hdfs2 - chunkSize not honored
  • [CAMEL-7909] - camel-netty-http consumer need to close the connection if the response connection header is close
  • [CAMEL-7910] - Netty {Client|Server}ChannelHandler need to pass the close and open event around
  • [CAMEL-7916] - OsgiServiceRegistry forces name property
  • [CAMEL-7920] - Refresh of the camel-jaxb bundle results a strange behaviour
  • [CAMEL-7922] - MQTT endpoint misses QoS > 0 messages due to startup timing issue
  • [CAMEL-7924] - java.lang.ClassNotFoundException: org.codehaus.groovy.runtime.callsite.CallSiteArray
  • [CAMEL-7931] - JCR need to support multi-valued property
  • [CAMEL-7935] - JcloudsPayloadConverter.toPayload(InputStream) cannot deal with FileInputStreamCache
  • [CAMEL-7952] - Camel REST does not handle same path with differents VERBS
  • [CAMEL-7966] - Doesn't set the blank or empty string to the mail recipients
  • [CAMEL-7971] - Setting bean reference in fails with IllegalFormatWidthException
  • [CAMEL-7973] - CircuitBreakerLoadBalancer fails on async processors
  • [CAMEL-7977] - sftp compression option is not set rightly
  • [CAMEL-7981] - JMX - Routes with transacted does not enlist processor mbeans
  • [CAMEL-7986] - Route disappears with routeId set to "route1"
  • [CAMEL-7988] - file consumer - Should call abort in case read lock cannot be acquired if exception was thrown
  • [CAMEL-7989] - FileIdempotentRepository should create the file store on startup
  • [CAMEL-7990] - IdempotentConsumer - If no messageId should allow Camel error handler to react
  • [CAMEL-7992] - Container lifecycle event method invoked outside of extension observer method invocation
  • [CAMEL-8001] - SmppUtils.isGsm0338Encodeable() called with arbitrary data
  • [CAMEL-8008] - SubmitMulti and DataSm not checking CamelSmppAlphabet header
  • [CAMEL-8030] - camel-netty need to release the thread pool when shutdown
  • [CAMEL-8031] - camel-netty maximumPoolSize option is ignored
  • [CAMEL-8032] - FileUtil leaks FileInputStream when renameFile fails due to permission issue
  • [CAMEL-8033] - Exchange Leak Caused By pollEnrich
  • [CAMEL-8035] - CXFRS consumer should set Exchange's charset name, if content type provides one
  • [CAMEL-8036] - JettyComponent should not setup the security handler more than once
  • [CAMEL-8045] - Not possible to load a public key from a a PrivateKeyEntry in a keystore
  • [CAMEL-8049] - DefaultRestletBinding can not deal with multi-valued HTTP request parameters
  • [CAMEL-8053] - Memory leak when adding/removing a lot of routes
  • [CAMEL-8062] - camel-rx - EndpointSubscriber does not call unsubscribe to stop the consumer
  • [CAMEL-8065] - Camel won't build on windows (camel-box and camel-api-component-maven-plugin)
  • [CAMEL-8073] - Camel may clear attachments during routing
  • [CAMEL-8077] - NullPointerException in getRouteDefinition before context is started
  • [CAMEL-8081] - Multicast Aggregator should keep processing other exchange which is not timeout
  • [CAMEL-8082] - CxfRs producer should close the connection if MEP is InOnly
  • [CAMEL-8086] - Possible memoryleak when convertBodyTo is used in a dynamicRouter
  • [CAMEL-8087] - missing dependency for "camel-example-restlet-jdbc" example
  • [CAMEL-8092] - cxf:producer Matrix Params are missing
  • [CAMEL-8094] - camel-netty: Do not use org.jboss.netty.util.internal.ExecutorUtil as it breaks the camel-netty Karaf feature
  • [CAMEL-8096] - CxfEndpoint schema should support to publishEndpointUrl from the element attribute
  • [CAMEL-8097] - Error in AST/Graph translation
  • [CAMEL-8106] - XML parsing error is ignored by xtoknize XML tokenizer
  • [CAMEL-8118] - BigDecimalPatternFormat overwrites Locale setting
  • [CAMEL-8121] - Infinite Loop Within Camel if the temp file directory is not writable
  • [CAMEL-8123] - Mina2 SSL initiates handshake backwards
  • [CAMEL-8125] - PropertyInject gives NullPointerException
  • [CAMEL-8126] - PropertyInject does nothing for setter method
  • [CAMEL-8134] - We should not add synchronisation if the CachedOutputStream closedOnCompletion option is false
  • Improvement:
  • [CAMEL-7421] - camel-rabbitmq - Channel is not fully thread safe
  • [CAMEL-7490] - Redelivery delay cannot be modified in asynchronous mode for multiple retries with different redelivery intervals for each retry specified in Exchange.REDELIVERY_DELAY header parameter.
  • [CAMEL-7859] - Language component - Add support for binary content
  • [CAMEL-7863] - Tone down info logging pr. message
  • [CAMEL-7864] - The kafka component does not properly support zookeeper chroot configuration
  • [CAMEL-7895] - Upgrade XML Security + BouncyCastle dependencies
  • [CAMEL-7915] - Share the HashedWheelTimer across the Camel NettyComponent
  • [CAMEL-7929] - OptimisticLockRetryPolicyTest fails from time to time
  • [CAMEL-7932] - Adding initial properties to PropertiesComponent
  • [CAMEL-7940] - Disable SSL security protocol by default
  • [CAMEL-7958] - Java DSL - Should support nested choice in doTry .. doCatch
  • [CAMEL-7959] - Rest DSL - Add support for onException, interceptor and other cross functionality
  • [CAMEL-7975] - SJMS Endpoint does not reverse header encoding
  • [CAMEL-7980] - camel-ognl need to use the class resolver from camel context
  • [CAMEL-8012] - camel-stream's scanStream mode should read available lines before going into sleep (or delay)
  • [CAMEL-8014] - camel-metrics - Let route policy and metrics component reuse same metricsregistry
  • [CAMEL-8064] - MockEndpointsAndSkip annotation does not resolve property placeholders
  • [CAMEL-8068] - SplitAttachmentsExpression should set ID of splited attachment
  • [CAMEL-8070] - Supporting byte[] messages in camel-websocket
  • [CAMEL-8072] - Netty Http Server should close the channel once it return an error message
  • [CAMEL-8076] - We should avoid checking the DupTriggerKey if the recoverableJob is true
  • [CAMEL-8078] - camel-restlet should support to decode the response entity which is represent resource
  • [CAMEL-8089] - Support paging and restricting results from google drive
  • [CAMEL-8091] - DefaultExchangeFormatter does not consider Exchange.LOG_DEBUG_BODY_MAX_CHARS
  • [CAMEL-8098] - Route model using body expression should be representable in the xml model
  • [CAMEL-8099] - Add support for default values in Camel properties
  • [CAMEL-8104] - rest-dsl - Allow custom error responses as-is without invoking the output binding
  • [CAMEL-8107] - Allow to use property placeholder with default values without having to setup the properties component
  • [CAMEL-8109] - Allow to plugin custom functions to property placeholder
  • [CAMEL-8115] - Properties component - Include default functions to lookup from ENV / SYS etc
  • [CAMEL-8116] - Allow more control of message splitting policy
  • [CAMEL-8130] - camel-sql - Allow selectList outputType to map to class as well
  • [CAMEL-8131] - rest-dsl - Include route id in listRestServices JMX api
  • [CAMEL-8133] - rest-dsl - Make it easy to support CORS
  • [CAMEL-8136] - rest-dsl - Auto binding mode should detect if JAXB unmarshal is needed to not
  • [CAMEL-8138] - camel-jaxb - Allow jaxb to marshal non JAXBElement
  • [CAMEL-8139] - rest-dsl - Allow to configure data format properties for IN vs OUT
  • New Feature:
  • [CAMEL-7791] - Karaf command completers does not work
  • [CAMEL-7848] - Netty-Http component: add support for registry's encoders and decoders
  • [CAMEL-8079] - Provide possibility to delegate charset evaluation of a HL7 message to HL7DataFormat
  • [CAMEL-8114] - Add support for the JCR multi-valued property
  • Task:
  • [CAMEL-7943] - Add jackson core dependency to camel-dropbox pom
  • [CAMEL-7976] - Validation of feature camel-ssh is failing
  • [CAMEL-8003] - examples - camel-examples-etl is broken (again)
  • [CAMEL-8022] - camel-api-component-maven-plugin - Test fails about java6 method
  • [CAMEL-8061] - camel-test-blueprint - Use felix fileinstall JAR that do not have the NPE bug
  • [CAMEL-8112] - upgrade joda-time version to 2.5
  • Test:
  • [CAMEL-7737] - camel-fop - Fails unit test
  • [CAMEL-8004] - camel-quartz2 - A test may hang

New in Apache Camel 2.14.0 (Sep 23, 2014)

  • New and Noteworthy:
  • Support for running on Java 1.8 JVMs
  • Spring 4.x supported, camel-test-spring module can only work with Spring 4.0.x and camel-test-spring3 module is for Spring3.x. Support for testing with Spring 4.1 coming in Camel 2.15 onwards.
  • REST DSL to define REST services using a REST style with verbs such as get/post/put/delete etc. The Rest DSL supports Java and XML DSL.
  • REST DSL integrated with Swagger to expose the service as swagger apis.
  • Simple language defined in routes using resultType as boolean is now evaluated as predicate instead of as expression.
  • Introduced RuntimeEndpointRegistry to capture runtime usage of endpoints in use during routing, such as dynamic endpoints from dynamic EIPs.
  • Added event notification for routes added and removed.
  • Allow to configure cache size in Recipient List, Routing Slip and Dynamic Router EIPs; and as well turn caching off.
  • Netty HTTP producer now supports the CamelHttpPath header to define a dynamic context-path and query parameters to call the remote http server.
  • Polling Consumer allows to configure initial queue size and whether to block when full when using the default EventDrivenPollingConsumer which most components does. We now block by default, as otherwise the message may be lost if the queue was full, and a new message was offered.
  • Added a generic callback to configure the APNS service builder.
  • Added StreamList option to the JDBC component
  • Allow to define Simple expressions for sql parameters of the SQL component.
  • A new XML tokenizer that is truly XML-aware (e.g., supporting XML namespaces and complex hierarchical structures)
  • Added option parallelAggregate to Multicast, Splitter and Recipient List EIPs
  • Support to set the variable map from message header in Velocity, Freemarker, StringTemplate.
  • Added HazelcastInstance option to Hazelcast component.
  • Producers from static EIPs such as is is now also enlisted in JMX when Camel is starting routes.
  • Unmarshal json to pojo using camel-jackson now supports a header to tell Camel what the pojo class name is, to allow more dynamic behavior, as otherwise the class name would be hardcoded.
  • Also allow to configure camel-jackson to skip null values, by setting includes to NOT_NULL.
  • And camel-jackson can now easily be configured to unmarshal to a List or List instead of either a single pojo or Map type.
  • Introduced SynchronizationRouteAware allowing to have callbacks before/after an Exchange is being routed. This allows to trigger custom code at these points, for example after a route, but before a Consumer writes any response back to a caller (InOut mode).
  • JDBC now supports outputClass for SelectList type.
  • Routes starting from JMS will now shutdown the consumer (MessageListenerContainer) quicker when CamelContext is being stopped. (assuming the acceptMessagesWhileStopping hasn't been set to true). This can also help a cleaner shutdown as otherwise some JMS clients may attempt re-connect/failover during shutdown which isn't desired anyway as we are shutting down.
  • OnCompletion can now be configured to use or not use a thread pool, and as well whether to run before or after the route consumer. Running before the consumer allows to modify the exchange before the consumer writes it as response to the callee (if consumer is InOut mode)
  • Added Bulk Index message operation to Elasticsearch component.
  • Added RoutePolicyFactory to create and assign a RoutePolicy for every route, instead of having to configure this for every route.
  • MetricsRoutePolicyFactory to expose route statistics using the codehale metrics library.
  • Improved NettyWorkerPoolBuilder#build visibility.
  • The SJMS component now uses Apache commons-pool for the pool implementation instead of custom code.
  • Using Quartz2 as polling consumer (QuartzScheduledPollConsumerScheduler) now supports task stored in JDBC data store, which means users can setup quartz in clustered mode
  • Camel component API to output json parameter schema now honors the JSon Schema spec, and also include a description of the javaType for object types.
  • Using PropertyPlaceholder is now supported in in the XML DSLs
  • Add support for Pattern, GroupingSeparator & DecimalSeparator to camel-bindy when parsing/formatting BigDecimal
  • Added option aggregateOnException to Content Enricher to allow end users to deal with exceptions in the aggregate method, such as suppressing the exception or building a custom message, etc.
  • POJO Consuming now shutdown eager during stopping Camel, which ensures a graceful shutdown when using pojo routing.
  • Bean component caches the bean by default (eg a single instance of the bean is reused). This can be turned off by setting cache=false, which now enforces a new instance of the bean is created and used once (no reuse, aka prototype scoped)
  • Added support for RFC5424 to Syslog and as well having encoder/decoders for Netty out of the box.
  • Fixed Issues:
  • Timer consumer is now scheduled after CamelContext has started all routes, to ensure other routes is running when timer routes is triggered to run.
  • Netty HTTP now returns HTTP status 404 if resource not found instead of 503.
  • Fixed the MongoDB readPreference option which used to cause an IllegalArgumentException to be thrown.
  • Fixed issue with Netty producer may leak HashWhealTimer instances when having many producers that are not reused.
  • Fixed issue with Netty consumer should wait for join to complete when joining a multicast group over UDP
  • Improved stability when testing with camel-test-blueprint component.
  • Netty HTTP now removes headerFilterStrategy option after resolving it
  • Fixed POJO aggregating when the parameter type was referring to a type that was class annotated.
  • Fixed MyBatis to keep the message body as-is when calling stored procedures, if the procedure returns data as OUT parameters.
  • Fixed Camel Karaf commands to work with multiple CamelContext from the same bundle.
  • Fixed Advice-With to work with transacted routes defined in XML DSL
  • Fixed Advice-With to work with Content Based Router when adding outputs to the when clauses.
  • Fixed Advice-With to honor autoStartup option.
  • Fixed OnCompletion to route the completed Exchange even if it was marked to stop / failed due exception / handled by error handler etc.
  • Fixed using @EndpointInject with ref in RouteBuilder classes, to enlist the endpoints in JMX during starting CamelContext when using OSGi
  • Fixed Property Trigger.timerZone is declared as constant for camel-quartz component but not implemented when endpoint is instantiated
  • Fixed JPA to not share EntityManager with concurrent threads or other exchanges, as an EntityManager is not thread-safe accordingly to the JPA spec.
  • Fixed MDC Logging to avoid losing MDC values after invoking an Async-Routing-enabled endpoint.
  • Fixed CXFRS consumers to accept custom bindings.
  • New Enterprise Integration Patterns:
  • Circuit Breaker pattern implemented as a Load Balancer policy
  • New Components:
  • camel-ahc-ws
  • camel-atmosphere-websocket
  • camel-box
  • camel-dropbox
  • camel-metrics
  • camel-netty4
  • camel-netty4-http
  • camel-olingo2
  • camel-openshift
  • camel-google-drive
  • camel-gora
  • camel-rest (in camel-core)
  • camel-spark-rest
  • camel-schematron
  • camel-swagger

New in Apache Camel 2.13.1 (May 13, 2014)

  • Bug:
  • [CAMEL-7033] - camel-quartz2 - When clustering, triggers may be left in a paused and unrecoverable state
  • [CAMEL-7141] - Custom HeaderFilterStrategy does not work when set it on either component or endpoint uri
  • [CAMEL-7271] - AbstractListGroupedExchangeAggregationStrategy produces failed exchange if first received exchange fails
  • [CAMEL-7279] - Yammer now uses bearer token for auth
  • [CAMEL-7296] - camel-hbase component have some bugs on Consumer side
  • [CAMEL-7298] - Simple Language - Binary Expression Equality Fails
  • [CAMEL-7300] - HL7 converter should not perform validation
  • [CAMEL-7303] - Simple Language - Header access surrounded with quotes
  • [CAMEL-7304] - InterceptSendToEndpoint does not work where uri needs to be normalized
  • [CAMEL-7305] - Simple Language - ResultType Coercion is not consistent
  • [CAMEL-7306] - Camel:Kafka NPE when trying to consume messages from kafka server
  • [CAMEL-7307] - Cmale:Kafka No message body returned from exchange
  • [CAMEL-7308] - Timer component : timer should use StartupListener to be initialized before first fire
  • [CAMEL-7310] - Restlet - Need to run in sync mode due bug in restlet
  • [CAMEL-7311] - camel-mail - Should not fetch attachments if mapMailMessage=false
  • [CAMEL-7315] - SPI locator fails when using a charset such as UTF16
  • [CAMEL-7317] - xml-specs-api feature in camel features.xml shouldn't have all bundles configured as dependency='true'
  • [CAMEL-7320] - PGP Data Format: EOFException: Unexpected end of ZIP input stream
  • [CAMEL-7321] - JcrConsumer freezes in some environments
  • [CAMEL-7323] - createRouteStatisticEndpointJson - Returns invalid json if no routes
  • [CAMEL-7324] - DynamicRouter sends in-message to next destination
  • [CAMEL-7330] - Kafka : Fix the KafkaConsumer to fill the camel message body with the kafka message content
  • [CAMEL-7336] - camel-cometd jetty jmx version is not suit with camel parent jetty version
  • [CAMEL-7337] - PGPDataFormat unmarshal doesn't close the stream correctly
  • [CAMEL-7338] - CxfClientCallback should not populate camel exchange OUT message if no response comes back to cxf producer and camel exchange pattern is InOnly
  • [CAMEL-7341] - CXFRS: InInterceptor defined in Spring is ignored
  • [CAMEL-7344] - Some endpoints configured using beans may result in NPE under DEBUG mode
  • [CAMEL-7347] - camel-netty - Should return 404 instead of 503 if context-path did not match a route
  • [CAMEL-7351] - NPE in CamelInternalProcessor
  • [CAMEL-7353] - Configuring an http4 endpoint with hostname starting with "http" leads to an URISyntaxException
  • [CAMEL-7356] - Password constant mapped to System Id Header parameter
  • [CAMEL-7357] - CXFRS does not check JAX-RS Exception mappers
  • [CAMEL-7359] - Simple Language - Additional after text after inbuilt function call is ignored
  • [CAMEL-7363] - camel headers are not preserverd in camel-ahc component
  • [CAMEL-7369] - camel-mongodb - The readPreference option doesn’t work
  • [CAMEL-7377] - mark openjpa as dependency in Camel JPA feature
  • [CAMEL-7379] - allChannels should not be static variable for the NettyProducer
  • [CAMEL-7383] - camel-script-* features should depend on scripting-api bundle
  • [CAMEL-7385] - camel-exec feature should install commons-io bundle
  • [CAMEL-7389] - camel-quartz component does not define osgi import version for quartz
  • [CAMEL-7391] - camel-netty - NettyProduce should use timer from component instead of creating new timer per producer
  • [CAMEL-7398] - Salesforce recently changed their login API to use new OAuth fields, which breaks the camel-salesforce component
  • [CAMEL-7399] - Camel Salesforce integration tests fail with ClassNotFoundException
  • [CAMEL-7406] - Empty password in JCR Endpoint URI causes NPE
  • [CAMEL-7409] - Camel ZipIterator should not eat the IOException
  • [CAMEL-7411] - EventDrivenPollingConsumer can lose exchanges when the internal queue is full
  • [CAMEL-7415] - lazyLoad with CSV blows up on last line
  • [CAMEL-7428] - Simple Language - Operators are not evaluated for setting body or headers
  • Improvement:
  • [CAMEL-6458] - Add option renameUsingCopy option to file component
  • [CAMEL-6694] - Make Log component and EIP compatible with log4j MDC Sift Appender
  • [CAMEL-6820] - Improve SJMS handling of exchange body data types
  • [CAMEL-7231] - Support receiving attachments with Spring-WS
  • [CAMEL-7309] - Tone down the excessive INFO logging about Woodstox xml parser not in use
  • [CAMEL-7312] - File -> Properties type converter
  • [CAMEL-7313] - camel-sql - Add support for fetching generated primary keys when using INSERT
  • [CAMEL-7327] - Improve Container.Instance API to deal with setting a Container after CamelContexts have been created. There is a big risk CamelContext's won't get managed right now
  • [CAMEL-7329] - Upgrade camel-kafka for kafka 0.8.1 release
  • [CAMEL-7331] - Kafka: producer lookup the destination topic in the message header
  • [CAMEL-7334] - Event notification for routes added/removed
  • [CAMEL-7335] - Kafka : Expose kafka configuration properties to the camel component
  • [CAMEL-7350] - JaxbDataFormat should not parse the Schema over and over again
  • [CAMEL-7358] - Tracer - Should have options to allow streams or files
  • [CAMEL-7361] - would be nice if org.apache.camel.spring.Main could take a system property or CLI option to package scan classes too
  • [CAMEL-7370] - camel-mongodb - Should properly close the underlying physical connection to MongoDB while shutting down
  • [CAMEL-7372] - Allow users to pass in their own EntityManager through the exchange
  • [CAMEL-7373] - Reduce the logging noise from the log definition
  • [CAMEL-7387] - MainSupport - Should not barf if no CamelContext found
  • [CAMEL-7388] - xmlTokenizer to optionally wrap the token with the enclosing elements
  • [CAMEL-7393] - Recipient List - Allow to define cache size, so you can tweak that or turn it off
  • [CAMEL-7394] - camel-netty-http - Add support for HTTP_PATH for dynamic-to
  • New Feature:
  • [CAMEL-7333] - RuntimeEndpointRegistry - To capture which endpoints are in use by which routes
  • Task:
  • [CAMEL-7289] - Update MQTT client library dependency to latest version 1.10
  • [CAMEL-7355] - HttpPollingConsumer in camel-http4 need to use HttpClient 4.3.x API
  • [CAMEL-7368] - The feature descriptor should use a namespace

New in Apache Camel 2.13.0 (Mar 21, 2014)

  • New and noteworthy:
  • Using in Spring will now shutdown eager by default. This ensure a cleaner shutdown of Camel, as dependent are not shutdown at this moment. The will then be shutdown after . There is a new attribute shutdownEager on to turn this off, and use the old behavior.
  • The MBean names registered by Camel JMX no longer include the hostname in the context part, eg before context=myHost/myCamelId and now after context=myCamelId. Having the hostname in the MBean name does not bring much value, and in fact makes things more complicated as the mbean name changes depending on the host running Camel.
  • MBean naming in OSGi cleaned up to use simpler naming with symbolicName. Before we could have MBean names with duplicate bundle ids such as context=114-114-camel-6, which now is using the symbolic name instead, context=MyApplication.
  • When using multiple OSGi Blueprint 's then Camel now favors using non-default placeholders, or the last property-placeholder defined in the Blueprint XML file. This allows for example to define default properties in one placeholder, and override these values in other placeholders.
  • FTP consumer allow to download a single named file without using the FTP LIST command. This allows to download a known file from a FTP server even when the user account does not have permission to do FTP LIST command.
  • FTP consumer allow to ignore file not found or insufficient file permission errors.
  • Data Format using marshal now leverages Stream caching out of the box if enabled, which allows to marshal big streams and spool to disk, instead of being pure in-memory based.
  • Improved using Bean when the bean is looked up in the Registry, when using concurrent processing in the route.
  • Added cache option to beanRef and in the DSL. This avoids looking up the Bean from the Registry on each usage; this can safely be done for singleton beans.
  • Configuring Data Formats in XML attributes now supports reference lookup using the # syntax, eg
  • JDBC component now also support outputType to specify the expected output as either a List or single Object. As well allow to map to a bean using a BeanRowMapper to control the mapping of ROW names to bean properties.
  • Both Quartz as well as Quartz2 based ScheduledRoutePolicy has been improved to better support cluster setups (e.g. to not schedule jobs being already scheduled through another node inside a given cluster).
  • Reduced the work the Aggregate EIP does while holding a lock during aggregation, which can lead to improved performance in some use-cases.
  • JndiRegistry now implements all the find methods.
  • VM component now supports multipleConsumers=true across deployment units.
  • Added @PreConsumed to JPA consumer.
  • Added CamelFileName header support to the HDFS producer
  • Like as JpaConsumer now also JpaProducer of the JPA component supports the CamelEntityManager header.
  • Restlet consumer now supports returning custom headers as HTTP headers from the Camel Message.
  • Spring Java Config CamelConfiguration now automagically detects all RouteBuilder instances registered in the Spring context if CamelConfiguration#routes method is not overridden.
  • Added support for transferring custom headers with RabbitMQ component.
  • PGPDataFormat enables stream cache during unmarshaling.
  • FileIdempotentRepository now creates necessary parent directories together with the new repository file.
  • Properties component and property placeholder will now ignore non existing JVM and environment options as well if ignoreMissingLocation is set to true.
  • Improved Stream consumer to enrich the Message with headers about current index / completion flag.
  • Added @BeanInject to inject beans (obtained from the Registry) in your beans such as RouteBuilder classes.
  • Polished the Karaf commands to output tables sorted and auto calculated width, so the data is formatted nicely.
  • Introduced UnitOfWorkFactory to allow end users to use custom UnitOfWork implementations created by the factory.
  • Doing request/reply over JMS allows per individual message requestTimeout value by specifying the timeout value in the "CamelJmsRequestTimeout" header.
  • Quartz and Quartz2 components now enlist the quartz scheduler by default in JMX, unless configured to be disabled.
  • Twitter Component supports to set proxy.
  • Netty HTTP consumer now remembers the raw (not decoded) value of URI query in the "CamelHttpRawQuery" header.
  • Bean Validator component can be now configured to use custom ValidationProviderResolver (CAMEL-7162)
  • TypeConverterRegistry exposes more information in JMX and allows to browse all the registered type converters.
  • Bean Validator component is now shipped with the optional OSGi-friendly HibernateValidationProviderResolver (CAMEL-7168)
  • AMQP has been updated to QPid 0.24 and has been tested using AMQP 1.0.
  • Allow to turn off useOriginalMessage (camelContext.setAllowUseOriginalMessage) which avoids a defensive copy of the incoming original message, which can improve performance; in situations where access to the original message is not needed.
  • Bean Validator component now automatically uses OSGi-friendly ValidationProviderResolver if deployed in the OSGi environment (CAMEL-7212)
  • Threads DSL thread pool options and executorServiceRef option are now mutually exclusive. (CAMEL-7250)
  • Shiro Security now supports access control by roles.
  • Fixed Issues:
  • Fixed an ArrayIndexOutOfBoundsException with Message History when using SEDA
  • Fixed requestTimeout on Netty not triggering when we have received message.
  • Fixed Parameter Binding Annotations on boolean types to evaluate as Predicate instead of Expression
  • Fixed using File consumer with delete=true&readLock=fileLock not being able to delete the file on Windows.
  • Fixed Throttler to honor time slots after period expires (eg so it works consistently and as expected).
  • Fixed getting JMSXUserID property when consuming from ActiveMQ
  • Fixed interceptFrom to support property placeholders
  • Fixed a race condition in initializing SSLContext in Netty and Netty HTTP
  • Fixed using Recipient List, Routing Slip calling another route which is configured with NoErrorHandler, and an exception occurred in that route, would be propagated back as not-exhausted, allow the caller route to have its error handler react on the exception.
  • Fixed Quartz and exception was thrown when scheduling a job, would affect during shutdown, assuming the job was still in progress, and not shutdown the Quartz scheduler.
  • Fixed so you can configure Stomp endpoints using URIs
  • Fixed memory leak when using Language component with camel-script languages and having contentCache=false
  • Fixed Error Handler may log at WARN level "Cannot determine current route from Exchange" when using Splitter
  • Fixed camel-fop to work in Apache Karaf and ServiceMix
  • Fixed HDFS producer to use the configured UuidGenerator when generating split file names to avoid filename collisions
  • Fixed JpaProducer and JpaConsumer of the JPA component to not share/reuse the same EntityManager object which could cause problems if this would occur in the context of multiple/different threads.
  • Fixed HTTP4 to support multiple custom component names in use, each configured using different SSLContext.
  • Fixed Content Based Router using method call's as Predicates if threw an exception, the Content Based Router will call next predicate before triggering Error Handler.
  • Fixed Netty HTTP producer with query parameters may use wrong parameters from a previous call.
  • Fixed Netty producer may cause NullPointerException in messageReceived in client handler, if a Channel was destroyed from the producer pool.
  • Fixed File and FTP consumer(s) when idempotent=true could not detect changed file(s) as a new file, but would regard the file as idempotent.
  • Fixed Stream consumer reading a file using groupLines would not read last group of message if there was not enough lines to hit the threshold.
  • Fixed deleting the done file if File or FTP consumer rollback and the moveFailed option is in use.
  • Fixed avro data format in OSGi not being able to load schema classes.
  • Fixed JMX when using custom beans in routes with @ManagedResource to expose JMX attributes/operations to not include Camel standard attributes/operations from its processors, which would be shown as unavailable in JMX consoles.
  • Fixed Quartz2 simple trigger repeat count default value not working causing the trigger to only fire once, instead of forever.
  • Fixed JMS with a JMSRepyTo header using a topic, was mistakenly used as a queue instead.
  • Fixed CSV to not modify the properties of the strategy constants declared by org.apache.commons.csv.CSVStrategy which would cause side effects when multiple CsvDataFormat objects are concurrently in use.
  • Fixed camel-script may return result from previous evaluation instead of result from current exchange.
  • Fixed ThreadsProcessor to resolve RejectedPolicy from the referenced ThreadPoolProfile (CAMEL-7240)
  • Fixed XmlJson elementName and arrayName properties when setting them from the xmljson(Map) DSL.
  • New Components:
  • camel-hdfs2 - integration with HDFS using Hadoop 2.x client
  • camel-infinispan - to interact with Infinispan distributed data grid / cache.
  • camel-jgroups - provides exchange of messages between Camel infrastructure and JGroups clusters.
  • camel-kafka - integration with Apache Kafka
  • camel-optaplanner - to use OptaPlanner for problem solving plans.
  • camel-splunk - enables you to publish and search for events in Splunk
  • camel-swf - for managing workflows running on Amazon's Simple Workflow Service
  • New Camel Maven Archetypes:
  • camel-archetype-cxf-code-first-blueprint
  • camel-archetype-cxf-contract-first-blueprint
  • New Annotations:
  • @BeanInject
  • New Languages:
  • JSonPath - To perform Expression and Predicate on json payloads.
  • API changes:
  • The interface of http4 org.apache.camel.component.http4.HttpClientConfigurer's method configureHttpClient(HttpClient client) was changed to configureHttpClient(HttpClientBuilder clientBuilder)
  • Added getRegistry(T) to CamelContext

New in Apache Camel 2.12.3 (Feb 28, 2014)

  • Bug:
  • [CAMEL-6717] - camel-mqtt - dead lock when processing fetching/sending messages at high frequency
  • [CAMEL-6822] - camel-facebook - Error when calling endpoint with options from header and configuration bean
  • [CAMEL-6854] - Type conversion between DOMSource and InputStream breaks on Windows
  • [CAMEL-6914] - Camel fails to send messages to IPv6 address with a port number
  • [CAMEL-6922] - XmlConverter cannot convert from ElementNSImpl to Document
  • [CAMEL-6988] - 2.12.1 caches groovy call - resulting with previous caller state
  • [CAMEL-7005] - camel-stream - stream in requires 2 x enter to react in console demo
  • [CAMEL-7011] - Upgrade CXF version to 2.7.7
  • [CAMEL-7016] - JMX - Update route from xml on route mbean should update current route only
  • [CAMEL-7018] - Using custom beans with @ManagedResource shows unavailable standard attributes
  • [CAMEL-7021] - Allow clearing of field 'Name' for upserts in Salesforce component
  • [CAMEL-7025] - StaxConverter throws NPE
  • [CAMEL-7028] - tooling - Using the embedded goal of the Camel Maven Plugin ends up with a NPE
  • [CAMEL-7029] - quartz2 - Simple trigger should repeat forever by default
  • [CAMEL-7031] - RabbitMQ Producer not able to use the default exchange
  • [CAMEL-7035] - camel-core-osgi doesn't properly handle different version of the same bundle
  • [CAMEL-7036] - Camel XSD validation not working with apache xerces
  • [CAMEL-7037] - tooling - Using the embedded and run goals of the Juice Maven Plugin ends up with a NPE
  • [CAMEL-7042] - Graceful shutdown of RabbitMQConsumer requires channel.close()
  • [CAMEL-7044] - We should ignore the rabbitmq.ROUTING_KEY when bridgeEndpoint option is true
  • [CAMEL-7045] - BacklogTracer - dumpTracedMessages should check for route id as well
  • [CAMEL-7049] - Cannot set JMSReplyTo with a topic destination when sending a message to a queue
  • [CAMEL-7052] - PGPDataFormat: Unable to encrypt using subkey
  • [CAMEL-7055] - NullPointerException at FileInputStreamCache.(FileInputStreamCache.java:52) in connection with DataFormat.marshal
  • [CAMEL-7057] - Issue with password having double &&
  • [CAMEL-7058] - camel-sql - Setting SQL_ROW_COUNT header is not updated if the header already exists
  • [CAMEL-7061] - DefaultCxfRsBinding only uses Exchange.getOut()
  • [CAMEL-7062] - Tracer, BacklogTracer and BacklogDebugger should stop/shutdown when Camel does that
  • [CAMEL-7064] - JcrProducer ignores existing nodes and creates invalid node hierarchies
  • [CAMEL-7068] - Flatpack skips 1 row every 2 rows when using split with streaming=true
  • [CAMEL-7069] - Sending an empty soap body message to a generic provider camel-cxf consumer results in NPE
  • [CAMEL-7073] - camel-restlet - request headers are sent in response
  • [CAMEL-7077] - FtpEndpoint createRemoteFileOperations should keep the parameter for next invocation
  • [CAMEL-7087] - StreamCache does not reset at the end of the pipeline
  • [CAMEL-7096] - The ObjectHelper#createIterator utility should properly adhere the java.util.Iterator contract
  • [CAMEL-7100] - CLONE - Camel Splitter eat up exceptions recorded by the underlying Scanner
  • [CAMEL-7102] - Broken JUnit classes for testing authentication in camel-jcr
  • [CAMEL-7107] - camel-sjms NullPointerException in case of connection loss
  • [CAMEL-7111] - Multicast EIP with only one child processor does not call aggregate strategy
  • [CAMEL-7112] - A single call of consumerTemplate.receiveBody consumes more than one messages from a SEDA queue
  • [CAMEL-7116] - JettyHttpProducer.doStop does not stop client thread pool
  • [CAMEL-7120] - NullPointerException on BindyFixedLengthFactory.unbind()
  • [CAMEL-7123] - Enable Xml Transformer security processing feature by default
  • [CAMEL-7125] - tokenizeXml fails when attributes have a / in them
  • [CAMEL-7129] - Remove the CamelXsltResourceUri header from xslt component
  • [CAMEL-7130] - Set XsltBuilder allowStax attribute to be true by default
  • [CAMEL-7132] - QuartzComponent with custom Scheduler and multiple contexts requires JMX to be enabled
  • [CAMEL-7139] - Problem with MvelExpression class visibility between camel bundles
  • [CAMEL-7141] - Custom HeaderFilterStrategy does not work when set it on either component or endpoint uri
  • [CAMEL-7142] - CsvDataFormat unmarshal overwrites delimiter in static CSVStrategy strategies
  • [CAMEL-7143] - camel-groovy - Evaluation returns 1st result only
  • [CAMEL-7145] - Added username, password options on cxf endpoint
  • [CAMEL-7146] - NPE in Aggregator when completionSize = 1
  • [CAMEL-7155] - Incorrect implementation of the method StringHelper.hasStartToken()
  • [CAMEL-7159] - camel-bindy not picking up @Link annotation items
  • [CAMEL-7160] - Throttling has problems with rate changes
  • [CAMEL-7161] - camel-dozer - Can cause dead-lock in init when using spring
  • [CAMEL-7163] - BacklogDebugger - Should not change body/header type to string
  • [CAMEL-7167] - AbstractListAggregationStrategy : at the end of the split, the body is not replaced by the agregated list
  • [CAMEL-7172] - camel-netty - Some options in netty configuration do not support # lookup
  • [CAMEL-7182] - camel-guice - PostConstruct do not throw checked exception
  • [CAMEL-7183] - Failed to validate camel-fop feature
  • [CAMEL-7185] - APT - Should check inherited class/interface for UriParam when scanning
  • [CAMEL-7192] - PGPDataFormat: Sub-Key not supported for signing and correct selection of encryption/signing key via KeyFlag
  • [CAMEL-7198] - [cxfrs] Consumer returns 204 response for simple route
  • [CAMEL-7200] - getComponentDocumentation do not work in OSGi
  • [CAMEL-7202] - Find component names should discover all available components in OSGi
  • [CAMEL-7207] - CxfRsEndpoint should accept in/out interceptors and properties
  • [CAMEL-7209] - NIOConverter.toByteArray return bad data.
  • [CAMEL-7210] - getComponentDocumentation does not work if component name has dash in name
  • [CAMEL-7213] - NIOConverter need to call flip() when we put something into the buffer
  • [CAMEL-7219] - Language endpoint with constant cannot load from classpath
  • Improvement:
  • [CAMEL-5940] - camel-cache - Add option to cache component to easily configure ehcache XML file to load by default
  • [CAMEL-6362] - camel-sjms - Consumers should always use dedicated Sessions
  • [CAMEL-6623] - Support attaching to SQS queues where the user doesn't have permission to list the queues (manually build URL)
  • [CAMEL-6661] - xslt: TransformerException: include href is empty
  • [CAMEL-6689] - ResourceHelper do not work with encoded file pathes
  • [CAMEL-6777] - We are building two different source distributions which should not be the case
  • [CAMEL-6809] - rabbitmq.EXCHANGE_NAME header used in preference to uri exchange name
  • [CAMEL-6838] - JMX Notification Trace Event Handler has no implementation for traceExchangeIn and traceExchangeOut
  • [CAMEL-6973] - Add a simple expression for null
  • [CAMEL-7000] - Avro DataFormat - Should initialize using start|stop logic instead of at runtime
  • [CAMEL-7001] - Avro DataFormat - Classloading issue with loading schema
  • [CAMEL-7002] - PGPDataFormat: restrict verifying public keys and allow several signatures
  • [CAMEL-7014] - Potential problem with camel-restlet if unavailable
  • [CAMEL-7020] - Make camel servlet related components deployable on OSGi with servlet 3.0
  • [CAMEL-7026] - camel-jms - Allow a message to control the request timeout using a header
  • [CAMEL-7034] - camel-quartz - Should auto assign scheduler instance name with camel management name
  • [CAMEL-7046] - Base64DataFormat: enable streaming if streamCache=true
  • [CAMEL-7066] - Unable to use Twitter Camel Component with proxy settings
  • [CAMEL-7067] - JcrProducer should not store all exchange properties in the target JCR node
  • [CAMEL-7072] - Veracode compliance. Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection') (CWE ID 470) in AnnotationTypeConverterLoader
  • [CAMEL-7075] - Veracode compliance. Improper Resource Shutdown or Release (CWE ID 404) in FileInputStreamCache
  • [CAMEL-7076] - spring-event should not be auto enlisted
  • [CAMEL-7078] - camel-cxf-transport component should propagate SecurityContext
  • [CAMEL-7079] - Improvements to camel-shiro's ShiroSecurityProcessor
  • [CAMEL-7080] - Add support of lazy load to csv data format
  • [CAMEL-7082] - Supporting to set more work thread in camel-restlet component
  • [CAMEL-7083] - Log a warning when default encryption keys used
  • [CAMEL-7086] - Allow multiple Zookeeper servers in endpoint
  • [CAMEL-7088] - Veracode compliance. Improper Resource Shutdown or Release (CWE ID 404) in FileLockExclusiveReadLockStrategy
  • [CAMEL-7099] - csv data format - Make use of buffered I/O while unmarshalling
  • [CAMEL-7103] - camel-quartz - Store trigger information in job map
  • [CAMEL-7109] - Attachments are not correctly ordered
  • [CAMEL-7113] - Ignored InterruptedException in IdGenerator
  • [CAMEL-7117] - JettyHttpProducer.client._threadPool contains non-daemon threads only
  • [CAMEL-7119] - AggregationStrategies - Add useOriginal
  • [CAMEL-7122] - javascript language not resolving
  • [CAMEL-7131] - Set some default feature of DocumentFactoryBuilder
  • [CAMEL-7134] - camel-twitter supports to configure if using SSL or not
  • [CAMEL-7137] - camel-salesforce - Make it easier to configure in blueprint
  • [CAMEL-7140] - camel-quartz - loading properties file should support file path
  • [CAMEL-7150] - Provides options to setup the parameter on the WebSocketServlet
  • [CAMEL-7154] - InterceptSendToMockEndpointStrategy - easier to add custom logic
  • [CAMEL-7164] - TypeConverterRegistry - More JMX details
  • [CAMEL-7176] - camel-vertx - Should support async request/reply
  • [CAMEL-7177] - camel-vertx - Should allow to use clustered and non clustered vertx
  • [CAMEL-7181] - Propagate the attachments information when the CXF endpoint is POJO and disable the MTOM
  • [CAMEL-7186] - Add @UriParam to components in camel-core
  • [CAMEL-7187] - apt document generator - OSGi split package issue when writing to same package
  • [CAMEL-7188] - ManagedCamelContext - Find component names doesnt work
  • [CAMEL-7195] - Default ehcache.xml configure from camel-cache jar should not rely on multicast
  • [CAMEL-7203] - DefaultUnitOfWork - Optimize to only do defensive copy if useOriginalMessage is enabled
  • [CAMEL-7205] - camel-twitter - Add JMX operations so users can see/change configuration at runtime
  • [CAMEL-7208] - ManagedCamelContext - addOrUpdateRoutesFromXml should support decoding xml
  • [CAMEL-7215] - Stop and un-schedule jobs on removal of route
  • New Feature:
  • [CAMEL-6868] - camel-rabbitmq- Support clustered brokers using multiple addresses when calling ConnectionFactory
  • [CAMEL-6993] - Use varargs in PredicateBuilder
  • [CAMEL-7022] - UnitOfWorkFactory - for spi to allow users to plugin custom uow classes
  • [CAMEL-7023] - Add hawtio goal to camel plugin
  • [CAMEL-7101] - Add aggregation strategy to aggregate multiple messages into a zip file
  • [CAMEL-7105] - Add ability to send html emails and auto reconnect for sqs queues
  • Task:
  • [CAMEL-7032] - Align the netty version of camel components
  • [CAMEL-7065] - Disable generate manul build by using profile fastinstall
  • [CAMEL-7093] - Veracode compliance. Improper Resource Shutdown or Release (CWE ID 404) in QuartzComponent
  • [CAMEL-7098] - csv data format - Simplify and clean-up the unmarshalling logic
  • [CAMEL-7170] - Upgrade to CXF 2.7.10
  • [CAMEL-7216] - Upgrade to xstream 1.4.7
  • [CAMEL-7223] - camel-solr - Avoid using hard-coded ports for the unit-tests
  • Wish:
  • [CAMEL-6984] - Add support to obtain message body size w/o a separate processor
  • [CAMEL-7006] - Make method asService protected in class CamelBlueprintTestSupport
  • [CAMEL-7184] - Improve camel-quickfix component to lazy create its engine on demand

New in Apache Camel 2.12.2 (Nov 28, 2013)

  • Bug:
  • [CAMEL-5376] - Mail component does not work as expected (Email Deletion is partially broken et Disconnect does not work well)
  • [CAMEL-5510] - Competing Consumers fails for jms queue using AdviceWith
  • [CAMEL-5883] - File consumer - When using done file name then delete the file when batch is complete
  • [CAMEL-6018] - camel-ftp module loses starting characters of path for root dir logins
  • [CAMEL-6086] - Unmarshal from ActiveMQ yields warning if message has been marshalled before enqueue and contains BigDecimal or BigInteger
  • [CAMEL-6093] - Multiple consumers exists on the same JMS endpoint uri and if you remove a consumer the other active consumers do not receive any messages anymore.
  • [CAMEL-6187] - http4 component should default to charset based on content type
  • [CAMEL-6250] - Setting id on endpoint in may not work
  • [CAMEL-6254] - Sftp changeCurrentDirectory doesn't work for some combinations of state
  • [CAMEL-6291] - can't be reused in multiple contexts when propertly placeholder resolution is used
  • [CAMEL-6309] - Sftp upload to subdirectory does not work if home directory is root ("/" or "\")
  • [CAMEL-6335] - Sftp cannot change to parent directory in a stepwise fashion
  • [CAMEL-6436] - camel-rss and camel-atom - Should includes feeds with same pub timestamp as it okay
  • [CAMEL-6440] - loss of data on xpath after cxf (payload-mode)
  • [CAMEL-6441] - Exception in service start (when before start it was in stopped state) leaves service in starting state
  • [CAMEL-6443] - camel-quickfix - Engine that could not start (e.g. because of store creation problems) is still stored in the engiens map, thus making futher starts problematic
  • [CAMEL-6447] - endChoice() has no effect in nested choice definition
  • [CAMEL-6452] - FileUtil.getDefaultTempDir() causes a classloader leak in webapps
  • [CAMEL-6459] - ReplyManager holds a reference to the first calling Bundle classloader
  • [CAMEL-6461] - camel-quartz - Stateful job - Redeploying bundle/war and having changed endpoint uri issue
  • [CAMEL-6501] - camel-cxf-transport's blueprint/camel.xsd xml schema is invalid
  • [CAMEL-6504] - org.apache.camel.main.Main#doStop() throws java.lang.IndexOutOfBoundsException
  • [CAMEL-6524] - camel-test-blueprint - Using isMockEndpointsAndSkip doesnt work
  • [CAMEL-6538] - NPE in validator component if no classpath prefix
  • [CAMEL-6541] - DefaultUnitOfWork's headers for the original message are the same object as the in message headers
  • [CAMEL-6544] - StringQuoteHelper should skip the separate character
  • [CAMEL-6546] - Installation of camel-mybatis feature fails
  • [CAMEL-6547] - Installation of camel-leveldb feature fails
  • [CAMEL-6548] - XQueryBuilder will override any saxon Configuration provided
  • [CAMEL-6557] - AbstractListAggregationStrategy does not work with batch completion strategy
  • [CAMEL-6560] - [JDBC Component] ResultMetaData as a header value - IndexOutOfBoundsException
  • [CAMEL-6561] - Inserting JSON like data with sql component cause a java.lang.StackOverflowError
  • [CAMEL-6569] - xslt component with saxon=true does not work in OSGi
  • [CAMEL-6571] - Wrong InputStream reference is used in method storeFile of class ScpOperations
  • [CAMEL-6572] - Validator component - Loading resource on classpath with relative paths doesnt work in OSGi
  • [CAMEL-6573] - adjust to the changed behavior in ehcache's CacheManager instance creation
  • [CAMEL-6576] - Fix a potential NPE
  • [CAMEL-6585] - camel-cxf should shutdown the bus when the endpoint is stopped.
  • [CAMEL-6586] - JMX - browsable endpoints such as seda has some attributes listed as unavaiable
  • [CAMEL-6592] - Invalid javadoc for org.apache.camel.spi.ShutdownStrategy#setTimeout
  • [CAMEL-6593] - Predicates from java dsl are not dumped to xml correctly
  • [CAMEL-6595] - camel-cmis component: test packages have the wrong name
  • [CAMEL-6602] - camel-cxf ClassCastException when use cxf FailoverFeature
  • [CAMEL-6604] - Routing slip and dynamic router EIP - Stream caching not working
  • [CAMEL-6605] - Custom HttpClientConfigurer makes Basic Authentication and Proxy settings ineffective
  • [CAMEL-6606] - When restart camel, lucene index folder always by empty
  • [CAMEL-6607] - Tokenize XML does not support child elements with names similar to their parent
  • [CAMEL-6609] - CXF FailoverFeature does not take effect when camel-cxf producer uses async invocation
  • [CAMEL-6610] - Always got IndexOutOfBoundsException when customized id of wireTap component
  • [CAMEL-6614] - quartz consumer - Suspend and resume does not work
  • [CAMEL-6625] - potential NPE in CxfConsumer if the PAYLOAD not match the ServiceModel
  • [CAMEL-6626] - Search critera for toSentDate throws NPE
  • [CAMEL-6627] - Splitter should close iterator if there was an exception and stopOnException enabled
  • [CAMEL-6630] - Validation using JAXB format is not thread safe
  • [CAMEL-6641] - SJMS component throws class cast error when used with IBM Webshpere MQ
  • [CAMEL-6656] - spring-batch - Looses headers
  • [CAMEL-6667] - Loop EIP doesn't honour copy option in some circumstances
  • [CAMEL-6684] - camel-cxf RAW message data format doesn't support MTOM
  • [CAMEL-6687] - Using simple language OGNL expressions doesn't work for Bean Binding when a field is null
  • [CAMEL-6690] - Memory leak SoapOutInterceptor.writeSoapEnvelopeStart with security headers
  • [CAMEL-6691] - seda - queue size compare should use equals
  • [CAMEL-6695] - mbeansRegistered in DefaultManagementAgent isn't ThreadSafe
  • [CAMEL-6696] - camel-cxf should not setup the holder and wrapperClass interceptors in CXF_MESSAGE data format
  • [CAMEL-6699] - camel-blueprint - Using routeContextRef to refer to a RouteBuilder in another bundle causes ClassCastException
  • [CAMEL-6700] - camel-blueprint - Using and referrring to SSLContextParameters with property placeholders can lead to CircularDependencyException
  • [CAMEL-6702] - camel-http4 - In bridge mode should use noop cookie store to not eat memory
  • [CAMEL-6703] - camel-mail - Folder is not open
  • [CAMEL-6726] - Camel-Redis: Serializer passed through URI is used only on consumer
  • [CAMEL-6730] - camel-netty - RequestTimeout should not trigger if we read data
  • [CAMEL-6740] - System property org.apache.camel.jmx.createRmiConnector is ignored with spring xml
  • [CAMEL-6743] - Using @Simple (or others) bean parameter binding for boolean type should eval as predicate
  • [CAMEL-6750] - readLock=fileLock causes GenericFileOperationFailedException
  • [CAMEL-6752] - Bean binding to covariant methods throws AmbiguousMethodCallException
  • [CAMEL-6753] - org.jboss.weld.exceptions.DefinitionException: WELD-001106 BeanAttributes.getStereotypes() returned null for org.apache.camel.cdi.internal.CamelContextBean@19acc826
  • [CAMEL-6757] - scp task does not respect StrictHostKeyChecking option
  • [CAMEL-6758] - Null Pointer exception when removing SjmsComponent
  • Improvement:
  • [CAMEL-6091] - Improvement to SqlProducer class
  • [CAMEL-6393] - Making header propagation from cxf to camel consistent
  • [CAMEL-6408] - cxf endpoint's should log the parsing exception when failing to extract the root element name
  • [CAMEL-6466] - Log component URI parameters should be able to override custom formatter properties
  • [CAMEL-6471] - CxfPayload - Dont output the body in toString if streaming mode
  • [CAMEL-6505] - GenericFileMessage should override copy() method
  • [CAMEL-6553] - bean component - Avoid WARN logging for not finding class when invoking a bean with constant values
  • [CAMEL-6556] - classpath problem with camel:run and provided dependencies
  • [CAMEL-6559] - script builder synchronized the operation of evaluateScript
  • [CAMEL-6570] - CLIENT_CREATED event can't be sent in the CXFEndpoint.createClientFactoryBean()
  • [CAMEL-6580] - camel-jms - Dont allow CACHE_NONE for replyToCacheLevelName for temporary queues
  • [CAMEL-6583] - camel-jms - Add option to include optional JMSX properties in binding to Camel message
  • [CAMEL-6590] - Restlet header warnings
  • [CAMEL-6591] - SFTP endpoint fails if the server disconnected the socket
  • [CAMEL-6611] - camel-netty-http - If sending a plain request to SSL then we should send back nice error response
  • [CAMEL-6615] - Upgrade to XML-Security 1.5.5 + enable secureValidation
  • [CAMEL-6619] - Ignore line breaks in camel-xmlsecurity component
  • [CAMEL-6629] - Add requestBufferSize and requestHeaderSize options for jetty
  • [CAMEL-6637] - BeanIO Data Format logs at WARN level for conditions ignored in configuration
  • [CAMEL-6639] - SimpleLanguage.simple should detect if its a predicate and use that instead
  • [CAMEL-6642] - Allow to configure a custom ExpressionResultComparator for resequencer eip in xml
  • [CAMEL-6651] - Calling processAnnotations when using the XStreamDataFormat's aliases are set
  • [CAMEL-6653] - Support to set preferredAuthentications on SFTP
  • [CAMEL-6655] - SMPP - add support of Vendor Specific Optional Parameter
  • [CAMEL-6674] - Add allowNull option to @Converter to allow type converters to return null as valid response for special use-cases
  • [CAMEL-6678] - Throttler does not honor time slots after period expires
  • [CAMEL-6680] - Simple language - Have singleton language for better performance
  • [CAMEL-6682] - mvel language - Compiling script in OSGi may have issue with TCCL class loader
  • [CAMEL-6697] - camel-test-blueprint - Allow to register custom services in OSGi registry before Camel starts
  • [CAMEL-6722] - binding component - Should start/stop its child services
  • [CAMEL-6724] - RegistryBean - Should avoid synchronized to getBean faster
  • [CAMEL-6734] - Introduce CamelFileNameConsumed Header
  • [CAMEL-6748] - CVE-2013-4330: Skipping Header Evaluation
  • [CAMEL-6760] - camel-test-blueprint - Possibility to configure Camel Context creation timeout
  • [CAMEL-6764] - camel-jms - Add workaround for AMQ to get JMSXUserID
  • [CAMEL-6766] - InterceptFrom - Add support for using property placeholders
  • [CAMEL-6780] - Binding component - Avoid duplicate prepare
  • New Feature:
  • [CAMEL-6603] - Long Date TypeConverter
  • [CAMEL-6681] - Configurable LockType for JpaConsumer
  • Task:
  • [CAMEL-6500] - camel-cdi - Deployment failure on Glassfish 4.0
  • [CAMEL-6531] - Upgrade org.mvel:mvel2 to 2.1.6.Final
  • [CAMEL-6532] - Upgrade org.beanio:beanio to 2.0.6
  • [CAMEL-6533] - Upgrade org.apache.openejb:openejb-core to 4.5.2
  • [CAMEL-6578] - Upgrade CXF to 2.7.6 / 2.6.9
  • [CAMEL-6587] - Cannot build camel with maven 3.1
  • [CAMEL-6704] - saxon 9.4.0.4 no longer in central - use 9.4.0.7
  • Test:
  • [CAMEL-6633] - Add some ws-spec tests to blueprint cxf tests

New in Apache Camel 2.12.0 (Sep 9, 2013)

  • New and Noteworthy:
  • 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), 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 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 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 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.
  • 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 for the Aggregate 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 Consumers such as File, and FTP now supports using custom scheduler. Providing a new Quartz2, and Spring based out of the box, that allows to use CRON based scheduler.
  • Polling Consumers such as File, and FTP now supports backoff, to let the consumer be less aggressive, when there has been no messages to poll, or errors keeps occurring for a while.
  • Added support for XML Encryption 1.1 algorithms in the XMLSecurity data format. It is now possible to specify stronger digest algorithms when using RSA OAEP Key Transport algorithms.
  • Netty consumer now unbinds/binds the acceptor when the route is suspended/resumed.
  • EIPs supporting AggregationStrategy such as Aggregate, Splitter, Content Enricher now supports using a POJO as the AggregationStrategy, which allows to implement the aggregate logic with no Camel API dependency. See more details at the Aggregate page.
  • camel-jpa upgraded to use native JPA API instead of Springs deprecated JpaTemplate
  • Improved validation of routes being misconfigured on startup, when using onException, onCompletion, transacted, etc. as they must be configured as top-level on the route (eg in the start), and not later (such as nested in a Splitter).
  • Added new @PropertyInject annotation to inject property placeholders to POJOs
  • New class org.apache.camel.util.toolbox.AggregationStrategies as a starting point to obtain commonly used Aggregation Strategies for Multicast, Splitter, Aggregator, etc. EIPs.
  • New FlexibleAggregationStrategy serving as a one-stop to perform typical aggregation strategy logic out-of-the-box: filtering results, storing them in properties, headers or bodies, as a list, casting results, etc.
  • Improved performance when doing Bean method calls using Simple OGNL calls
  • Improved Dozer Type Conversion to work better with OSGi Blueprint (though Dozer 5.5 may be required to work even better)
  • JMS now also enlists topic destinations as managed endpoints in JMX
  • Graceful Shutdown now allows to suppress logging after CamelContext has been stopped, due to a timeout hit, and there may still be inflight Exchanges that may afterwards be rejected being executed and causing WARN logs; which now can be suppressed.
  • Made it easy to add custom services on startup when testing with Blueprint Testing.
  • XML Signature support via the XML Security component.
  • Fixed Issues:
  • Fixed setting .id in Java DSL on some EIPs 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 .
  • All Camel Components will configure their consumers when being created to ensure you can configure from URIs with consumer. as prefix.
  • Fixed QuickfixJEndpoint 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 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 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.
  • Fixed endChoice() in Java DSL to work when being nested in parent Content Based Router(s)
  • Fixed Lucene to reuse existing index directory if Camel is being restarted etc.
  • Fixed using to not share the routes when using multiple , but each have their own route instances to not cause side-effects between the CamelContexts.
  • Fixed using type converter from NodeList -> Node
  • Fixed having 2+ routes from the same JMS queue, not stop the endpoint if there are still active listeners when a route is stopped.
  • Fixed SEDA when using queueSize not able to identify its same queue size, when using multiple SEDA endpoints for the same queue name/size.
  • Fixed using in OSGi Blueprint when referring to a RouteBuilder from another bundle, exposed in the OSGi service registry.
  • Fixed OSGi Blueprint in some situations causing a CircularDependencyException when using Camel namespaces outside a , being referred from inside the .
  • Fixed HTTP4 in bridge mode to not store cookies, which otherwise would eat up memory.
  • New Components:
  • camel-core - A Camel DataFormat Component for working with Data Formats as if it was a regular Component supporting Endpoints and URIs.
  • camel-disruptor - SEDA behavior using the ultra-fast LMAX Disruptor library.
  • camel-geocoder - For looking up geocodes (latitude, longitude) for a given address, or reverse lookup with Java API for Google Geocoder
  • camel-leveldb - Added docs for this component.
  • camel-mustache - For templating using Mustache
  • camel-mvel - For templating using MVEL
  • camel-netty-http - HTTP component using Netty as transport
  • camel-quartz2 - For scheduling using the Quartz 2.x scheduler
  • camel-sap-netweaver - For integration with SAP NetWeaver Gateway
  • camel-stomp - For communicating with Stomp compliant message brokers, like Apache ActiveMQ or ActiveMQ Apollo
  • camel-vertx - For working with the Vertx EventBus.
  • camel-weather - For polling weather information from Open Weather Map
  • camel-yammer - Allows you to interact with the Yammer enterprise social network
  • camel-rabbitmq - Allows you to interact with the RabbitMQ.
  • camel-xmlsecurity - Support for the XML Signature specification.
  • New DSL:
  • New fluent builder for Aggregation Strategies: org.apache.camel.util.toolbox.AggregationStrategies.
  • New Annotations:
  • @PropertyInject
  • New Examples:
  • MyBatis Example
  • Netty HTTP Server Example
  • camel-example-jdbc - An example using JDBC component with an embedded database
  • camel-example-restlet-jdbc - An example using Restlet and JDBC with an embedded database
  • 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
  • Added allowNull method to org.apache.camel.TypeConverter
  • Added hasTimeoutOccurred() method to ShutdownStrategy

New in Apache Camel 2.11.0 (Apr 29, 2013)

  • New and Noteworthy:
  • Camel RX provides a typesafe and composable API for working with asynchronous events from camel endpoints using Reactive Extensions using the RxJava library
  • Added Binding support, so it is easy to combine things like a Data Format to an Endpoint for easier composition of routes.
  • 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 and FTP components.
  • Made changed read lock strategy on FTP 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, and FTP 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 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 @.
  • 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 Components create Endpoints. This gives component writers full power in case their component has special syntax/notation for endpoint uri configurations.
  • EIPs 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
  • The Netty producer scales up and down much better by leveraging a channel pool.
  • Added new Camel Maven Archetypes for creating Camel and Groovy applications.
  • Added a Groovy DSL that allows to use Groovy closures and Groovy XML parsing in routes.
  • Camel now injects CamelContext on Language and DataFormat that implements CamelContextAware
  • Thread pools in Camel with maximumQueueSize of 0 or negative will now not use a worker queue but do direct hand-over to thread instead.
  • Simple unary operators for inc and dec must now have function on left hand side, to be parsed as unary function. Otherwise its now regarded as literal.
  • Custom assigned id's on Camel Routes is now validated on starting the routes, that they must be unique within the same CamelContext.
  • Added AbstractListAggregationStrategy abstract class to make it easier to aggregate into a List using a custom AggregationStrategy.
  • EIPs which support using AggregationStrategy now control the lifecycle of the strategy; allowing end users to do custom logic in the start/stop methods of their strategy implementation.
  • Added option includeSentJMSMessageID to JMS to allow to enrich Camel Message with the actual JMSMessageID for the sent message. Can be used by end users for logging purpose etc.
  • Added option allowShortLines and ignoreExtraColumns to Flatpack data format.
  • Mail consumer now supports using search terms to filter mails by terms such as subject, from, body, sent date etc.
  • The cached script file in the Language component can now be cleared via JMX.
  • improved the karaf context-info command by adding a verbose mode to view endpoints list (now hidden by default) and adding stats on the number of active/inactive routes
  • Added support for UpdateList, DeleteList and ExecutorType to MyBatis component.
  • Added support for easier configuration of using concurrent message listener consumer when doing request/reply over JMS, by leveraging the existing concurrentConsumers and maxConcurrentConsumers options.
  • Improved the SMPP consumer to expose more data by receiving a DeliverSM message, including the optional parameters.
  • Camels property placeholders can now be used in route id / node id's in the routes in XML and Java DSLs, eg
  • The thread name pattern can easily be configured on with the new threadNamePattern attribute
  • Camel now validates SEDA and VM endpoints using same queue name, that if any queue size is in use, that size must match. As well Camel logs at INFO level when starting up the queues and the sizes. This allows end users to easily spot any issues if mistakenly using different queue sizes for the same queue names.
  • Added JMX operations to throughput logger so you can get stats and also reset the stats at runtime.
  • Added ACL support on the AWS-S3 component.
  • Allow to configure Jetty http client thread pool settings in uri to make it easier to have different settings per endpoint.
  • Added support for implied decimal formats to Bindy
  • Added option backlog to Netty which can be used to allow more concurrent clients to connect to a Netty consumer.
  • Added support for parsing CSV if a field has a ' (single quote) at it's beging
  • Added support for using custom url rewrite plugins in HTTP, HTTP4, and Jetty producers, which gives more control of url mappings, such as when bridging/proxying http based routes. Provided camel-urlrewrite as out of the box implementation.
  • Improved the Spring-Integration consumer to also send back the message headers.
  • The Camel Guice component has been upgraded to latest Guice 3.0, and no longer dependent on Guice extension project guiceyfruit.
  • ReplyTo Temporary Queue now refreshed when the underlying JMS Connection fails.
  • When processing an Exchange fails, the failed route id is available for end users. See details at Dead Letter Channel.
  • When using XSLT includes will use same file or classpath loading as endpoint configuration, if not explicit configured.
  • Now Camel Transport for CXF supports to configure with blueprint.
  • SQL Component now supports named parameters in the queries.
  • SQL Component now supports Batch Consumer to consume data; for example to pickup new rows being inserted into a table. As well having queries being execute after each row has been processed, such as deleting/marking the row as processed.
  • JDBC based aggregation repository now allows to store message body and headers as text in individual columns. This makes the data human readable, as by default the data is stored as binary.
  • File consumer will on first poll run the check to delete old orphaned lock files. As opposed to before where this happened during startup of Camel itself; which could delay starting Camel if the delete process takes a long time.
  • File and FTP can now use a custom idempotent key with the built-in idempotent consumer. For example you can now use both the file name and size as key.
  • File and FTP producers support the CamelOverruleFileName header as a use once and discard header to overrule and use as filename for writing; while preserving the original filename in the CamelFileName header.
  • The Languages and Language component can now load the script from external resource using "resource:scheme:location" syntax.
  • HDFS producer without a split strategy will now close file stream after writing. You can use the CamelHdfsClose header to explicit to control if to close file stream or not.
  • Simple language now has type function to refer to a type, enum or constant field.
  • Using allowRedeliveryWhileStopping=false on Dead Letter Channel now moves the message to the DLC (when stopping) instead of rejecting the message.
  • Unit testing with Blueprint Testing is now easier to override Blueprint property placeholder values from both external .cfg files, as well from placeholders defined directly in the XML file. See further details at Using PropertyPlaceholder page.
  • Bindy FixedLengthRecord is improved with support for header and footer records, delimited fields, and field lengths defined within a record.
  • Added transacted option to Hazelcast SEDA consumer to use Hazelcast transaction.
  • Improved performance of Simple and Bean language when using OGNL expression, by leveraging an internal cache to avoid introspecting the same types over and over again.
  • Camel now validates better when using Try Catch Finally in the routes has been configured properly.
  • Added Karaf commands for using the BacklogTracer when running Camel application in a Apache Karaf container.
  • The VM component can now safely communicate Camel Contexts residing in different bundles in an OSGi environment, as the issue leading to an incoherent state when restarting one of the bundles has been fixed.
  • Made it easy to use Saxon as the transformer with the XSLT component.
  • Improved AWS to not only support the Amazon provided clients for accessing the services.* Improved AWS to not only support the Amazon provided clients for accessing the services.
  • Added multiple consumers support to Guava EventBus endpoints.
  • Added support for listener interfaces to Guava EventBus in order to provide better DeadEvent handling.
  • Made it easier to configure options such as passwords on Camel endpoint URIs and use the value as is, using the new RAW token. See more details at How do I configure endpoints
  • Improved Flatpack and Flatpack DataFormat to allow short lines and ignore extra columns.
  • Fully customize the output of the Log component by providing a custom ExchangeFormatter.
  • You can now configure more options on GSON Data format, for example field mapping strategies.
  • Simplified consuming REST requests with CXFRS with the Simple Binding Style.
  • Improve JAXB to support validation by marshaling/unmarshaling objects from/to XML.
  • Improved org.apache.camel.spring.spi.BridgePropertyPlaceholderConfigurer to support both Camel and Spring property placeholder syntax in the .properties files.
  • New Karaf commands for using the BacklogTracer as well for profile routes.
  • 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 now working with Aggregate 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.
  • Unhandled exceptions occurred during routing from SMPP routes is now propagated back to the SMPP library to deal with.
  • Fixed Restlet parsing of last modification date header to use RFC-2822 date pattern.
  • Fixed Aggregator EIP when using completion size expression and fixed size together not working as expected.
  • Fixed Crypto to close streams after usage, which otherwise could prevent deleting files on Windows, which tend to lock files if a stream is open.
  • Fixed issue with Groovy language in OSGi
  • Fixed issue with localWorkDirectory option on FTP not using the optimization to try to rename the work file when routing to a File endpoint.
  • Fixed SMPP to use the right data coding by using Octet unspecified (8-bit binary) and using the specified alphabet from the exchange, if provided.
  • Fixed issue with configuring Jetty component using a name other than "jetty".
  • Fixed issue with request/reply over JMS where a route is used on "the other end" to process the request and send back the correlated reply message; where a Camel route is used which has only 1 output, which can lead to no reply message being sent.
  • Fixed regression in AWS-SQS by updating the existing queue without any attributes.
  • Fixed issue with Using PropertyPlaceholder in Expressions in routes which are using or .
  • Fixed issue with Splitter which swallow the IOException catched by the underlying Scanner.
  • Fixed issue with Splitter where tokenizeXML would not split XML messages containing nodes with namespace prefixes.
  • Fixed issue when using Jetty component would create a http client having a live thread pool, which is only needed if using producers of Jetty. Also improved handling lifecycle of clients to be per producer by default instead of shared, which otherwise can cause issues.
  • Fixed issue with File and FTP consumers when using doneFileName then avoid picking up files in middle of group if done file is written during scanning.
  • Fixed issue with File and FTP consumers when using doneFileName may produce too many WARN logs about cannot delete doneFileName.
  • Fixed issue with Temporary Queue ReplyTo destination being recreated every time a new multiple concurrent consumer was initialised (JMS component).
  • Fixed issue with XSLT was not using custom assigned UriResolver to load the initial xslt resource, but only for other included resources.
  • Fixed issue when Using PropertyPlaceholder with OSGi blueprint and using Jasypt for decrypting placeholders at the same time.
  • Fixed JMX component to work in OSGi if output is XML.
  • Fixed Aggregator to not check for timeout if completion size expression was in use, and not completed yet.
  • Fixed issue with possible to have negative in-flight counts when using Content Enricher, Bean or annotation DSL under certain conditions.
  • Fixed issue with Quartz consumer may not work if being configured to trigger with days apart causing its endpoint to be evicted from Camel's endpoint cache.
  • Fixed issue with Karaf then Camel applications will not properly restart, if using blueprint-cm to reload bundle due .cfg file change.
  • Fixed a race condition in Aggregate eip when recovery is enabled and a in progress exchange was completed after the recovery scan was executed, and before the recover task kicks in.
  • Fixed using endpoint reference options in URIs (eg #beanName) to use the class type of the setter method to support looking up beans from the OSGI Service Registry.
  • Fixed Simple language when using bean function to support specifying parameter values containing comma not being parsed into multiple parameter values.
  • Fixed Aggregate eip when using completionFromBatchConsumer combined with other completions.
  • Fixed pairs of VM producer-consumer disconnecting when the containing bundle was restarted in an OSGi environment.
  • Fixed service shutdown logic which could potentially execute several times, putting the system in an incoherent state.
  • Fixed so the preMove option on File and FTP consumers is now run after the file read lock has been acquired.
  • New Enterprise Integration Patterns:
  • ControlBus EIP
  • New Components:
  • ControlBus Component - for easy management using a component supporting the ControlBus EIP
  • camel-aws - New component to AWS for sending metrics to Amazon CloudWatch from Camel.
  • camel-cmis - for integration of CMIS compliant content repositories
  • camel-couchdb - for integration with Apache CouchDB
  • camel-elasticsearch - for ElasticSearch integration
  • camel-rx - provides a typesafe and composable API for working with asynchronous events from camel endpoints using Reactive Extensions using the RxJava library
  • camel-servletlistener - for bootstrapping Camel in web applications, without the need for Spring Framework etc.
  • camel-sjms - for "Springless" JMS integration
  • camel-spring-ldap - for LDAP integration using the Spring LDAP template offering more functionality than existing LDAP component.
  • camel-spring-redis - for talking to Redis key-value store.
  • camel-urlrewrite - for bridging http endpoints and using the UrlRewriteFilter project to control url mappings.
  • camel-xmlrpc - for talking to xmlrpc server from Camel.
  • DSL Changes:
  • Added LoggingErrorHandler fluent builder to Scala DSL.
  • New Data Formats:
  • camel-base64 - support base64 encoding and decoding.
  • camel-xmlrpc - support to marshal and unmarshal the request and response of xmlrpc.
  • camel-zipfile - support to Zip files containing a single entry.
  • New Languages:
  • VTD-XML - for fast and efficient XPath evaluation/splitting using the VTD-XML Library. camel-vtdxml hosted at Camel Extra
  • New Examples:
  • ActiveMQ Camel Tomcat example shows how to embed Apache ActiveMQ and Camel in a web application running on Apache Tomcat.
  • FTP Example shows how to use Camel to upload or download files to/from an existing FTP server.
  • Hibernate Example shows how to work with Hibernate to exchange data using a shared database table.
  • Servlet Tomcat No Spring Example example shows how to run Camel as a web application in any web container such as Apache Tomcat, without the need for Spring Framework.
  • SQL Example shows how to work with SQL to exchange data using a shared database table.
  • 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 Components 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.
  • Added support to parse CSV if a field has a ' (single quote) at it's beging, this made camel-csv doesn't support the field which is quoted with ' (single quote) or "(double quote) at the same time.
  • Internal/Non API refactorings that may affect users:
  • The Camel Test Kit 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.
  • Removed org.apache.camel.model.NodeFactory as its no longer applicable.
  • Added getCamelContext() methods to ProducerTemplate, and ConsumerTemplate
  • The method isMatched on GenericFileConsumer is now abstract and has an extra parameter.
  • The Camel Test Kit removed the support of JUnit3, please use JUnit4 version instead.
  • The method prepareOnStartup on org.apache.camel.component.file.GenericFileProcessStrategy is now executed on first poll instead of starting the route; as if the job takes a long time, it will block Camel from starting other routes. If the job takes more than 1 second to run then its logged at INFO level so people can easier spot if the task takes a longer time, than usual.
  • HDFS producer without a split strategy will now close file stream after writing. You can use the CamelHdfsClose header to explicit to control if to close file stream or not.
  • The type for file last modified header is changed from java.util.Date to long
  • Removed class org.apache.camel.component.gae.context.GaeSpringCamelContext from camel-gae
  • Using allowRedeliveryWhileStopping=false on Dead Letter Channel now moves the message to the DLC (when stopping) instead of rejecting the message.
  • When using Spring with Camel, then Camel will now lookup in Spring's ancestor application contexts as well, when using the Registry
  • The JMX MBean name for the Tracer has removed the identity hash code, eg org.apache.camel:context=localhost/camel-1,type=tracer,name=Tracer(0x548bb8b2) is now named org.apache.camel:context=localhost/camel-1,type=tracer,name=Tracer.
  • The XSLT component will now fail if the {{transformerFactoryClass} cannot be loaded on the classpath, instead of logging a WARN.
  • The SQL producer will only access the message body if there is query parameters to prepare in the SQL to execute (eg using ? or :name).
  • The preMove option on File and FTP consumers is now run after the file read lock has been acquired.
  • Important changes to consider when upgrading:
  • Spring 3.0.x support is @deprecated and some of the camel-spring components require Spring 3.1 onwards.
  • Apache Camel Karaf features now uses Spring version range "[3.1,4)" as Spring 3.1 is now required as minimum Spring version.
  • 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.
  • camel-netty now requires commons-pool as dependency.
  • The maximumQueueSize of Thread Pools and Thread Pool Profiles with values 0 or negative now means disable the worker queue, and use direct-handover. If you want an unbounded queue size, then set the maximumQueueSize to Integer.MAX_VALUE which was what the previous code did.
  • Custom assigned id's on Camel Routes is now validated on starting the routes, that they must be unique within the same CamelContext.
  • camel-blueprint now requires Apache Aries 1.0, and OSGi 4.3.0.
  • Removed @deprecated classes form camel-spring in the org.apache.camel.component package which was causing split-package issue with OSGi. Component authors who are using these @deprecated classes, should migrate to use equivalent classes from camel-core in the same package.
  • The default Spring version is upgraded from 3.0.7 to 3.1.3 out of the box.
  • Camel now validates SEDA and VM endpoints using same queue name, that if any queue size is in use, that size must match. As well Camel logs at INFO level when starting up the queues and the sizes. This allows end users to easily spot any issues if mistakenly using different queue sizes for the same queue names.
  • The Zookeeper endpoint awaitExistence option has been marked as @deprecated and is removed from it's documentation as it's usage would have no effect in the current codebase.
  • Marked the 2 classes in the junit4 package from camel-test-spring component as @deprecated, and refer to use the classes from the spring package instead.
  • If using XSLT with includes, then mind that if not explicit defined file: or classpath: as prefix in xsl:include, then Camel will now use the same as configured on the endpoint. Before "classpath:" was always used as fallback, despite endpoint could have been configured with "file:".
  • camel-scala has been upgraded to Scala 2.10.1, there is a camel-scala_2.9 module that is built against Scala 2.9.2. Though camel-scala_2.9 is deprecated and expected to be removed in the next bigger release (eg Camel 2.12/3.0).
  • camel-gae now longer has Spring dependency, and we removed class org.apache.camel.component.gae.context.GaeSpringCamelContext.
  • camel-jackson has upgraded from Jackson 1.x to 2.x.
  • Type Converter utilizations statistics has been disabled by default, due there is a little performance impact under very high concurrent load. You can enable the statistics easily as documented at Type Converter.

New in Apache Camel 2.10.4 (Mar 5, 2013)

  • Bug:
  • [CAMEL-5358] - camel-castor does not work in apache service mix modules
  • [CAMEL-5459] - Folder closed too early when working asynchronously
  • [CAMEL-5748] - Classloader mixup in Direct VM component
  • [CAMEL-5774] - ActiveMQ target endpoint with transferExchange=true does not work together with source File endpoint with preMove option set
  • [CAMEL-5816] - NPE is generated when using camel karaf command when JMX is disabled
  • [CAMEL-5821] - Camel Jetty chunked parameter appears broken
  • [CAMEL-5835] - XPathBuilder is documented as being thread-safe, but it has thread-safety bugs.
  • [CAMEL-5837] - Problem with nested schema imports when upgrading from 2.8.6 to 2.10.2
  • [CAMEL-5839] - camel-zookeeper: The usage of the endpoint's option 'awaitExistence' would have no effect
  • [CAMEL-5844] - Camel Tracer not showing some EIP names
  • [CAMEL-5848] - File consumer - When using doneFileName then avoid picking up files in middle of group if done file is written during scanning
  • [CAMEL-5854] - adviceWith() just needs to start the route when the camel context is started
  • [CAMEL-5860] - Regression in validator component in 2.10.3
  • [CAMEL-5864] - Pre-XSLT and Validator Type Conversions from byte[] may easily fail
  • [CAMEL-5865] - camel-jms: concurrent consumers on Temp Reply Queue requires more work
  • [CAMEL-5866] - Pass Exchange param to TypeConverter.convertTo calls where possible
  • [CAMEL-5867] - camel-jetty - Always creates a default http client even if not needed
  • [CAMEL-5875] - AdviceWith not working with weaveFirst/weaveLast because of delayed camelContext start due to using isUseAdviceWith.
  • [CAMEL-5877] - Sporadic Source Conversion issues with CxfPayload
  • [CAMEL-5883] - File consumer - When using done file name then delete the file when batch is complete
  • [CAMEL-5887] - Unexpected behavior when combining onException and multiple adviceWith in camel-core
  • [CAMEL-5888] - When call removeRouteDefinition the route doesn't removed from collection of route Definitions.
  • [CAMEL-5890] - NPE when jaxb fallback converter is used with RequestEntityConverter
  • [CAMEL-5897] - Nullcheck missing in CxfPayloadConverter
  • [CAMEL-5899] - camel-netty - Producer should avoid blocking while waiting for connection
  • [CAMEL-5905] - Negative in-flight counter
  • [CAMEL-5907] - Camel leaks memory on undeploy / redeploy in app server when JMX enabled and createConnector = true
  • [CAMEL-5908] - Websocket consumer cannot be started, because of NPE
  • [CAMEL-5917] - camel-jms - JmsPollingConsumer use the constant fields from JmsTemplate for receiveNoWait etc
  • [CAMEL-5925] - NullPointerException in RouteContextProcessor
  • [CAMEL-5942] - Custom URIResolve not used to load XSTL script
  • [CAMEL-5943] - camel-hl7 marshal charset error
  • [CAMEL-5948] - ObjectHelper.createIterator() should properly handle the array of primitive types e.g. int[]
  • [CAMEL-5949] - XML DSL - Should not have default values in errorhandler
  • [CAMEL-5950] - Cache producer is not thread safe
  • [CAMEL-5951] - Camel-syslog dataformat broken with netty transport
  • [CAMEL-5953] - Java DSL: unmarshal() inside choice() blocks adding more conditions
  • [CAMEL-5957] - Bug with completionSize on AggregatorProcessor
  • [CAMEL-5965] - Camel feature file doesn't validate
  • [CAMEL-5970] - Upon connection cd fails
  • [CAMEL-5971] - HdfsOutputStream is not closing
  • [CAMEL-5973] - Property placeholder with both blueprint and jasypt seems not working
  • [CAMEL-5975] - camel-jmx - Does not work in OSGi if XML output
  • [CAMEL-5981] - Enrich EIP may cause async callback done twice
  • [CAMEL-5987] - Using annotations DSL in beans may cause async callback to be called twice
  • [CAMEL-5989] - Camel SFTP endpoint throws exception when running camel route on Windows OS
  • [CAMEL-5993] - Quartz component fails to recreate endpoint when it's no more in camelcontext endpoints LRU
  • [CAMEL-5994] - CamelJob implementation rely on some inconsistent endpoints LRU cache - Camel endpoints may not be called on quartz fire after some days of uptime
  • [CAMEL-5999] - RestletComponent component is not removing added route from routers list although route is removed from Context.
  • [CAMEL-6005] - multicase shareUnitOfWork just throw one exception in the first time
  • [CAMEL-6013] - Validator component fails on XSD with indirect relative import
  • [CAMEL-6020] - Camel Transformer using inconsistent sources
  • [CAMEL-6023] - camel-blueprint - Using blueprint-cm with .cfg files, which triggers bundle reload on .cfg file change, does not startup Camel as expected
  • [CAMEL-6024] - Camel-Jetty Spring example has broken Spring XML syntax
  • [CAMEL-6025] - NumberFormatException when using File over JMS
  • [CAMEL-6035] - interceptSendToEndpoint with a DelegateAsyncProcessor fails
  • [CAMEL-6038] - Possible NPE is OSGi bundle has no symbolic name
  • [CAMEL-6045] - Camel Email Component Missing Attachments
  • [CAMEL-6046] - sftp: noop=true&idempotent=false doesn't work
  • [CAMEL-6048] - XML-files containing attributes called "type" does not get converted to json
  • [CAMEL-6059] - camel-rss and camel-atom - Not installable in Karaf
  • [CAMEL-6064] - Wire Tap onPrepare should process new Exchange
  • [CAMEL-6068] - CamelBlueprintContext may be wrongly started and this may lead to a deadlock
  • [CAMEL-6069] - java.io.IOException: Permission denied from MarkerFileExclusiveReadLockStrategy.acquireExclusiveReadLock on NAS
  • [CAMEL-6072] - Service Shutdown logic may execute N times
  • [CAMEL-6073] - Pairs of VM producer-consumer disconnect when OSGi bundle is restarted
  • [CAMEL-6079] - grails - class cast exception on startup
  • [CAMEL-6081] - gzip dataformat - Ensure input stream is closed if exception thrown
  • [CAMEL-6084] - SOAP over JMS does not work with camel-cxf endpoint
  • [CAMEL-6101] - Cache endpoint lazy initialization is not thread safe
  • Improvement:
  • [CAMEL-5708] - Make camel-smpp component get username from parameters instead of address
  • [CAMEL-5781] - limitaions on s3 component. no means to specify acl on created object. objects do not inherit acl from the bucket they belong to.
  • [CAMEL-5847] - camel-mongodb - Add converters for files or inputstreams
  • [CAMEL-5851] - upgrade to mvel 2.1.3.Final
  • [CAMEL-5855] - Use guava 13.0.1 rather than SMX bundle
  • [CAMEL-5862] - camel-netty - Use attachments instead of StateLocal to store state on netty producer
  • [CAMEL-5872] - camel-scala - Add convertBodyTo to its DSL
  • [CAMEL-5889] - Scala DSL: no tokenize("...") method
  • [CAMEL-5926] - SpringIntegrationConsumer should honor the 'inOut' instance variable by setting the MEP and sending back message headers
  • [CAMEL-5938] - MailConverters fails with uppercase content type TEXT/PLAIN
  • [CAMEL-5945] - Add delimiter to recipient list eip in Java DSL
  • [CAMEL-5954] - Unify the variables which are exports to script
  • [CAMEL-5955] - Put the LocalAddress into the message header
  • [CAMEL-5959] - Dead Letter Channel - Store failed route id on Exchange
  • [CAMEL-5962] - xslt component - Should fallback and use same scheme prefix as endpoint configured for included resources
  • [CAMEL-5974] - camel-jms: Make ThreadPoolTaskExecutor the default Task Executor
  • [CAMEL-5995] - Improvment of InstrumentationProcessor
  • [CAMEL-6008] - camel-netty - Initialize SSLContext once if using camel JSSE configuration
  • [CAMEL-6051] - ClassResolver - Add support for Object[] arrays
  • New Feature:
  • [CAMEL-5575] - Add new HttpEndpoint Option "httpHeaderFilterStrategy" on Http4 component
  • [CAMEL-5886] - camel-netty - Allow to configure the accept backlog for netty consumer
  • [CAMEL-5896] - camel-netty - Allow to configure netty options in uri using prefix
  • [CAMEL-5901] - camel-netty - Allow to turn netty producer pool on or off
  • [CAMEL-6053] - camel-test-blueprint - Allow to override config admin properties to be used outside CamelContext
  • [CAMEL-6054] - camel-hazelcast - Manage transactions with SEDA Consumer and improve the mapstore lifecycle
  • Task:
  • [CAMEL-5856] - camel-itest: Fix and reenable the two JMS/JDBC Integration tests
  • [CAMEL-5859] - Align commons JAR used by camel-hbase and camel-hdfs
  • [CAMEL-5861] - camel-quickfix: The example org.apache.camel.component.quickfixj.examples.RequestReplyExample doesn't work
  • [CAMEL-5868] - simplifications pom blueprint camel archetype
  • [CAMEL-5870] - camel-jms: Avoid DMLC.stop(), as it's buggy under certain conditions
  • [CAMEL-5873] - Upgrade the CXF version to 2.7.1, 2.6.4, 2.5.7
  • [CAMEL-5947] - upgrade to axiom 1.2.14 and abdera 1.1.3
  • [CAMEL-5983] - Avoid the negative-tests to behave as false-positive
  • [CAMEL-5991] - Javadoc on our WIKI page points to Camel 2.9.0
  • [CAMEL-5998] - Avoid using deprecated AbstractJUnit38SpringContextTests but use junit 4 test class instead
  • [CAMEL-6066] - camel-atom and camel-rss - Issue in karaf

New in Apache Camel 2.10.3 (Feb 1, 2013)

  • Bug:
  • [CAMEL-4171] - Groovy language - classNotFoundException in OSGi environment
  • [CAMEL-5426] - Camel stream makes Karaf console hang
  • [CAMEL-5464] - camel-jms consumer doesn't send back a reply in all cases
  • [CAMEL-5490] - Queue is Full in DefaultServicePool
  • [CAMEL-5608] - Validator component - Lock file on windows if input is file based and an validation failed occurred
  • [CAMEL-5684] - possible null pointer exception for FTP endpoint
  • [CAMEL-5699] - LogFormatter throws a NPE when all elements are disabled
  • [CAMEL-5704] - Split inside Split - Parallel processing issue - Thread is getting wrong Exchange when leaving inner split
  • [CAMEL-5707] - NotifyBuilder should be thread safe
  • [CAMEL-5709] - Http4 Endpoint does not remove all Options from URI
  • [CAMEL-5710] - Rest route returns response with http Status code 500 Internal Server Error when response has Last-Modified or Header-expires in header as string.
  • [CAMEL-5712] - BlueprintCamelContext should not get started in the init() method but later when the blueprint container is fully initialized
  • [CAMEL-5718] - Bodies of SMs with 8-bit data_coding are mangled
  • [CAMEL-5720] - Aggregate EIP - Dynamic completion size should override fixed values if in exchange
  • [CAMEL-5722] - Classloader mixup when consumers across bundles share the same camel-jetty port
  • [CAMEL-5729] - camel-crypto - Signer producer should close input stream after usage
  • [CAMEL-5730] - SqsConsumer receive thread is tightly coupled to extendMessageVisiblity's scheduled task
  • [CAMEL-5731] - Setting alphabet header to 8-bit doesn't update data coding
  • [CAMEL-5732] - Data coding of 0x02 not considered 8-bit
  • [CAMEL-5733] - NullPointerException with SpringBatchProducer and null header value
  • [CAMEL-5735] - SnsConfiguration's toString() uses amazonSQSClient as key string rather than amazonSNSClient
  • [CAMEL-5737] - camel-ftp - LocalWorkDir option did not work as expected
  • [CAMEL-5738] - HttpConnectionManager configuration is not injected correctly when using blueprint
  • [CAMEL-5746] - WireTap will always copy the origin Message
  • [CAMEL-5747] - Cold restart doesn't clear properties component cache
  • [CAMEL-5756] - OSGi resolvers for component, dataformat and language should check if service object is assignable before casting
  • [CAMEL-5757] - HTTP 1.1 Host header not set correctly with camel-http4
  • [CAMEL-5761] - Update SqsConsumer to extend Visibility Timeout correctly
  • [CAMEL-5766] - Configuring jetty component with a different name dont work with jetty consumer
  • [CAMEL-5769] - Camel JMS producer can block a thread under specific circumstances
  • [CAMEL-5773] - camel-twitter streaming consumer broken
  • [CAMEL-5776] - .camelLock is deleted by another camel instance
  • [CAMEL-5782] - regression : invalid SetQueueAttributesRequest created, works on 2.10.1
  • [CAMEL-5794] - xmljson dataformat should be added into marshall and unmarshal definition module
  • [CAMEL-5796] - The combination of the transacted DSL together with the or prohibits to resolve the properties properly.
  • [CAMEL-5810] - CXF + Code first + No recipient list + doCatch = route returns null
  • [CAMEL-5818] - Splitter does not allow errorhandler to handle exception in the splitter-expression
  • [CAMEL-5823] - CxfConsumer should not populate the cxf response with the original input message if the cxfExchange is oneway
  • [CAMEL-5826] - Apache Camel 2.9 Splitter with tokenize dont work with namespaces
  • [CAMEL-5830] - NullPointerException in DefaultCamelContext::stopRouteService
  • Improvement:
  • [CAMEL-5390] - Option to assign unique correlation ID to JMS messages
  • [CAMEL-5581] - Add an ExchangeStrategy to the HBase Component.
  • [CAMEL-5623] - Cache-Component doesn't work with decorated Caches
  • [CAMEL-5678] - It should be possible to clear the cached script in LanguageEndpoint via JMX
  • [CAMEL-5697] - camel-mongodb operations don't transfer header values from IN to OUT
  • [CAMEL-5701] - Update to jclouds 1.5.2 and leverage context names.
  • [CAMEL-5702] - camel-netty - The ordered thread pool should be shared
  • [CAMEL-5703] - camel-netty - Pool Channels instead of producers to make producer singleton
  • [CAMEL-5711] - Expose more elements of DeliverSM message to Consumer
  • [CAMEL-5714] - Throw a meaningful exception when the conetxt component cannot create a right endpoint
  • [CAMEL-5724] - Spring-WS consumer and producer do not propagate some custome headers and attachements to a response message
  • [CAMEL-5736] - Simple language - Unary operators should be more lenient and only be applicable if previous node is a function expression
  • [CAMEL-5744] - placeholders usage for QName types CXF endpoint attributes (BP version of CAMEL-4351)
  • [CAMEL-5755] - CXF endpoint's parameter exceptionMessageCauseEnabled not working for Camel CXF endpoints
  • [CAMEL-5763] - Enrich Camel message with JMSMessageID for InOnly messages sent to JMS destination
  • [CAMEL-5767] - Camel Splitter eat up exceptions recorded by the underlying Scanner
  • [CAMEL-5770] - RoutePolicySupport should provide some easy to use utility methods to suspend/resume routes as we have it already to start/stop routes
  • [CAMEL-5783] - option to add bundle directives in the generated test bundles by camel-test-blueprint
  • [CAMEL-5784] - Properties component - preparing loaded properties should only trim whitespace
  • [CAMEL-5785] - Add support for handling long/short lines in Fixed Width Files in the Flatpack DataFormat
  • [CAMEL-5789] - AbstractJdbcMessageIdRepository should use the @ManagedResource and @ManagedOperation from Camel
  • [CAMEL-5803] - Scala DSL splitter does not support tokenizeXML
  • [CAMEL-5808] - camel-ahc - Add option to set buffer size
  • [CAMEL-5809] - camel-jms - Allow concurrentConsumers on listener on request/reply over JMS
  • [CAMEL-5813] - Add support to convert from a Flatpack Dataset to an XML Document
  • [CAMEL-5824] - camel-hbase - HBase data access performance improvement
  • [CAMEL-5838] - Erroneous option name in camel zookeeper component documentation: awaitCreation should be awaitExistence
  • New Feature:
  • [CAMEL-5696] - camel-mongodb write operations should put have configurable option to put WriteResult in header
  • [CAMEL-5812] - Add getContext() method to ProducerTemplate interface
  • Task:
  • [CAMEL-5715] - Maven archetypes - Check that they still work after the pom DRY cleanup that broken them
  • [CAMEL-5749] - Fix Camel 2.10.x fulltest at Jenkins
  • [CAMEL-5777] - Misleading docs on JMS wiki
  • [CAMEL-5841] - camel-ftp: Re-enable the sftp tests again being disabled.
  • Test:
  • [CAMEL-5792] - Validator component - Error loading resource on windows

New in Apache Camel 2.10.1 (Oct 10, 2012)

  • Bug:
  • [CAMEL-5401] - Not all RoutePolicy callback methods are invoked
  • [CAMEL-5404] - MinaProducer does not disconnect on response timeouts
  • [CAMEL-5405] - CXF Transport loses HTTP Matrix parameters
  • [CAMEL-5406] - Threads EIP hangs Junit4 tests using adviceWith
  • [CAMEL-5411] - MQTT Endpoint does not correctly return the MQTT-Payload
  • [CAMEL-5412] - ObjectAlreadyExistsException when "redeploying" routes that uses CronScheduledRoutePolicy
  • [CAMEL-5415] - Simple does not handle empty values in predicates properly
  • [CAMEL-5417] - Scala Archetype with incorrect Maven Eclipse configuration
  • [CAMEL-5419] - camel-soap - Sets wrong namespace for faults
  • [CAMEL-5424] - @MockEndpointsAndSkip does not work
  • [CAMEL-5429] - Sending null in body when forcing JMS message type to Object throws an Exception
  • [CAMEL-5432] - Dynamically added SEDA-route is not working
  • [CAMEL-5437] - Add support for batch consumer's empty messages to aggregator
  • [CAMEL-5440] - mock endpoint should not add the expect header check task every time we call the expectedHeaderReceived()
  • [CAMEL-5449] - CxfPayloadConverter converts to NodeList by default, affecting performance
  • [CAMEL-5451] - Camel-Blueprint should wait for camel-core to be started since there is a strong dependency
  • [CAMEL-5454] - camel-example-gae silently fails (needs updates to use latest CamelHttpTransportServlet)
  • [CAMEL-5455] - Allow configuring dataCoding independend of alphabet
  • [CAMEL-5461] - IOConverter.toInputStream opens a BufferReader which will never be closed
  • [CAMEL-5468] - RegistryBean.getBean() is not thread safe
  • [CAMEL-5470] - camel-example-gae gtask doesn't work
  • [CAMEL-5472] - missing dependency to spring-web in camel-example-cxf-tomcat
  • [CAMEL-5473] - camel-example-cxf-tomcat is broken
  • [CAMEL-5475] - Can't unmarshal pgp messages encrypted with ElGamal.
  • [CAMEL-5476] - HTTP GET request fails on Yahoo historical data download BUT AHC succeeds
  • [CAMEL-5485] - camel-mybatis should do a proper transaction demarcation while reading/writing from/to database.
  • [CAMEL-5487] - HttpProducer should close temporary file in CachedOutputStream when the IOException is thrown
  • [CAMEL-5495] - file endpoints on windows without volume name in the path url not working in some cases
  • [CAMEL-5499] - Cxf fallback convert should return the Void.value instead of null
  • [CAMEL-5500] - camel-testng - The spring base test class should use @AfterMethod on teardown as its parent does
  • [CAMEL-5501] - @XPath annotation should ensure cleanup after evaluation
  • [CAMEL-5504] - Bridging http endpoints with spaces in content path causes problem when forwarding request
  • [CAMEL-5505] - Unable to customize URIResolver in xslt component
  • [CAMEL-5506] - HBase component does not extract that table name in all cases and HBase runtime version issues.
  • [CAMEL-5507] - CamelBlueprintTestSupport Cannot correctly delete target\bundles\routetest.jar
  • [CAMEL-5509] - Jetty http consumer doesn't suppor the uri "jetty:http://localhost:9000"
  • [CAMEL-5515] - thread java DSL doesn't provide full function out of box
  • [CAMEL-5517] - Multiple calls to CXF factory beans.getFeatures causing multiple logging features to be added
  • [CAMEL-5518] - Camel Proxy ignores camelContextId property in Spring configuration
  • [CAMEL-5519] - CamelContextId should be effected when there are more than two camel context in the spring configuration file
  • [CAMEL-5527] - Maven archetype - Generates wrong plugin for surefire plugin
  • Improvement:
  • [CAMEL-4014] - cxf:rsServer requires class instead of interface in the serviceClass attribute
  • [CAMEL-4303] - Add camel-netty option to configure whether the server needs client auth when using SSL
  • [CAMEL-4702] - SNMP Component, Documentation is confusing with respect to hostname:port vs. address
  • [CAMEL-5343] - Improve Camel AWS-S3 to be able to only pick up specific files
  • [CAMEL-5407] - Better error message when trying to write a null body as file
  • [CAMEL-5430] - Remove un-necessary connections to the Twitter API
  • [CAMEL-5431] - Finish and polish camel-twitter
  • [CAMEL-5433] - camel-hdfs - Allow to lazy connect as hdfs file system has hardcoded 15 min retry in case no connection
  • [CAMEL-5441] - Remove the import package of META-INF.cxf from the camel cxf related examples
  • [CAMEL-5444] - camel-jms - Log at INFO level if shared replyTo queues are in use, as they are not as fast as temporary or exclusive queues
  • [CAMEL-5445] - ManagementLoadTask - Background thread should defer starting till CamelContext has been started
  • [CAMEL-5450] - XSLT calls newTransformer per request
  • [CAMEL-5460] - MockEndpoint.expectedBodiesReceivedInAnyOrder() should allow asserting on the multiple arrival for the SAME body
  • [CAMEL-5474] - Support to build the camel-soap offline
  • [CAMEL-5482] - Clean up the camel restlet component code and fixed a logging entry that displayed the wrong data.
  • [CAMEL-5508] - Optimize property placeholder resolution at runtime to lookup configured properties component once
  • [CAMEL-5512] - camel-ftp - Improve readlock changed to use fine grained API to get file details
  • [CAMEL-5513] - Add option to changed readLock to denote whether a zero file size is accepted or not
  • [CAMEL-5514] - Fix the broken unit-tests by camel-ftp
  • [CAMEL-5528] - Improve how the AWS-SQS component create a new queue with additional attributes
  • [CAMEL-5529] - Shutdown Twitter instance if endpoint is shutdown
  • [CAMEL-5530] - Suggestion to replace HBaseContants class with HBaseConstants interface and other minor changes.
  • [CAMEL-5531] - adding new eventNotifiers to a CamelContext from a separate thread while a CamelContext is starting (e.g. in OSGi) can lead to ConcurrentModificationException
  • New Feature:
  • [CAMEL-5403] - Type converter for NodeList with size 1 to Node
  • [CAMEL-5521] - Add option to file/ftp producer to move any existing file before writing
  • Task:
  • [CAMEL-5428] - Seda website documentation has queueSize parameter, but the parameter does not exist
  • [CAMEL-5496] - Odd default value for file2's readLockTimeout documentation
  • Wish:
  • [CAMEL-5478] - File component does not consume empty files with the changed readLock

New in Apache Camel 2.9.1 (Mar 6, 2012)

  • Sub-task:
  • [CAMEL-4451] - Fix URI definition for camel-restlet to provide valid URIs
  • Bug:
  • [CAMEL-3985] - Name Part of the Sender & the Recipient Email Addresses are not encoded with the Exchange charset
  • [CAMEL-4842] - Remove ProducerCache from CamelContext service list when shutting down a route
  • [CAMEL-4850] - Ftp consumer - NPE if using 2 slashes as starting directory
  • [CAMEL-4854] - BAM - database constraint violation when restaring application
  • [CAMEL-4858] - xpath expression with $header with saxon may throw exception if header did not exist
  • [CAMEL-4870] - Attachments is not propagated in the template components such as camel-stringtemplate
  • [CAMEL-4871] - Request with Content-Type= application/x-www-form-urlencoded throws "Cannot read request parameters due Invalid parameter, expected to be a pair but was " when body is empty.
  • [CAMEL-4872] - Route Info Command Exchange Date NPE
  • [CAMEL-4877] - API-breaking changes in Validator-component
  • [CAMEL-4882] - Timed out Exchanges should be removed from seda queues
  • [CAMEL-4892] - CamelContext autoStartup=false and starting context programmatically doesnt work
  • [CAMEL-4894] - Parameter binding not working with BeanExpression
  • [CAMEL-4901] - SEDA/VM component doesn't remove the exchange from the producer BlockingQueue if the consumer timeout
  • [CAMEL-4904] - org.apache.camel.util.concurrent.ExecutorServiceHelper.getThreadName(String, String) method throws IllegalArgumentException when name parameter contains '$', "${" or '}'
  • [CAMEL-4913] - camel-blueprint - Using namespaces with xpath does not work as the namesapces is not parsed and injected into the camel model
  • [CAMEL-4915] - Serialisation Data Format is unable to unmarshal in OSGi environment
  • [CAMEL-4920] - PollEnrich in default mode should block
  • [CAMEL-4926] - HTTP TRACE should be disabled by default
  • [CAMEL-4938] - ManagedBrowsableEndpoint are broken
  • [CAMEL-4942] - exchange.getIn().getBody(.class) throws an exception for Jaxb model objects
  • [CAMEL-4945] - CXF Producer calls done method of Camel callback several times
  • [CAMEL-4947] - Delay using bean does not work in XML DSL
  • [CAMEL-4954] - Camel 2.9.0 incapable of working with % in endpoint URIs
  • [CAMEL-4959] - Incorrect caching type converter misses for NaN
  • [CAMEL-4970] - Cannot use xquery predicate in filter after an xpath splitter.
  • [CAMEL-4973] - Camel CXF Transport should update the content-type as other CXF transport does
  • [CAMEL-4976] - Problem Removing Endpoints
  • [CAMEL-4984] - camel-http does not send header values that are empty strings
  • [CAMEL-4985] - Spring security example does not work
  • [CAMEL-4986] - ManagedPerformanceCounterMBean should extend ManagedCounterMBean
  • [CAMEL-4988] - Problems with Simple language
  • [CAMEL-4989] - BindyDataFormat should not use the default encoding
  • [CAMEL-4991] - Recipient list with invalid endpoint should allow error handler to trigger and handle this exception
  • [CAMEL-4999] - Upgrade from 2.8.3 to 2.9.0 breaks the schema validation capability in the Camel Validation component
  • [CAMEL-5000] - Error handler not called when recipient list has non existing endpoint
  • [CAMEL-5004] - Camel simple language wrong working with real number
  • [CAMEL-5005] - simple without embedded text results in an NPE
  • [CAMEL-5006] - camel-jms component, request/reply results in NullPointer when JMSCorrelationID is set to empty string on inbound JMS message.
  • [CAMEL-5009] - Can't use the resourceClass Parameter of CXF-RS Component
  • [CAMEL-5021] - camel-file: file is renamed but error handling continues.
  • [CAMEL-5023] - Printer endpoint can only print a single job
  • [CAMEL-5024] - Streaming splitter ignores exception handling
  • [CAMEL-5025] - The ErrorHandler doesn't work when Splitter working in Streaming model.
  • [CAMEL-5027] - JMX statistics problem with some components
  • [CAMEL-5033] - Seda producer should not handover completions if waiting for task to complete
  • [CAMEL-5035] - CxfProducer should release the CXF when the Producer is stopped.
  • [CAMEL-5036] - Camel route with bean element sends on startup invalid message to target route that is represented by a proxy who exposes route
  • [CAMEL-5038] - Timer endpoint should support multiple consumers
  • [CAMEL-5040] - Thread pools should not be enlisted in JMX if part of adding a new route, and JMX is disabled for new routes
  • [CAMEL-5045] - Memory leak when adding/removing a lot of routes with JMX enabled
  • [CAMEL-5046] - Memory leak when adding/removing a lot of routes with JMX enabled related to Tracer
  • [CAMEL-5048] - Memory leak in SedaComponent if adding and removing a lot of seda endpoints with different queue names
  • [CAMEL-5049] - Memory leak in TimerListener if JMX enabled
  • [CAMEL-5051] - NullPointerException when assigning a simple Object as final bean
  • [CAMEL-5053] - Using a custom thread pool profile does not work with EIP
  • Improvement:
  • [CAMEL-3998] - improve stax/jax components
  • [CAMEL-4152] - jdbc idempotent repository - table creation
  • [CAMEL-4280] - Out of date OSGi version
  • [CAMEL-4603] - Messages after a split() should not keep attachments
  • [CAMEL-4758] - Updates to JavaDoc for org.apache.camel package
  • [CAMEL-4782] - Add ManagedIdempotentConsumerBean with additional details such as duplicate detected
  • [CAMEL-4783] - ${pom.version} is deprecated, we should use ${project.version}
  • [CAMEL-4789] - camel-aws should not depent on org.codehaus.jackson:jackson-core-asl
  • [CAMEL-4792] - Polish management to ensure state is correct for components and endpoint
  • [CAMEL-4804] - Add replyTo option to camel mail component
  • [CAMEL-4805] - Adding a FileCacheManagerFactory for user to use
  • [CAMEL-4806] - Seda component - Add strategy method to prepare the exchange before processing by the consumer
  • [CAMEL-4808] - Javadoc edits to the org.apache.camel.api.management package (and mbean subpackage)
  • [CAMEL-4813] - Add a converter to turn StringBuffer to InputStream
  • [CAMEL-4834] - camel properties component should support not specify the file location
  • [CAMEL-4835] - camel-cxfrs should support to look up the CXF message from the camel message header
  • [CAMEL-4838] - typos in camel-examples-loadbalancing README file.
  • [CAMEL-4839] - Ability to specify the cache level on JMS reply to queue
  • [CAMEL-4862] - Support relative time format in Camel SMPP by setting the validity periode
  • [CAMEL-4865] - Camel archetypes - Add camel-test at test scope in generated pom.xml
  • [CAMEL-4868] - add feature for camel-context component
  • [CAMEL-4874] - camel archetypes - The Java and Scala archetypes should not have Spring included
  • [CAMEL-4875] - The package scan for RouteBuilder classes should not include anonymous inner classes
  • [CAMEL-4884] - Make velocity logging configurable
  • [CAMEL-4889] - KratiProducer should not assume key to be of String type.
  • [CAMEL-4890] - camel-solr - Should use dynamic assigned port numbers for testing
  • [CAMEL-4911] - SedaConsumer - Should not poll if CamelContext is starting
  • [CAMEL-4922] - Upgrade to jclouds 1.3.1
  • [CAMEL-4950] - RedeliverErrorHandler - Should break out earlier if CamelContext is shutting down
  • [CAMEL-4958] - camel-jms - JmsConsumer make it less verbose logging in case of an exception or TX rollback
  • [CAMEL-4961] - Make TX error handler log more details such as redelivery and messageId, which allows people to better correlate messages
  • [CAMEL-4962] - Add messageId as key for MDC logging
  • [CAMEL-4965] - Allow to configure rollback logging level on TX error handler
  • [CAMEL-4968] - Expose Transacted Redeliveries statistic in JMX
  • [CAMEL-4972] - Remove h2database dependency
  • [CAMEL-4977] - Upgrade to Krati 0.4.3
  • [CAMEL-4979] - Upgrade to hsqldb 2.2.8
  • [CAMEL-4981] - Upgrade to jruby 1.6.6
  • [CAMEL-4990] - SimpleExpression should trim the string before parsing
  • [CAMEL-4997] - Method call expression with bean type uses the toString to lookup a bean instead
  • [CAMEL-5002] - BaseTypeConverter blocks when getting type converter
  • [CAMEL-5010] - Remove OSGi environment detection logging from camel-spring
  • [CAMEL-5030] - Allow smpp connection to be tunnelled through HTTP proxy
  • [CAMEL-5054] - Configuration of executorService / executorServiceRef and parallelProcessing should be intuitive for EIPs
  • Task:
  • [CAMEL-3774] - camel-manual generation fails during release process
  • [CAMEL-4825] - camel-spring-ws feature should mention jre.properties tuning in the documentation
  • [CAMEL-4836] - Upgrade smack version to 3.2.1
  • [CAMEL-4846] - fix the issues reported by 'mvn -e apache-rat:check'
  • [CAMEL-4856] - Documentation Bug
  • [CAMEL-4860] - Upgrade to tagsoup 1.2.1
  • [CAMEL-4864] - Upgrade to Karaf 2.2.5
  • [CAMEL-4883] - Upgrade to maven-scala-plugin 2.15.2
  • [CAMEL-4885] - Upgrade org.springframework 3.0.6.RELEASE -> 3.0.7.RELEASE
  • [CAMEL-4927] - Release camel-extra 2.9.0

New in Apache Camel 2.9.0 (Jan 3, 2012)

  • New and Noteworthy:
  • Introduced ThreadPoolFactory with a simpler API for 3rd party SPI. See Threading Model for more details.
  • The ScheduledExecutorService created by Camel is guarded with a queue size check, to guard against OOME due the JDK thread pool is unbounded task queue.
  • The SOAP data format now supports using multiple parameters on the JAXB objects.
  • The Bean component now supports specifying parameter values to use directly in the method syntax. See more details at Bean Binding. For example to invoke a bean with body as first parameter, and a boolean true as second you can now do: .to("bean:myBean?method=myMethod(body, true)")
  • The Bean component supports binding to private class beans by fallback to use interface methods.
  • Improved labels of all model definitions which appear in Tracer output
  • Reduced dependency for camel-core to not require commons-management JAR anymore
  • Added blueprint support of cxfrs endpoint.
  • Camel no longer depend on using Spring JARs for having Camel enlisted in JMX.
  • Introduced a set of Camel JMX annotations in org.apache.camel.api.management that can be used to easily instrument Camel Components, EIPs, custom Processors, Beans etc. for being managed in JMX. Using the Spring JMX annotations is still supported (you would need camel-spring on the classpath).
  • Updated the Aggregator2 to allow for manually completing all exchange groups by sending a message containing the header Exchange.AGGREGATION_COMPLETE_ALL_GROUPS set to true.
  • Updated the Aggregator2 to support forceCompletionOnStop option to complete all current aggregated exchanges when the context is stopped.
  • Removed dependency on Spring JARs in the following components: Validation, XSLT, Velocity, FreeMarker, Flatpack, StringTemplate, iBATIS, Jing, MSV, XQuery, Test, Groovy, Scripting Languages, Mail and Quickfix.
  • Using pollEnrich with a file/ftp endpoint will now only poll on demand, beforehand the polling could be started when the route started.
  • Added option ReplyToType on JMS to allow people to control which kind of reply queue they are using (temporary, shared, exclusive). Added support for exclusive reply queues. Mind they have some limitations, by which the shared dont have. So use exclusive with a bit caution.
  • Added wereSentTo to NotifyBuilder allowing to set expectation that Exchanges was sent to the given endpoint uri.
  • Bindy in CSV format now uses trim, clip, and length attributes on @DataField when marshalling.
  • Improved managed browsable endpoints (JMX) so you can browse all/range messages and whether to include message body or not.
  • File and FTP endpoints is now browsable endpoints. For example using JMX people can browse the endpoint listing available files. The returned data does not contain the actual file body to avoid loading big data into memory.
  • Added replaceFromWith to AdviceWith making it easy to swap a route input endpoint with something else, for easier unit testing.
  • Added Java DSL support for route autoStartup(String) and autoStartup(boolean)
  • Switched to a better performing non locking endpoint cache based on Google's ConcurrentLinkedHashMap.
  • Added isUseAdviceWith to Camel Test which allows end users to tell Camel that the unit tests uses AdviceWith which allows you to defer starting CamelContext until after the adviceWith has been executed.
  • Added filtersRef option to Jetty endpoint, and it supports to setup the Filters on the Jetty endpoints.
  • Added ciphers option to the SFTP endpoint to allow configuration of the ciphers used by default.
  • Added fastExitsCheck option to the SFTP FTP endpoint to check the file exits fast.
  • Added errorHandler option to the JMS component which allows you to set a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message.
  • Added idleConsumerLimit option to the JMS component which sets the limit for the number of consumers that are allowed to be idle at any given time.
  • Simple language has a much better syntax parser, being able to report what and where syntax errors are. Added unary operators, which for example can be used to increment counters.
  • Simple language now supports nested functions, so you can do "${header.${header.bar}}", for example to refer to a header key from another header.
  • Simple language can now configure custom start/end tokens for its built-in functions.
  • The JPA component has been upgraded from using the JPA1 spec to use JPA2 spec.
  • The CSV component now always returns a List regardless if 1 or more rows returned, to be consistent.
  • Resequencer now pre validates incoming Exchange and throws CamelExchangeException if invalid. Added new option ignoreInvalidExchanges to suppress the exception and ignore invalid exchanges.
  • Improved existing and added more Karaf Camel commands.
  • Improved Bean component and method call expressions to be able to invoke static methods, without creating a new instance of the class.
  • JMX now exposes average load statics on CamelContext and Route mbeans. Its similar to unix load stats per 1, 5 and 15 minutes.
  • Added support for minDepth and maxDepth option on the FTP consumers.
  • Improved the AWS-S3 component to support more headers in the producer.
  • Cometd now includes headers in the server message.
  • SFTP now supports interactive keyboard authentication, but entering the password in the prompt.
  • ManagedTracer now supports detailed JMX TraceEvent Notifications. This allows to watch message flows using JConsole and provides an ideal base for external tooling
  • Exchange.HTTP_URI query part will take effect on the producer of HTTP and HTTP4.
  • Add camelContextId to MDC logging.
  • Hadoop consumer supports auto merging multiple segment files.
  • JMS consumer has new option asyncConsumer which allows to enable Asynchronous Routing Engine
  • The camel-archetype-component allows to specify the component name.
  • Polling Consumers such as File or FTP supports new option sendEmptyMessageWhenIdle to send an empty message if there was no messages to poll.
  • Added option allowStAX on XSLT and XQuery to control whether StAX (Streaming API for XML) is preferred as the javax.xml.transform.Source.
  • Added properties function to Scripting Languages to make it easier to leverage Camel Properties component from scripts.
  • Added timeoutCheckerExecutorService and timeoutCheckerExecutorServiceRef options to the aggregator. If using either of the completionTimeout, completionTimeoutExpression, or completionInterval options a background thread is created to check for the completion for every aggregator. This doesn't scale well when you have many routes with an aggregator (a thread is created for every aggregator). Setting these options allow you to control the number of threads by providing a custom thread pool.
  • Splitting big files such as XML files can now be done in a streamed low-memory footprint mode using the Tokenizer language or the StAX component.
  • The Language component can now load scripts from classpath or file system. As well having a cached option.
  • Further improved masking of passwords in URIs specified in the user info part, in the Camel logs.
  • Optimized Request Reply over JMS when using named replyTo queues to cache consumer if possible, making it go faster. This applies when using either the replytToType=Exclusive or replyToDestinationSelectorName options.
  • Fixed JPA consumer to ensure to rollback if processing an Exchange failed.
  • Added quote option to @CsvRecord in Bindy to make it easy to specify using a quote character when marshalling from Object to CSV format.
  • Added consumer.transacted option to JPA to control whether the consumer should regard the batch as a single encompassing transaction or not.
  • Added ability in XSLT component to dynamically override stylesheet used via CamelXsltResourceUri message header.
  • Added ability in AWS-SNS component to specify the topic policy.
  • Added ability in AWS-S3 component to specify the bucket policy and the storage class.
  • Log component and LogEIP now supports the Marker option
  • Log and Tracer now have a default maxChars option at 10000 to avoid logging very big data.
  • Added ability in SQL to execute SQL batch statements.
  • Added the configuration support of queueSize and concurrentConsumers options on the SEDA VM component.
  • Added MBean interfaces in org.apache.camel.api.management.mbean which clients can use to access Camel MBeans.* Added MBean interfaces in org.apache.camel.api.management.mbean which clients can use to access Camel MBeans.
  • Introduced AbstractJdbcMessageIdRepository in SQL Component to make it easier to create custom JDBC based Idempotent Consumer
  • Fixed issues:
  • Fixed issue with Properties component may cache duplicates and thus take up unnecessary memory in the cache
  • Fixed issue with Tracer out exchanges when using Asynchronous Processing by the Asynchronous Routing Engine
  • Fixed issue with Components or Endpoints not being registered in JMX when using POJO Producing, POJO Consuming or other Camel bean annotations.
  • Fixed issue which could cause DefaultUnitOfWork to throw a java.util.EmptyStackException under heavy load
  • Fixed issue with MDC logging not remembering old values, for example when using a ProducerTemplate from within routes to send new messages.
  • Fixed issue when invoking a Bean and that bean is using a @Bean in its method signature, causing the @Bean to not invoke its intended method
  • Fixed issue with Bindy unmarshalling in key value or CSV or mode, may cause inconsistency for multiple threaded unmarshalling
  • Fixed issue with ExchangeSentEvent being fired to early when being sent to asynchronously endpoint. Now its being fired when sent is done.
  • Fixed issue with OSGi Blueprint when consuming JAXB annotated objects from ActiveMQ causing ClassCastException's.
  • Fixed issue with using OnException and using redeliveryPolicyRef which could cause the Error Handler to fail with an assertion error at first redelivery attempt.
  • Fixed issue with using doneFile option on FTP when from a Windows computer connecting to a Unix FTP server, due to wrong path separator in use.
  • Fixed issue with Bindy in CSV mode when marshalling not using correct separator char if given an escaped separator char on the model class.
  • Fixed issue with evaluation of Simple language not being as fast as it could be.
  • Fixed issue with File consumer not auto creating start dir if having dot in name.
  • Fixed issue with Splitter, Recipient List and Routing Slip throwing exceptions from custom expressions, not being triggered by Exception Clauses.
  • Fixed issue with stale OUT message set on Exchange if exception was thrown from unmarshal or marshal operations from Data Format
  • Fixed issue with request/reply over JMS when using useMessageIDAsCorrelationID=true and fixed reply queues, causing JMSMessage selector to not evict timed out correlationIDs, which cause the JMSMessage selector to keep growing.
  • Fixed issue with XSLT, XQuery and XPath may lock file resource if exception occurred during transformation
  • Fixed issue with Flatpack dropping all headers from the original message
  • Fixed issue with wereSentTo on NotifyBuilder may trigger to soon, as well you no longer must configured it at first
  • Fixed issue with SMPP by sending multipart and multilingual messages
  • Fixed issue with using Saxon for XPath expressions with a Splitter and Content Based Router in the same route.
  • Fixed issue with thread safety of the XPathFactory in the XPath builder
  • Fixed issue when stopping Batch Consumer routes and have configured route with CompleteAllTask, there may be a slim chance the route will be shutdown too early before the last batch message had a chance to be enlisted as in flight exchange.
  • Fixed issue with FTP consumers to always process synchronous, to ensure the UnitOfWork executes the done tasks in the same thread as the consumer, as the FTP libraries is not thread safe.
  • Fixed memory leak when doing request/reply over JMS with a fixed reply queue, when under high load.
  • Fixed issue with Bindy in CSV mode not handling separator char to be inside a quoted field. For example a comma, in "Wednesday, November 9th, 2011"
  • Fixed issue when restarting CamelContext would lose any prior custom LifecycleStrategy in use.
  • Fixed issue with using the same ScheduledRoutePolicy on 2+ routes not working on all the of the routes.
  • Fixed issue that SEDA VM consumer doesn't reset the camel context of exchange when it pulls the exchange from queue.
  • Fixed issue when using context scoped Exception Clause to handle exceptions, by which the RouteScope on the UnitOfWork from the Exchange may not refer to last used route id.
  • Fixed Throttler EIP in async delayed mode to not eat up memory when messages flow in faster, than the throttler can process the delayed tasks. The throttler will now use the maxQueueSize option from the Threading Model to reject tasks if the task queue grows to big.
  • Fixed issue with Throttler and Delayer EIP in async delayed mode, would cause a 2nd done on the AsyncCallback which could lead to a NPE in the logs.
  • New Enterprise Integration Patterns
  • New Components:
  • AWS-SDB
  • AWS-SES
  • jclouds
  • Krati
  • Solr
  • StAX
  • Zookeeper
  • DSL Changes;
  • New Annotations:
  • Added some JMX annotations in org.apache.camel.spi.management that replace the spring jmx annotations to make camel-core independent of spring
  • New Data Formats:
  • PGP
  • API breaking:
  • The class ExecutorServiceStrategy is deprecated in favor of a new ExecutorServiceManager class, which have a slightly reduced and improved API. See Threading Model for more details.
  • The org.apache.camel.component.ResourceBasedComponent class from camel-spring has been deprecated. Use DefaultComponent instead.
  • The org.apache.camel.component.ResourceBasedEndpoint class from camel-spring has been deprecated in favor of a new org.apache.camel.component.ResourceEndpoint in camel-core, and its dependency on Spring JARs has been removed. Use the new APIs on ResourceEndpoint to load resources.
  • Changed the method beforePoll slightly in the org.apache.camel.PollingConsumerPollingStrategy class.
  • ServiceSupport and EventNotifierSupport classes are moved to org.apache.camel.support. This package is meant for mostly abstract base classes that make it easier to implement the API. To keep compatibility the old classes are kept as @Deprecated versions (see CAMEL-4358)
  • ServiceSupport now does no handle child services anymore (was used only in two places in camel-core). A new class ChildServiceSupport now handles this case. Additionally the org.apache.camel.StatefulService interface was created which allows to access ServiceSupport methods without knowing the implementation.
  • DataFormatResolver does not support resolveDataFormatDefinition anymore. The current implementations for OSGi and Default where exactly the same so this code was moved to DefaultCamelContext. If this is needed please open a jira issue
  • All methods in CamelContext that reference model elements where deprecated. An additional interface org.apache.camel.model.ModelCamelContext was created to hold these methods
  • Ordered interface was moved from org.apache.camel.util to org.apache.camel
  • BytesSource and StringSource were moved from org.apache.camel.converter.jaxp to org.apache.camel as they are used in several places
  • TimeoutMap interface was moved from org.apache.camel.util to org.apache.camel
  • DefaultTimeoutMap was moved from org.apache.camel.util to org.apache.camel.support as it needs access to ServiceSupport
  • Moved some management interfaces from org.apache.camel.management to org.apache.camel.spi.management
  • Moved DefaultChannel from org.apache.camel.processor to org.apache.camel.processor.interceptor
  • FileUtil.removeFile added new option, and will throw IOException in case of exception occurred
  • The CamelTestSupport's context, template, consumer fields is no longer static (reason for changing is to foster faster unit testing)
  • Added onRemove, onStart, onStop, onSuspend, and onResume methods to org.apache.camel.spi.RoutePolicy
  • Removed Spring related methods from ScriptBuilder in camel-script
  • Added RouteContext as parameter to configure method on ErrorHandlerBuilder
  • The Mail component no longer uses Spring API, which means any custom JavaMailSender should now implement org.apache.camel.component.mail.JavaMailSender instead.
  • The Quickfix component no longer uses Spring API, which mean if you use XML DSL to setup QuickFix settings, then you need to adjust accordingly. See details Quickfix.
  • Internal/Non API refactorings that may affect users:
  • org.apache.camel.WrappedFile interface was introduced as abstraction of GenericFile for usage outside the file component
  • ModelHelper was moved from org.apache.camel.util to org.apache.camel.model to avoid references from util to model
  • The Karaf commands have been renamed

New in Apache Camel 2.7.2 (Jun 6, 2011)

  • New and Noteworthy:
  • fixes and improvements related to using Camel in OSGi
  • fixes for the camel-web console, including an XSS vulnerability
  • fix for camel-ehcache related to replication across nodes

New in Apache Camel 2.7.0 (Mar 23, 2011)

  • Switched to use slf4j as the logger instead of commons logging.
  • Camel now checks state of Service during starting/stopping the Lifecycle of the Service. This avoids double starting/stopping in case the service was already in the desired state.
  • Added support for MDC logging with Camel
  • JMS consumer now eager checks if Camel is shutting down and signals that to its DefaultMessageListenerContainer which avoids trying to re-connect/failover during shutdown.
  • Introduced option to automatic Mock endpoints during testing. This makes testing without having to add Mock endpoints in your routes a breeze. See more details at Mock component documentation.
  • Added assertPeriod option to Mock endpoint, which is a period im milliseconds, that the Mock will pause and then re-assert itself to ensure the assertion is still valid. This can be used as a threshold when testing with expectations that exactly a given number of messages should arrive on the Mock endpoint.
  • Added arrives DSL to Mock endpoint to allow you to setup expectations about timespan between messages arriving on the Mock endpoint. See more details at Mock component documentation.
  • HTTP4 is upgraded to use Apache HttpClient 4.1
  • Fixed an issue with File consumer having absolute starting directory and using absolute paths in the move option as well
  • Fixed concurrent append to the same file in the File producer
  • Fixed issue with restarting Quartz causing a failure due trigger name already exists issue for stateful jobs.
  • Its now possible to use multiple QuartzScheduler's when deploying multiple Camel applications in the same JVM classloader.
  • Quartz update checker is now always disabled, see more details here
  • Fixed potential issue installing camel-ftp feature in Apache ServiceMix
  • New JdbcMessageIdRepository for the idempotent consumer EIP in SQL
  • Relaxed how aggressive Camel was registering services as MBeans in JMX. Now Camel will by default only registeres MBeans when starting CamelContext or starting new routes. This avoids registering too many MBeans if using dynamic EIP patterns such as Recipient List using different endpoint urls, causing new endpoints and its associated services to be registered in JMX. This would keep growing over time and consume memory as well. You can use the registerAlways or registerNewRoutes options on ManagementAgent to control this behavior. See Camel JMX for more details.
  • Redelivery policy and OnException now supports property placeholders in both Java and XML DSLs.
  • Introduced to easily define common profiles for redelivery policies, which you can refer to from or using the redeliveryPolicyRef attribute. Also Spring Frameworks property placeholders works with .
  • Improved the XML based Error Handlers to validate configuration on startup, to fail if they have been misconfigured.
  • Spring Integration is upgraded to Spring Integration 2.0.
  • Added endChoice() to the Java DSL to be able to use any EIPs inside the Content Based Router. See more details here
  • Property placeholders can now be use for any kind of attributes/options in the EIPs in the Camel routes. For example in the Spring XML file you can now use placeholders for timeout attributes etc. This is possible using the specialized placeholder namespace. See more details at the Using PropertyPlaceholder wiki page. In the Java DSL there is a new placeholder option on each EIP you can leverage.
  • The camel-jdbc-aggregator component is merged into the camel-sql component.
  • Fix in Mail component for duplicate attachments, and when using starttls.
  • Maven 3 is now supported for building
  • Tidy up the XML DSL to not allow nesting tags where it doesn't make sense.
  • Internal cleanup in route preparation logic to be fully shared for all DSLs (before the XML DSLs and Java DSL was a bit different)
  • Fixed InterceptFrom to work with from endpoints defined using ref's or instances (eg everything but uris)
  • Fixed HTTP and HTTP4 producers double encoding endpoint uri, when calling external service
  • Fixed JMS producer not working with OracleAQ throwing exception on accessing JMSReplyTo
  • Added support for using OSGi Blueprint property placeholder service with Camel routes. Camel uses convention over configuration so all you have to do is to define the OSGi blueprint placeholder and you can refer to those from the . Pay attention to the placeholder tokens using by Camel is {{ }}.
  • and is now easier to use with property placeholders
  • Properties component now supports JVM system properties and OS environment variables in the locations option. For example using "file:${karaf.home}/etc/foo.properties" to refer to the foo.proeprties file in the Apache Karaf installation.
  • Fixed an issue with Recipient List in parallel mode, not reusing background aggregator thread
  • Fixed an issue with dependency ordering when using Spring's depends-on attribute between multiple .
  • SERVLET component doesn't hijack Spring to start the web application anymore. Spring and CamelServlet is now independent. See more at important changes to consider when upgrading.
  • Fixed all Camel Maven Archetypes to use new Maven format and ensured they all work out of the box.
  • Web Console upgraded to Scalate 1.4.1, and the webpages is now precompiled
  • JT400 can now execute program calls on the AS/400
  • Cache now only mandates a message body for the add and update operations. This makes get operation possible for messages with no existing body.
  • Fixed issue when Jetty continuation timeouts has been triggered before Asynchronous Routing Engine has reply ready. This would cause Jetty to log WARN logs about illegal state.

New in Apache Camel 2.4.0 (Aug 6, 2010)

  • Spring 3.0.3 is now the default Spring version used by Camel.
  • Fully non blocking Asynchronous Routing Engine which all EIPs and some Camel Components supported.
  • New feature to use scheduled delayed redelivery attempts (they are fully asynchronous and non blocking). You need to enable this using the option asyncDelayedRedelivery.
  • Fixed a potential dead-lock when using Aggregator with timeout completion set.
  • The camel-spring module now supports OSGi out of box, which renders camel-osgi as @deprecated.
  • OSGi blueprint is now supported
  • Added new to scan the Registry for RouteBuilder instances, just as scanning the classpath etc.
  • Manually started routes is now also Graceful Shutdown by Camel
  • Fixed issue using RouteContextRef with multiple CamelContext from the same Spring ApplicationContext.
  • Bindy now supports Fixed-Length format message with padding, alignment (Left or Right)
  • Improved and fixes some issues with the FTP component.
  • Improved and fixed some issues using MultiPartForm with Jetty.
  • Add ability to configure Bindy to remove whitespace when binding Numeric positions
  • Added option useOriginalBody to OnCompletion
  • Fixed issue when using mockito for testing when it uses CGLib proxies
  • Fixed issue with @Consume not running in an unit of work to ensure callbacks is invoked when its done
  • Routing Slip now uses Expression to define the slip. This is similar to the Recipient List pattern
  • The security context can be passed from CXF to other camel Components.
  • ManagementAgent settings can now be set using setters from Java, instead of having to use JVM system properties. See tip in Camel JMX wiki page.
  • Resequencer in batch mode has two new options allowDuplicates and reverse which allows you to use it for re-ordering messages from JMS queues based on JMSPriority
  • Tighten up the ProducerTemplate API a bit, see more details in the section Important changes to consider when upgrading.
  • HTTP now better supports sending binary files.
  • Fixed problem with using Quartz in OSGi and having Camel applications being hot-deployed which potentially could cause Quartz to stop scheduling in applications which haven't been stopped.
  • Fixed issue with pausing and resuming jobs when running Quartz in clustered mode
  • Added options on Quartz component to specify location of custom quartz.properties file to load from classpath.
  • Upgraded to latest Quartz release 1.8.3.
  • Introduced StartupListener to allow components/endpoints/producers/consumers etc. as a listener to be notified when CamelContext have just been started. This allows any custom logic to be executed as a late starter. This ensures Quartz scheduler is only started when all the routes and so forth is started and running.
  • Fixed issue with FTP configuring starting directory from uri not accepting an absolute path. In the endpoint uri just define two leading / to indicate absolute, eg "ftp:admin:secret@someserver//absolutepath/foo/bar".
  • Added fromRoute to NotifyBuilder.
  • Improved the CSV component.
  • Fixed issue with Direct endpoint having no consumers if endpoint have been evicted from CamelContext internal LRUCache.
  • The RouteBuilder now have simple and xpath expression builder methods out of the box.
  • Upgraded to latest release of Scala 2.8.0RC7 in Scala DSL
  • camel-hawtdb updated to HawtDB 1.1 picks up several bug fixes that improves stability and performance.
  • Fixed issue with splitting files using tokenizer not being able to delete/move file after processing is done on Windows platform.
  • maxMessagesPerPoll is now applied eagerly to limit intaking files earlier for the File and FTP components, Thus avoid excessive memory consumption if you poll directories which contains 100.000+ files.
  • Added connectTimeout, soTimeout and timeout to FTP so its easier to configure timeouts.
  • Consolidated support for per platform disabling of tests across the entire test suite.
  • Introduced ProcessorFactory to be able to use a custom factory to be able to manipulate Processor creation process. For example to add additional outputs or manipulate the route model.
  • camel-jms now supports Oracle AQ
  • Added a Debugger API to be leveraged by 3rd party tooling.
  • The beanRef and methodCall DSLs will eager check on startup, the bean reference exists in Registry and the provided method name is a valid method name on the bean as well. This helps to fail fast if end users have a typo in their routes.
  • JMX now exposes notifications which listeners can receive.
  • Added ExchangeRedeliveryEvent event being emitted when Camel Error Handler attempts a redelivery.
  • Properties component can lookup java.util.Properties from the Registry using the ref: prefix.
  • Spring Security is upgrade to spring security 3.0.3.RELEASE.
  • New Enterprise Integration Patterns
  • New Components
  • EJB to access EJB beans in a similar way as with the Bean component
  • Class to invoke beans defined using the fully qualified class name
  • OSGi Blueprint to use Camel with OSGi blueprint

New in Apache Camel 2.3.0 (Jun 3, 2010)

  • The Camel 2.3.0 release features some 276 issues resolved. Most notable (in no particular order) are:
  • Overhauled threading model and introducing threadPoolProfile to define profiles for thread pools to have easy configuration.
  • Improved the Failover load balancer to support round robin mode and a few other options as well.
  • Fixed issue with Camel not being able to run deployed as a WAR in WebLogic server.
  • Total overhaul of the Aggregator EIP, which now has better completion triggers, and supports pluggable repository. For example to use camel-hawtdb as persistent store. Also added support for recovery and transactional behavior when using camel-hawtdb.
  • Graceful Shutdown now shut down routes in the reverse order in which they was started. Option shutdownRoutesInReverseOrder can be used to control this behavior.
  • Added ExchangeSentEvent to EventNotifier which contains time taken and is emitted when an Exchange is sent to an Endpoint. This allows end users to easily gather performance stats for Exchange send to endpoints.
  • Simple and Bean languages now has a build in OGNL notation which allows you to reference from Map or List structures and as well to invoke methods in a OGNL like notation. See more details at Simple wiki page.
  • camel-jetty supports the multipart/form post out of box.
  • Property placeholders in for example endpoint uris is not natively supported in camel-core which means you no long need to use Spring for that. It works therefore in any environment as its provided out of the box in camel-core.
  • Added org.apache.camel.builder.ProxyBuilder to easier create Camel Proxy in Java / Java DSL.
  • ProducerTemplate and ConsumerTemplate can now be configured with a maximumCacheSize to control how many producers/consumers they can cache.
  • Reduced registering producers in JMX to prevent using too much memory and potentially registering short lived producers which didn't bring much value of being managed as well.
  • Now camel provides a karaf feature file with Spring 3.0.2.RELEASE, the features url is "mvn:org.apache.camel.karaf/apache-camel/2.3.0/xml/features-spring3"
  • Also notable is the number of new components added to this release:
  • camel-nagios for sending passive checks to Nagios
  • properties for using property placeholders to resolve endpoint uris.
  • camel-gae extensions: gauth component for implementing OAuth consumers, glogin component for programmatic login to Google App Engine applications from Java clients.
  • camel-hawtdb as persistent store for the Aggregator EIP.
  • camel-netty for working with TCP and UDP protocols using Java NIO based capabilities offered by the JBoss Netty.
  • camel-scalate for working with the ScalaTE template framework
  • camel-exec for executing system commands
  • camel-bean-validator performs bean validation of the message body using the Java Bean Validation API (JSR 303).
  • camel-spring-security support to integrate the spring security with Camel.
  • camel-crypto using Camel cryptographic endpoints and Java's Cryptographic extension it is easy to create Digital Signatures for Exchanges.
  • camel-eclipse for using Camel with Eclipse RCP.