blob: 274c7e15bfab0b4b672e959482db72baa051e601 [file] [log] [blame]
= 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 stack traces. Previously only a subset 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 have also changed namespaces:
|===
|Old Namespace | New Namespace
| `http://camel.apache.org/schema/cxf`
| `http://camel.apache.org/schema/cxf/jaxws`
| `http://camel.apache.org/schema/cxf/camel-cxf.xsd`
| `http://camel.apache.org/schema/cxf/jaxws/camel-cxf.xsd`
| `http://camel.apache.org/schema/cxf`
| `http://camel.apache.org/schema/cxf/jaxrs`
| `http://camel.apache.org/schema/cxf/camel-cxf.xsd`
| `http://camel.apache.org/schema/cxf/jaxrs/camel-cxf.xsd`
|===
IMPORTANT: 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.