Apache Camel 3.x Upgrade Guide

This document is for helping you upgrade your Apache Camel application from Camel 3.x to 3.y. For example if you are upgrading Camel 3.0 to 3.2, then you should follow the guides from both 3.0 to 3.1 and 3.1 to 3.2.

Upgrading Camel 3.17 to 3.18

camel-core

Camel will now mask all known secret values when logging endpoint URIs to avoid leaking sensitive details such as from stacktraces. Previously only a sub set of known secret keys was masked.

The type converter from InputStream to byte[] will now close the input stream after the conversion.

The TimeUtils.printDuration method outputs now in a more compact format (especially for long durations). Before 4d12h57m49s and now 4d12h. Use precise=true to include all details.

camel-console

The AbstractDevConsole has changed the method doCall into two separate methods doCallText and doCallJson to better separate output between text and json based.

camel-cxf

The camel-cxf JAR has been split up into SOAP vs REST and Spring and non Spring JARs.

Users should therefore choose camel-cxf to migrate among the following JARs:

  • camel-cxf-soap

  • camel-cxf-spring-soap

  • camel-cxf-rest

  • camel-cxf-spring-rest

  • camel-cxf-transport

  • camel-cxf-spring-transport

For example if you were using CXF for SOAP and with Spring XML, then you would need to migrate from using camel-cxf to camel-cxf-spring-soap and camel-cxf-spring-transport.

When using Spring Boot then you need to migrate from camel-cxf-starter to use SOAP or REST:

  • camel-cxf-soap-starter

  • camel-cxf-rest-starter

The camel-cxf XML XSD schemas has also changed namespaces:

The namespace for Apache Camel Karaf (camel-cxf-blueprint) has not changed. This module has not been split-up and comes with both SOAP and REST combined as before.

And the camel-cxf SOAP component is moved to a new jaxws sub-package, i.e. org.apache.camel.component.cxf is now org.apache.camel.component.cxf.jaws.

This means, for example, the CxfComponent class is now located in org.apache.camel.component.cxf.jaxws.

Some classes in the following packages were refactored, and the package was updated, if you were using one of those packages and, after the migration, a ClassNotFoundException is thrown, an update should be considered

Old Package New Package

org.apache.camel.component.cxf

org.apache.camel.component.cxf.common

org.apache.camel.component.cxf.interceptors

org.apache.camel.component.cxf.util

org.apache.camel.component.cxf.converter

org.apache.camel.component.cxf.jaxrs

org.apache.camel.component.cxf

org.apache.camel.component.cxf.jaxws

org.apache.camel.component.cxf.spring

org.apache.camel.component.cxf.spring.jaxrs

org.apache.camel.component.cxf.spring

org.apache.camel.component.cxf.spring.jaxws

org.apache.camel.component.cxf

org.apache.camel.component.cxf.spring.jaxws

org.apache.camel.component.cxf.transport.spring

org.apache.camel.component.cxf.spring.transport

org.apache.camel.component.cxf.common.header

org.apache.camel.component.cxf.transport.header

org.apache.camel.component.cxf.common.message

org.apache.camel.component.cxf.transport.message

camel-endpointdsl

The options for lazyStartProducer and bridgeErrorHandler has moved into the advanced group.

camel-google-calendar

The keyResource option has been changed to serviceAccountKey to match to Google semantic. Then, if you use the keyResource to Google Calendar component, you should update it to serviceAccountKey.

camel-google-drive

The keyResource option has been changed to serviceAccountKey to match to Google semantic. Then, if you use the keyResource to Google Drive component, you should update it to serviceAccountKey.

camel-jsonpath

There is a new option unpackArray in Camel 3.18.3 that unpacks a single-element Json array, matched by a Jsonpath, into an object. This option is disabled by default (this behaviour was enabled by default in previous Camel versions). There is a new expression jsonpathUnpack(String text, Class<?> resultType) that makes use of this new option.

camel-yaml-dsl

The YAML DSL schema files camel-yaml-dsl.json and camelYamlDsl.json has been moved from root to schema sub folder in the JAR.

camel-karaf

The camel-milo feature has been removed.