This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push:
new 0bc22d4 Splitup the 3.x upgrade guide into sub pages
0bc22d4 is described below
commit 0bc22d42e19662cb05bf685f776298032286e862
Author: Claus Ibsen <[email protected]>
AuthorDate: Fri May 15 06:59:00 2020 +0200
Splitup the 3.x upgrade guide into sub pages
---
.../ROOT/pages/camel-3x-upgrade-guide-3_1.adoc | 559 +++++++++
.../ROOT/pages/camel-3x-upgrade-guide-3_2.adoc | 559 +++++++++
.../ROOT/pages/camel-3x-upgrade-guide-3_3.adoc | 66 ++
.../ROOT/pages/camel-3x-upgrade-guide-3_4.adoc | 38 +
.../modules/ROOT/pages/camel-3x-upgrade-guide.adoc | 1212 +-------------------
5 files changed, 1230 insertions(+), 1204 deletions(-)
diff --git
a/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide-3_1.adoc
b/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide-3_1.adoc
new file mode 100644
index 0000000..79b39cf
--- /dev/null
+++ b/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide-3_1.adoc
@@ -0,0 +1,559 @@
+= 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.0 to 3.1
+
+=== camel-ahc, camel-netty-http, camel-undertow
+
+These Camel components now no longer have dependency on Javax Servlet.
+
+=== camel-undertow
+
+The exception class `HttpOperationFailedException` is now from package
`org.apache.camel.http.base` instead of `org.apache.camel.http.common`.
+The Camel undertow producer throws this exception.
+
+=== came-bean
+
+The bean component has been changed to behave as singleton scoped by default.
+This means that the bean is created or looked up once and reused.
+
+The option `cache` has been deprecated in favour of the new `scope` option
that by default is `Singleton`. You can set this to `Prototype` to use the old
behaviour.
+
+[NOTE]
+====
+Setting this to Prototype will let Camel create/lookup a new bean instance,
per use; which acts as prototype scoped. However beware that if you lookup the
bean, then the registry that holds the bean, would return a bean accordingly to
its configuration, which can be singleton or prototype scoped. For example if
you use Spring, or CDI, which has their own settings for setting bean scopes.
+====
+
+=== camel-etcd
+
+The `camel-etcd` component has changed its endpoint syntax from
`etcd:action/path` to
+`etcd-keys:path`, `etcd-stats:path`, or `etcd-watch:path`.
+
+For example before
+
+[source,text]
+----
+etcd:stats/leader
+----
+
+Should be changed to
+----
+etcd-stats:leader
+----
+
+This change was needed as the 3 actions could not share the same
component/endpoint and had to be separated.
+
+=== camel-ftp
+
+ The stepwise functionality (stepwise=true) is not supported for stream
download (treamDownload=true).
+
+=== camel-irc
+
+The `camel-irc` component has changed its endpoint syntax and removed option
#room as a part of the url path. Allowed syntax is:
+
+[source,text]
+----
+irc:nick@host[:port]?[options]
+----
+
+=== camel-milo
+
+The `camel-milo` client component has changed its endpoint syntax from
`milo-client:tcp` to `milo-client:opc.tcp`.
+For example before
+
+[source,text]
+----
+milo-client:tcp://foo:bar@localhost:1234
+----
+
+Should be changed to
+----
+milo-client:opc.tcp://foo:bar@localhost:1234
+----
+
+The `camel-milo` server component requires Java 9 at runtime.
+Property `strictEndpointUrlsEnabled` is no longer supported.
+Properties`hostName` and `serverName` are replaced by `path`.
+To successfully use certificates for secured communication, JCE Jurisdiction
Policy File Default
+has to be *Unlimited* (which is by default since Java 9+).
+
+=== camel-nats
+
+The `camel-nats` component has changed its endpoint syntax from `nats:servers`
to `nats:topic`.
+For example before
+
+[source,text]
+----
+nats:myserver:4222?topic=myTopic
+----
+
+Should be changed to
+----
+nats:myTopic?servers=myserver:4222
+----
+
+This change is motivated by allowing to configure servers on component level,
+and also for Spring Boot auto-configuration etc.
+
+=== camel-nsq
+
+The `camel-nsq` component has changed its endpoint syntax from `nsq:servers`
to `nsq:topic`.
+For example before
+
+[source,text]
+----
+nsq:myserver:4161/myTopic
+----
+
+Should be changed to
+----
+nsq:myTopic?servers=myserver:4161
+----
+
+This change is motivated by allowing to configure servers on component level,
+and also for Spring Boot auto-configuration etc.
+
+=== camel-ipfs
+
+The `camel-ipfs` component has changed its endpoint syntax from
`nsq:host:port/command` to `ipfs:command`.
+The host and port is now configured on the component level instead.
+
+For example before
+
+[source,text]
+----
+ipfs:127.0.0.1:5001/add
+----
+
+Should be changed to
+----
+ipfs:add
+----
+
+=== camel-xmlsecurity
+
+The `camel-xmlsecurity` component has changed its endpoint syntax from
`xmlsecurity:command/name` to
+`xmlsecurity-sign:name`, `xmlsecurity-verify:name`.
+
+For example before
+
+[source,text]
+----
+xmlsecurity:verify/foo
+----
+
+Should be changed to
+----
+xmlsecurity-verify:foo
+----
+
+This change was needed as the 2 commands could not share the same
component/endpoint and had to be separated.
+
+=== spi-annotations
+
+The `spi-annotations` JAR is mandatory but was mistakenly defined as optional
scope. The content of this JAR
+is now embedded directly into `camel-api` JAR so end users does not have to
include or depend on `spi-annotations` JAR anymore.
+
+=== camel-core-engine and camel-jaxp
+
+XML and JAXB has been moved out of camel-base and camel-core-engine.
+
+The module camel-jaxp has been renamed to camel-xml-jaxp.
+
+The camel-xml-jaxp JAR has XML parsers and type converters.
+The camel-xml-jaxb has support for loading XML DSL routes using JAXB.
+An alternative is to use the new camel-xml-io for loading XML routes which is
more light-weight and faster than JAXB.
+
+=== JAXB is now optional
+
+JAXB is now optional in Camel and only needed when using XML routes with the
`camel-xml-jaxb` JAR
+for loading and parsing the routes with JAXB. There is an alternative
implementation with `camel-xml-io` (see above).
+
+This means that `jaxb-core` and `jaxb-impl` JARs no longer are needed on the
classpath and as such has been removed
+as dependency in the various Camel `pom.xml` files.
+
+There are a number of components that uses JAXB such as `camel-spring`,
`camel-blueprint`, `camel-cdi` for their support
+of using XML for beans and Camel XML routes. And a few components such as
`camel-soap` etc.
+
+But at general then Camel is now lighter in classpath dependency by not
requiring to have JAXB present.
+
+=== Package scanning @TypeConverter
+
+Camel has now been configured to not package scan for custom `@Converter`
classes on startup.
+Type converters are now loaded and registered in faster way via source code
generated loader classes
+by having `@Converter(loader = true)` specified. If you have custom converters
and have not migrated to use
+source code generated loaders, you can enable package scanning by setting
+
+[source,java]
+----
+camelContext.setLoadTypeConverters(true);
+----
+
+And in XML:
+[source,xml]
+----
+<camelContext loadTypeConverters="true">
+...
+</camelContext>
+----
+
+And in Spring Boot `application.properties`:
+[source,properties]
+----
+camel.loadTypeConverters=true
+----
+
+=== Graceful Shutdown Timeout
+
+When shutting down Camel, then the default timeout has changed from 300
seconds (5 minutes) to 45 seconds.
+The 45 seconds was chosen as 30 seconds is a common timeout to use for remote
protocols, so we wanted to give
+Camel a bit more time, and hence added 15 seconds so the default is 45 seconds.
+
+=== Message History
+
+The message history is now default disabled (due to optimize core for lower
footprint out of the box).
+See the xref:{eip-vc}:eips:message-history.adoc[Message History] documentation
for how to enabled message history.
+
+=== Inflight Repository
+
+The inflight repository now does no longer allow browsing each individual
exchange (due to optimize core for lower footprint out of the box).
+To enable browsing then you can turn this on via:
+
+[source,java]
+----
+ context.getInflightRepository().setInflightBrowseEnabled(true);
+----
+
+And in XML DSL:
+
+[source,xml]
+----
+<camelContext inflightRepositoryBrowseEnabled="true">
+
+</camelContext>
+----
+
+=== Component Extension Verifier
+
+When using component verifier
(`org.apache.camel.component.extension.ComponentVerifierExtension`) then you
+would know need to add `camel-core-catalog` to the classpath to make this
useable. If the JAR is missing,
+there will be an exception stating that `RuntimeCamelCatalog` is not found and
that this JAR should be added.
+
+=== ManagedRuntimeCatalog
+
+The `ManagedRuntimeCatalog` JMX MBean is removed and no longer available.
+
+=== Spring Boot JMX
+
+The `camel-management` dependency of `camel-spring-boot` was removed as Spring
Boot 2.2+ disables JMX by default.
+
+To continue using JMX with Camel Spring Boot add the following dependency:
+
+[source,xml]
+----
+<dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-management</artifactId>
+</dependency>
+----
+
+=== Custom components
+
+Camel now uses Camel Package Maven Plugin instead of `camel-apt` APT compiler
to generate component meta data.
+
+Custom components should then change in the pom.xml from:
+
+[source,xml]
+----
+<dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>apt</artifactId>
+ <scope>provided</scope>
+</dependency>
+----
+
+To the following:
+
+[source,xml]
+----
+ <plugin>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-package-maven-plugin</artifactId>
+ <version>${camel-version}</version>
+ <executions>
+ <execution>
+ <id>generate</id>
+ <goals>
+ <goal>generate-component</goal>
+ </goals>
+ <phase>process-classes</phase>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>initialize</phase>
+ <goals>
+ <goal>add-source</goal>
+ <goal>add-resource</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>src/generated/java</source>
+ </sources>
+ <resources>
+ <resource>
+ <directory>src/generated/resources</directory>
+ </resource>
+ </resources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <!--
+ Recompile source after generated loader classes have been created.
+ The maven-compiler-plugin must be defined in the POM after the
+ camel-package-maven-plugin so recompile runs after generated
+ sources have been created.
+
+ Adjust configuration for the JDK version your project uses.
+ -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.8.1</version>
+ <configuration>
+ <source>1.11</source>
+ <target>1.11</target>
+ </configuration>
+ <executions>
+ <execution>
+ <id>recompile</id>
+ <goals>
+ <goal>compile</goal>
+ </goals>
+ <phase>process-classes</phase>
+ </execution>
+ </executions>
+ </plugin>
+----
+
+=== API changes
+
+==== log changed to private static LOG
+
+The `ServiceSupport` class has changed its logging from instance to static,
which means any inherited class that
+uses `log` would need to change the code to compile. This may happen in custom
Camel components.
+
+Before you may have:
+
+[source,java]
+----
+ log.debug("Sending message to foobar service: {}", messageId);
+----
+
+You then need to migrate the logging to also be static:
+
+[source,java]
+----
+ private static final Logger LOG =
LoggerFactory.getLogger(FooBarProducer.class);
+
+ LOG.debug("Sending message to foobar service: {}", messageId);
+----
+
+==== Exchange
+
+The `Exchange` API has been modified slightly as part of an optimization
effort.
+The returned value of `getCreated` is changed from `java.util.Date` to `long`
which is the time millis.
+The `Exchange.CREATED_TIMESTAMP` is no longer stored as exchange property, but
you should use the `getCreated` method on `Exchange`.
+The returned value of `isExternalRedelivered` is changed from `Boolean` to
`boolean`.
+
+Some of the advanced and API for component developers on `Exchange` has been
moved to an extended interface `ExtendedExchange`.
+The following methods has been moved:
+
+- setFromEndpoint
+- setFromRouteId
+- setUnitOfWork
+- addOnCompletion
+- containsOnCompletion
+- handoverCompletions
+
+You can use these methods by adapting to the extended exchange as shown below:
+
+[source,java]
+----
+exchange.adapt(ExtendedExchange.class).addOnCompletion(...);
+----
+
+==== Message
+
+The message ID will now default to use the same id as Exchange ID as messages
are associated with the exchange
+and using different IDs does not offer much value. Another reason is to
optimize for performance to avoid generating new IDs.
+A few Camel components do provide their own message IDs such as the JMS
components.
+
+==== UnitOfWork
+
+For advanced Camel users whom implement custom `UnitOfWork` should implement
the new `isBeforeAfterProcess()' method and return true of false,
+whether Camel should invoke the before and after processor methods.
+
+The method `getId` has been removed.
+
+==== Cookies
+
+Cookies from `camel-http-common` has been moved into a new `camel-http-base`
JAR.
+The package `org.apache.camel.http.common.cookie` is renamed to
`org.apache.camel.http.base.cookie`.
+
+==== Exchange.ROUTE_STOP
+
+To signal an `Exchange` to stop continue routing has changed from setting the
exchange property `Exchange.ROUTE_STOP` to true.
+Instead you should now use the `setRouteStop` method on the `Exchange` API.
+
+[source,java]
+----
+ exchange.setProperty(Exchange.ROUTE_STOP, Boolean.TRUE);
+----
+
+Should now be:
+[source,java]
+----
+ exchange.setRouteStop(true);
+----
+
+==== Exchange.ROLLBACK_ONLY and Exchange.ROLLBACK_ONLY_LAST
+
+To signal an `Exchange` to rollback a transaction has changed from setting the
exchange property `Exchange.ROLLBACK_ONLY` to true.
+Instead you should now use the `setRollbackOnly` method on the `Exchange` API
(the same for rollback only last).
+
+[source,java]
+----
+ exchange.setProperty(Exchange.ROLLBACK_ONLY, Boolean.TRUE);
+----
+
+Should now be:
+
+[source,java]
+----
+ exchange.setRollbackOnly(true);
+----
+
+==== Exchange.ERRORHANDLER_HANDLED
+
+The exchange property `Exchange.ERRORHANDLER_HANDLED` was used to indicate
that the error handling mechanism for a given exchange
+had completed. This property sometimes had to be conveyed by aggregation
strategies, so instead of
+
+[source,java]
+----
+ oldExchange.getProperties().put(
+ Exchange.ERRORHANDLER_HANDLED,
+ newExchange.getProperties().get(Exchange.ERRORHANDLER_HANDLED));
+----
+
+one should now use:
+
+[source,java]
+----
+ Boolean handled = newExchange.adapt(ExtendedExchange.class)
+ .getErrorHandlerHandled();
+ oldExchange.adapt(ExtendedExchange.class)
+ .setErrorHandlerHandled(handled);
+----
+
+==== ModelHelper removed
+
+The class `org.apache.camel.model.ModelHelper` has been removed. Instead you
can use its functionality from `ExtendedCamelContext` by
+the `getModelToXMLDumper` and `getXMLRoutesDefinitionLoader` methods which has
APIs similar to `ModelHelper`.
+
+==== JsonSchemaHelper removed
+
+The class `org.apache.camel.tooling.util.JSonSchemaHelper` has been removed.
Instead you can use utils coming from camel-util-json
+and the class `org.apache.camel.tooling.util.PackageHelper`
+
+==== camel-xml-jaxp
+
+The class `org.apache.camel.processor.validation.PredicateValidatingProcessor`
has moved from `camel-xml-jaxp` JAR
+to `camel-support` JAR and renamed to
`org.apache.camel.support.processor.PredicateValidatingProcessor`.
+
+==== Java DSL
+
+The Java DSL has been revisited and the following methods have been removed:
+
+* ExpressionClause::body(Supplier<Object>)
+* MulticastDefinition::onPrepare(Supplier<Processor>)
+* ProcessorDefinition::process(Supplier<Processor>)
+* ProcessorDefinition::setBody(Supplier<Result>)
+* RecipientListDefinition::onPrepare(Supplier<Processor>)
+* SplitDefinition::onPrepare(Supplier<Processor>)
+* WireTapDefinition::newExchange(Supplier<Processor>)
+* WireTapDefinition::onPrepare(Supplier<Processor>)
+
+This change is motivated by the need to remove method ambiguity for untyped
languages such as Groovy and JavaScript, for more info see
https://issues.apache.org/jira/browse/CAMEL-14300
+
+==== CamelContext
+
+Some unused methods have been removed from `CamelContext` which were not part
of the public API. The following methods have been removed:
+
+* getProducerServicePool
+* setProducerServicePool
+* getPollingConsumerServicePool
+* setPollingConsumerServicePool
+
+==== Internal API changes
+
+Remove the method `getProcessors` from `Pipeline` as you should use the `next`
method instead to access a read-only view of the processors.
+
+==== @Experimental
+
+The `@Experimental` annotation is moved from `meta-annotations` JAR to
`camel-api`
+and moved from package `org.apache.camel.meta` to `org.apache.camel`.
+And the meta-annotations has been removed.
+
+==== Property Placeholders
+
+The support for out-of-band property placeholders has been removed.
+This means that XML that were using the
`http://camel.apache.org/schema/placeholder`
+namespace and that the java builders using the `.placeholder(key, value).`
have to
+be modified.
+
+[source,java]
+----
+ from("direct:start")
+ .multicast()
+ .placeholder("stopOnException", "stop")
+ .to("mock:a")
+----
+should be rewritten as:
+[source,java]
+----
+ from("direct:start")
+ .multicast()
+ .stopOnException("{{stop}}")
+ .to("mock:a")
+----
+
+and
+[source,xml]
+----
+ <route>
+ <from uri="direct:start"/>
+ <multicast prop:stopOnException="stop">
+ <to uri="mock:a"/>
+ </multicast>
+ </route>
+----
+should be rewritten as:
+[source,xml]
+----
+ <route>
+ <from uri="direct:start"/>
+ <multicast stopOnException="{{stop}}">
+ <to uri="mock:a"/>
+ </multicast>
+ </route>
+----
+
diff --git
a/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide-3_2.adoc
b/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide-3_2.adoc
new file mode 100644
index 0000000..0a1645e
--- /dev/null
+++ b/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide-3_2.adoc
@@ -0,0 +1,559 @@
+= 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.1 to 3.2
+
+=== JndiRegistry
+
+The deprecated class `org.apache.camel.impl.JndiRegistry` has been removed.
The class `org.apache.camel.support.jndi.JndiBeanRepository` located in
`org.apache.camel:camel-support` should be used instead.
+
+=== Rest Configuration
+
+The rest configuration has been simplified and there is now a single
RestConfiguration instance
(https://issues.apache.org/jira/browse/CAMEL-13844[CAMEL-13844]) per Camel
Context.
+
+The following methods have been removed:
+
+* org.apache.camel.CamelContext#addRestConfiguration(RestConfiguration
restConfiguration)
+* org.apache.camel.CamelContext#getRestConfiguration(String component, boolean
defaultIfNotFound)
+* org.apache.camel.CamelContext#getRestConfigurations
+
+https://issues.apache.org/jira/browse/CAMEL-13844
+
+=== Camel Cloud
+
+The following `ServiceDiscovery` implementation has been removed:
+
+* org.apache.camel.impl.cloud.CachingServiceDiscovery
+* org.apache.camel.impl.cloud.CachingServiceDiscoveryFactory
+
+https://issues.apache.org/jira/browse/CAMEL-14813
+
+=== Camel with Karaf and OSGi
+
+Camel on Apache Karaf / OSGi has been moved to its own project at:
https://github.com/apache/camel-karaf
+
+The Maven dependencies has changed the groupid from `org.apache.camel` to
`org.apache.camel.karaf`.
+
+For example the `camel-blueprint` would be changed from
+
+[source,xml]
+----
+<dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-blueprint</artifactId>
+ <version>3.1.0</version>
+</dependency>
+----
+
+To:
+
+[source,xml]
+----
+<dependency>
+ <groupId>org.apache.camel.karaf</groupId>
+ <artifactId>camel-blueprint</artifactId>
+ <version>3.2.0</version>
+</dependency>
+----
+
+The Camel Karaf features are the same as before, you can still install Camel
in Karaf shell via:
+[source,text]
+----
+feature:repo-add camel 3.2.0
+feature:install camel
+----
+
+==== Other components involved
+
+- Camel-test-blueprint
+
+[source,xml]
+----
+<dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-blueprint</artifactId>
+ <version>3.1.0</version>
+</dependency>
+----
+
+To:
+
+[source,xml]
+----
+<dependency>
+ <groupId>org.apache.camel.karaf</groupId>
+ <artifactId>camel-test-blueprint</artifactId>
+ <version>3.2.0</version>
+</dependency>
+----
+
+- Camel-test-karaf
+
+[source,xml]
+----
+<dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-karaf</artifactId>
+ <version>3.1.0</version>
+</dependency>
+----
+
+To:
+
+[source,xml]
+----
+<dependency>
+ <groupId>org.apache.camel.karaf</groupId>
+ <artifactId>camel-test-karaf</artifactId>
+ <version>3.2.0</version>
+</dependency>
+----
+
+- Camel-eventadmin
+
+[source,xml]
+----
+<dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-eventadmin</artifactId>
+ <version>3.1.0</version>
+</dependency>
+----
+
+To:
+
+[source,xml]
+----
+<dependency>
+ <groupId>org.apache.camel.karaf</groupId>
+ <artifactId>camel-eventadmin</artifactId>
+ <version>3.2.0</version>
+</dependency>
+----
+
+- Camel-kura
+
+[source,xml]
+----
+<dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-kura</artifactId>
+ <version>3.1.0</version>
+</dependency>
+----
+
+To:
+
+[source,xml]
+----
+<dependency>
+ <groupId>org.apache.camel.karaf</groupId>
+ <artifactId>camel-kura</artifactId>
+ <version>3.2.0</version>
+</dependency>
+----
+
+- Camel-osgi-activator
+
+[source,xml]
+----
+<dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-osgi-activator</artifactId>
+ <version>3.1.0</version>
+</dependency>
+----
+
+To:
+
+[source,xml]
+----
+<dependency>
+ <groupId>org.apache.camel.karaf</groupId>
+ <artifactId>camel-osgi-activator</artifactId>
+ <version>3.2.0</version>
+</dependency>
+----
+
+- Camel-paxlogging
+
+[source,xml]
+----
+<dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-paxlogging</artifactId>
+ <version>3.1.0</version>
+</dependency>
+----
+
+To:
+
+[source,xml]
+----
+<dependency>
+ <groupId>org.apache.camel.karaf</groupId>
+ <artifactId>camel-paxlogging</artifactId>
+ <version>3.2.0</version>
+</dependency>
+----
+
+==== Introducing a camel-karaf-bom
+
+We introduce a camel-karaf-bom too, so the end-users should be able to have
all of this dependencies easier:
+
+[source,xml]
+----
+ <dependencyManagement>
+ <dependencies>
+ <!-- Add Camel BOM -->
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-bom</artifactId>
+ <version>${project.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ <!-- Add Camel Karaf BOM -->
+ <dependency>
+ <groupId>org.apache.camel.karaf</groupId>
+ <artifactId>camel-karaf-bom</artifactId>
+ <version>${camel.karaf.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+----
+
+In this way you'll get both the boms and all the "goodies"
+
+=== camel-elytron
+
+Transitive dependencies from org.wildfly.security:wildfly-elytron were removed.
+
+=== camel-spark-rest
+
+This component has been removed. Use any of the other REST capable components,
such as `camel-jetty`, `camel-netty-http`
+or `camel-undertow`.
+
+=== EIPs with cacheSize option
+
+The `cacheSize` option on EIPs has been improved to reduce memory usage when
the cache is disabled by
+setting the value to -1. One of the optimizations is that new endpoints will
not be added to the endpoint registry,
+but discarded after use. This avoids storing additional endpoints in the cache
(memory) as the cache should be disabled (cacheSize=-1).
+
+See more details in the documentation for the `cacheSize` option on the EIPs.
+
+=== Configuring components via Java setters
+
+Configuring Camel components from plain Java code has changed in some
components where they were using
+delegate setters for a nested configuration class. These delegates has been
removed, to ensure configuration
+is more consistent and aligned with how endpoints is configured as well, and
by using source code generated configurer classes.
+
+The following Camel components has been affected and changed on the component
level:
+
+- camel-aws
+- camel-aws2
+- camel-consul
+- camel-etcd
+- camel-infinispan
+- camel-kafka
+- camel-servicenow
+- camel-ssh
+- camel-stomp
+- camel-xmlsecurity
+- camel-yammer
+
+This only affects if you are configuring these components using Java code or
XML `<bean>` style.
+
+For example
+
+[source,java]
+----
+KafkaComponent kafka = new KafkaComponent();
+kafka.setBrokers("mybroker1:1234,mybroker2:1234");
+----
+
+Should now be:
+
+[source,java]
+----
+KafkaComponent kafka = new KafkaComponent();
+kafka.getConfiguration().setBrokers("mybroker1:1234,mybroker2:1234");
+----
+
+And in XML:
+
+[source,xml]
+----
+<bean id="kafka" class="org.apache.camel.component.kafka.KafkaComponent">
+ <property name="brokers" value="mybroker1:1234,mybroker2:1234"/>
+</bean>
+----
+
+Should now be:
+
+[source,xml]
+----
+<bean id="kafka" class="org.apache.camel.component.kafka.KafkaComponent">
+ <property name="configuration">
+ <property name="brokers" value="mybroker1:1234,mybroker2:1234"/>
+ </property>
+</bean>
+----
+
+=== Configuring components via Spring Boot auto configuration
+
+Configuring Camel spring boot components has changed its option keys to be
flattened and have the `.configuration` prefix
+removed now.
+
+Before in application.properties
+
+[source,properties]
+----
+camel.component.kafka.configuration.brokers=mybroker1:1234,mybroker2:1234
+----
+
+Should now be
+[source,properties]
+----
+camel.component.kafka.brokers=mybroker1:1234,mybroker2:1234
+----
+
+This applies to all the Camel spring boot _starter_ JARs where basically
`.configuration` should be removed.
+
+=== Configuring camel-activemq, camel-amqp and camel-stomp via Spring Boot
auto configuration
+
+When configuring these components from spring boot auto-configuration then the
URL for the broker was named `broker-u-r-l`
+in the spring boot auto configuration support. This has been renamed to
`broker-url` and a few other options too.
+
+Before:
+
+[source,properties]
+----
+camel.component.activemq.broker-u-r-l=tcp://localhost:61616
+----
+
+After:
+
+[source,properties]
+----
+camel.component.activemq.broker-url=tcp://localhost:61616
+----
+
+=== camel-any23
+
+The XML DSL has changed for the `<configuration>` element, which now
+is flattened so the key/values should be configured on it directly:
+
+Before:
+[source,xml]
+----
+<dataFormats>
+ <any23 id="any23" baseURI ="http://mock.foo/bar" outputFormat="TURTLE" >
+ <configuration>
+ <property key="any23.extraction.metadata.nesting" value="off" />
+ <property key="another-key" value="another-value" />
+ </configuration>
+ <extractors>html-head-title</extractors>
+ </any23>
+</dataFormats>
+----
+
+After:
+
+[source,xml]
+----
+<dataFormats>
+ <any23 id="any23" baseURI ="http://mock.foo/bar" outputFormat="TURTLE" >
+ <configuration key="any23.extraction.metadata.nesting" value="off"/>
+ <configuration key="another-key" value="another-value"/>
+ <extractors>html-head-title</extractors>
+ </any23>
+</dataFormats>
+----
+
+=== camel-avro
+
+The avro component and data format has been split up into two JARs. The
dataformat is in `camel-avro` JAR
+and the component in `camel-avro-rpc` JAR.
+
+=== camel-infinispan
+
+Camel now requires endpoint URIs to include context-path which means
+the endpoint URI `infinispan` should be changed to `infinispan:current`.
+
+=== google-pubnub
+
+The google-pubnub component has been improved to use a new Java library and
become faster.
+
+Support for Apache Karaf has been removed.
+
+=== camel-xstream
+
+The XML DSL has changed for the `<converters>`, `<alias>`,
`implicitCollections`, and `omitFields` elements,
+which now is flattened so the key/values should be configured on it directly.
+
+Before:
+[source,xml]
+----
+<xstream id="xstream-1" mode="NO_REFERENCES"
+
permissions="-org.apache.camel.dataformat.xstream.*,org.apache.camel.dataformat.xstream.PurchaseHistory,org.apache.camel.dataformat.xstream.PurchaseOrder">
+ <converters>
+ <converter
class="org.apache.camel.dataformat.xstream.XStreamConfigurationTest$PurchaseOrderConverter"
/>
+ </converters>
+ <aliases>
+ <alias name="purchase-order"
class="org.apache.camel.dataformat.xstream.PurchaseOrder" />
+ </aliases>
+ <implicitCollections>
+ <class name="org.apache.camel.dataformat.xstream.PurchaseHistory">
+ <field>history</field>
+ </class>
+ </implicitCollections>
+</xstream>
+----
+
+After:
+[source,xml]
+----
+<xstream id="xstream-1" mode="NO_REFERENCES"
+
permissions="-org.apache.camel.dataformat.xstream.*,org.apache.camel.dataformat.xstream.PurchaseHistory,org.apache.camel.dataformat.xstream.PurchaseOrder">
+ <converters key="purchase-converter"
value="org.apache.camel.dataformat.xstream.XStreamConfigurationTest$PurchaseOrderConverter"/>
+ <aliases key="purchase-order"
value="org.apache.camel.dataformat.xstream.PurchaseOrder"/>
+ <implicitCollections
key="org.apache.camel.dataformat.xstream.PurchaseHistory" value="history"/>
+</xstream>
+----
+
+Multiple values for `implicitCollections` and `omitFields` can be separated by
comma
+
+For example:
+[source,xml]
+----
+<implicitCollections key="org.apache.camel.dataformat.xstream.PurchaseHistory"
value="history,adress"/>
+----
+
+=== camel-weather
+
+This component has been upgraded from using Apache Http Client 3.x to 4.x and
is therefore not fully backwards compatible.
+Some options for configurer and setting proxy is removed. You can however
configure this directly on a custom `HttpClient` instance
+and set this on the `WeatherComponent` to use.
+
+=== Endpoint URIs without context path
+
+Previously Camel components may work by referring to their name only without a
colon and context path (eg `log`)
+that for a few components would allow them to create an endpoint anyway.
+
+Now this is not allowed and Camel will throw an `NoSuchEndpointException`.
+
+An endpoint by its logical id can still be referred by the id only, eg
+[source,java]
+----
+Endpoint endpoint = camelContext.getEndpoint("myCoolEndpoint");
+----
+
+=== Error handling
+
+The context scope error handling has been modified a bit. The processors in
those `onException` and
+`onCompletion` are not shared between routes anymore. This should have little
effect in most cases.
+If there is a need to have a single set of processors involved (such as when
using a loadbalancer or
+other stateful patterns), then an intermediary route needs to be used. The
following excerpt:
+
+[source,java]
+----
+onException(Exception.class).handled(true)
+ .loadBalance().roundRobin().id("round")
+ .to("mock:error", "mock:error2", "mock:error3");
+----
+
+... needs to be rewritten as:
+
+[source,java]
+----
+onException(Exception.class).handled(true).to("direct:error");
+
+from("direct:error").loadBalance().roundRobin().id("round")
+ .to("mock:error", "mock:error2", "mock:error3");
+----
+
+=== camel-cluster
+
+The base support for cluster in `org.apache.camel.cluster` has been moved
+out of `camel-core-engine` into separate JAR named `camel-cluster`.
+
+=== Configuring milli seconds
+
+Camel was using a type converter from `String` -> `long` that accepted
+a time pattern which allowed to configure long values such as `2s` for 2
seconds, e.g. `2000`.
+And more complex such as `8h15m` for 8 hours and 15 minutes.
+
+However as this was implemented as part of `String` -> `long` type conversion
+which then adds a little bit of overhead during routing, when converting from
String to plain numbers.
+
+To make Camel routing engine as fast as possible this feature has been removed.
+
+For example a timer with a 5 second period
+
+[source,java]
+----
+from("timer:foo?period=5s")
+----
+
+Should now be specified as numeric only:
+
+[source,java]
+----
+from("timer:foo?period=5000")
+----
+
+=== Main in camel-spring
+
+The `org.apache.camel.spring.Main` class has been moved out of `camel-spring`
JAR into its own
+JAR named `camel-spring-main`.
+
+=== Main in camel-test-blueprint
+
+The `org.apache.camel.test.blueprint.Main` class has been renamed to
`org.apache.camel.test.blueprint.Main`
+and moved into its own `camel-test-blueprint` JAR.
+
+To use the camel-maven-plugin goal `camel:run` with OSGi plugin, you now need
to add the following dependency
+to the classpath `org.apache.camel.karaf:camel-blueprint-main`.
+
+=== API changes
+
+==== DefaultComponent
+
+The deprecated method `preProcessUri` has been removed.
+
+==== CamelContext
+
+The method `getEndpoint` now throws `NoSuchEndpointException` directly instead
of being wrapped
+within an `FailedToResolveEndpoint`.
+
+==== JavaUuidGenerator
+
+The `org.apache.camel.impl.engine.JavaUuidGenerator` class has been removed.
+Its a very slow UUID generator and its not recommended to be used.
+
+==== PropertiesComponent
+
+The `org.apache.camel.component.properties.PropertiesFunction` has been moved
to `org.apache.camel.spi.PropertiesFunction`
+and its now possible to add custom functions on the
`org.apache.camel.spi.PropertiesComponent` interface.
+
+==== JMX Connector configuration removed
+
+The JMX Connector configuration in camel-management has been
https://issues.apache.org/jira/browse/CAMEL-14811[removed]
+in Camel 3.2.0. If you want to support the ability to use JMX with Camel
remotely, then
+just use the default JVM JMX remote capabilities. For example, use the
following (insecure)
+JVM settings to be able to manage Camel remotely on localhost, port 9913:
+
+[source]
+----
+-Dcom.sun.management.jmxremote.port=9913
+-Dcom.sun.management.jmxremote.authenticate=false
+-Dcom.sun.management.jmxremote.ssl=false
+-Djava.rmi.server.hostname=localhost
+----
+
diff --git
a/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide-3_3.adoc
b/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide-3_3.adoc
new file mode 100644
index 0000000..48d2385
--- /dev/null
+++ b/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide-3_3.adoc
@@ -0,0 +1,66 @@
+= 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.2 to 3.3
+
+=== camel-jackson
+
+The dependency on `jackson-module-jaxb-annotations` and the option
`enableJaxbAnnotationModule` have been removed. To
+enable support for JAXB annotations, users have to:
+
+* explicit add `jackson-module-jaxb-annotations`
+* configure the `JacksonDataFormat` and/or the `JacksonTypeConverters` module
classes, example:
++
+.JacksonDataFormat
+[source,java]
+----
+JacksonDataFormat formatPojo = new JacksonDataFormat(TestJAXBPojo.class);
+formatPojo.setModuleClassNames(JaxbAnnotationModule.class.getName());
+----
++
+.JacksonTypeConverters
+[source,java]
+----
+context.getGlobalOptions().put(JacksonConstants.ENABLE_TYPE_CONVERTER, "true");
+context.getGlobalOptions().put(JacksonConstants.TYPE_CONVERTER_TO_POJO,
"true");
+context.getGlobalOptions().put(JacksonConstants.TYPE_CONVERTER_MODULE_CLASS_NAMES,
JaxbAnnotationModule.class.getName());
+----
+
+this change affects also the Java DSL and as consequence the
`enableJaxbAnnotationModule` option for the Json
+DataFormat definition has been removed.
+
+=== Template components
+
+The template components which supports using a header to specify a dynamic
resource to use as template, instead
+of the configured template on the endpoint is now enabled out of the box. If
you want to use this feature then
+you must turn on `allowTemplateFromHeader=true` on either the endpoint or
component level.
+
+This applies to the following templating components: camel-freemarker,
camel-velocity, camel-mvel, camel-mustache,
+camel-string-template, camel-chunk, camel-jolt, camel-jslt,
camel-robotframework.
+
+=== SupervisingRouteController
+
+The `SupervisingRouteController` has been refactored and its configuration has
been simplified.
+And when configuring from spring boot, then the auto configuration parameters
has
+been changed from `camel.supervising.controller` into the general
`camel.springboot` which
+allows to share the same configuration across runtimes so its the same in
Spring Boot, Camel Main,
+Camel K, Camel Quarkus, etc.
+
+=== Camel Karaf
+
+The following components is no longer supported in OSGi and has been removed
from the Camel Karaf features file:
+camel-undertow, camel-jgroups, camel-jgroups-raft, camel-infinspan.
+
+=== camel-maven-plugin
+
+The `embedded` goal has been removed (was never really in use). Use `run` goal
instead.
+
+=== API changes
+
+The dump model classes in package `org.apache.camel.support.dump` has been
removed
+as they were not in use by Camel.
+
+In relation to the dump model classes removal, in camel-karaf the following
commands were removed: `context-info`, `route-info`, `route-profile` and
`route-step`.
diff --git
a/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide-3_4.adoc
b/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide-3_4.adoc
new file mode 100644
index 0000000..d0ac935
--- /dev/null
+++ b/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide-3_4.adoc
@@ -0,0 +1,38 @@
+= 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.3 to 3.4
+
+=== Template components
+
+The template components which allows access to the current `Exchange` and
`CamelContext` API
+from the context map available for templating has now been restricted to only
the message body and headers.
+
+This option can be enabled (`allowContextMapAll=true`) for full access to the
current Exchange and CamelContext.
+Doing so impose a potential security risk as this opens access to the full
power of CamelContext API.
+
+This applies to the following templating components: camel-freemarker,
camel-velocity, camel-mvel, camel-mustache,
+camel-string-template, camel-chunk, camel-robotframework.
+
+=== Using custom language in RouteBuilder
+
+The Java DSL `RouteBuilder` allows referring to a custom language as shown
below:
+
+[source,java]
+----
+from("direct:start")
+ .filter(language("foo", "Bla bla bla"))
+ .to("mock:camel");
+----
+
+This functionality is seldom in use, as you would use the provided languages
from Camel.
+If using, then the `language` method now requires a static import as shown
below:
+
+[source,java]
+----
+import static org.apache.camel.builder.Builder.language;
+----
+
diff --git a/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide.adoc
b/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide.adoc
index 03b79ef..c778efe 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide.adoc
@@ -1,1211 +1,15 @@
= Apache Camel 3.x Upgrade Guide
-This document is intended for helping you upgrade your Apache Camel application
-from Camel 3.x to 3.y.
-
IMPORTANT: If you are migrating from Camel 2.x then use the
-xref:camel-3-migration-guide.adoc[Camel 2.x to 3.0 Migration Guide].
+xref:camel-3-migration-guide.adoc[Camel 2.x to 3.0 Migration Guide] first.
-For example if you are upgrading Camel 3.0 to 3.2, then you should follow the
guides
+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.0 to 3.1
-
-=== camel-ahc, camel-netty-http, camel-undertow
-
-These Camel components now no longer have dependency on Javax Servlet.
-
-=== camel-undertow
-
-The exception class `HttpOperationFailedException` is now from package
`org.apache.camel.http.base` instead of `org.apache.camel.http.common`.
-The Camel undertow producer throws this exception.
-
-=== came-bean
-
-The bean component has been changed to behave as singleton scoped by default.
-This means that the bean is created or looked up once and reused.
-
-The option `cache` has been deprecated in favour of the new `scope` option
that by default is `Singleton`. You can set this to `Prototype` to use the old
behaviour.
-
-[NOTE]
-====
-Setting this to Prototype will let Camel create/lookup a new bean instance,
per use; which acts as prototype scoped. However beware that if you lookup the
bean, then the registry that holds the bean, would return a bean accordingly to
its configuration, which can be singleton or prototype scoped. For example if
you use Spring, or CDI, which has their own settings for setting bean scopes.
-====
-
-=== camel-etcd
-
-The `camel-etcd` component has changed its endpoint syntax from
`etcd:action/path` to
-`etcd-keys:path`, `etcd-stats:path`, or `etcd-watch:path`.
-
-For example before
-
-[source,text]
-----
-etcd:stats/leader
-----
-
-Should be changed to
-----
-etcd-stats:leader
-----
-
-This change was needed as the 3 actions could not share the same
component/endpoint and had to be separated.
-
-=== camel-ftp
-
- The stepwise functionality (stepwise=true) is not supported for stream
download (treamDownload=true).
-
-=== camel-irc
-
-The `camel-irc` component has changed its endpoint syntax and removed option
#room as a part of the url path. Allowed syntax is:
-
-[source,text]
-----
-irc:nick@host[:port]?[options]
-----
-
-=== camel-milo
-
-The `camel-milo` client component has changed its endpoint syntax from
`milo-client:tcp` to `milo-client:opc.tcp`.
-For example before
-
-[source,text]
-----
-milo-client:tcp://foo:bar@localhost:1234
-----
-
-Should be changed to
-----
-milo-client:opc.tcp://foo:bar@localhost:1234
-----
-
-The `camel-milo` server component requires Java 9 at runtime.
-Property `strictEndpointUrlsEnabled` is no longer supported.
-Properties`hostName` and `serverName` are replaced by `path`.
-To successfully use certificates for secured communication, JCE Jurisdiction
Policy File Default
-has to be *Unlimited* (which is by default since Java 9+).
-
-=== camel-nats
-
-The `camel-nats` component has changed its endpoint syntax from `nats:servers`
to `nats:topic`.
-For example before
-
-[source,text]
-----
-nats:myserver:4222?topic=myTopic
-----
-
-Should be changed to
-----
-nats:myTopic?servers=myserver:4222
-----
-
-This change is motivated by allowing to configure servers on component level,
-and also for Spring Boot auto-configuration etc.
-
-=== camel-nsq
-
-The `camel-nsq` component has changed its endpoint syntax from `nsq:servers`
to `nsq:topic`.
-For example before
-
-[source,text]
-----
-nsq:myserver:4161/myTopic
-----
-
-Should be changed to
-----
-nsq:myTopic?servers=myserver:4161
-----
-
-This change is motivated by allowing to configure servers on component level,
-and also for Spring Boot auto-configuration etc.
-
-=== camel-ipfs
-
-The `camel-ipfs` component has changed its endpoint syntax from
`nsq:host:port/command` to `ipfs:command`.
-The host and port is now configured on the component level instead.
-
-For example before
-
-[source,text]
-----
-ipfs:127.0.0.1:5001/add
-----
-
-Should be changed to
-----
-ipfs:add
-----
-
-=== camel-xmlsecurity
-
-The `camel-xmlsecurity` component has changed its endpoint syntax from
`xmlsecurity:command/name` to
-`xmlsecurity-sign:name`, `xmlsecurity-verify:name`.
-
-For example before
-
-[source,text]
-----
-xmlsecurity:verify/foo
-----
-
-Should be changed to
-----
-xmlsecurity-verify:foo
-----
-
-This change was needed as the 2 commands could not share the same
component/endpoint and had to be separated.
-
-=== spi-annotations
-
-The `spi-annotations` JAR is mandatory but was mistakenly defined as optional
scope. The content of this JAR
-is now embedded directly into `camel-api` JAR so end users does not have to
include or depend on `spi-annotations` JAR anymore.
-
-=== camel-core-engine and camel-jaxp
-
-XML and JAXB has been moved out of camel-base and camel-core-engine.
-
-The module camel-jaxp has been renamed to camel-xml-jaxp.
-
-The camel-xml-jaxp JAR has XML parsers and type converters.
-The camel-xml-jaxb has support for loading XML DSL routes using JAXB.
-An alternative is to use the new camel-xml-io for loading XML routes which is
more light-weight and faster than JAXB.
-
-=== JAXB is now optional
-
-JAXB is now optional in Camel and only needed when using XML routes with the
`camel-xml-jaxb` JAR
-for loading and parsing the routes with JAXB. There is an alternative
implementation with `camel-xml-io` (see above).
-
-This means that `jaxb-core` and `jaxb-impl` JARs no longer are needed on the
classpath and as such has been removed
-as dependency in the various Camel `pom.xml` files.
-
-There are a number of components that uses JAXB such as `camel-spring`,
`camel-blueprint`, `camel-cdi` for their support
-of using XML for beans and Camel XML routes. And a few components such as
`camel-soap` etc.
-
-But at general then Camel is now lighter in classpath dependency by not
requiring to have JAXB present.
-
-=== Package scanning @TypeConverter
-
-Camel has now been configured to not package scan for custom `@Converter`
classes on startup.
-Type converters are now loaded and registered in faster way via source code
generated loader classes
-by having `@Converter(loader = true)` specified. If you have custom converters
and have not migrated to use
-source code generated loaders, you can enable package scanning by setting
-
-[source,java]
-----
-camelContext.setLoadTypeConverters(true);
-----
-
-And in XML:
-[source,xml]
-----
-<camelContext loadTypeConverters="true">
-...
-</camelContext>
-----
-
-And in Spring Boot `application.properties`:
-[source,properties]
-----
-camel.loadTypeConverters=true
-----
-
-=== Graceful Shutdown Timeout
-
-When shutting down Camel, then the default timeout has changed from 300
seconds (5 minutes) to 45 seconds.
-The 45 seconds was chosen as 30 seconds is a common timeout to use for remote
protocols, so we wanted to give
-Camel a bit more time, and hence added 15 seconds so the default is 45 seconds.
-
-=== Message History
-
-The message history is now default disabled (due to optimize core for lower
footprint out of the box).
-See the xref:{eip-vc}:eips:message-history.adoc[Message History] documentation
for how to enabled message history.
-
-=== Inflight Repository
-
-The inflight repository now does no longer allow browsing each individual
exchange (due to optimize core for lower footprint out of the box).
-To enable browsing then you can turn this on via:
-
-[source,java]
-----
- context.getInflightRepository().setInflightBrowseEnabled(true);
-----
-
-And in XML DSL:
-
-[source,xml]
-----
-<camelContext inflightRepositoryBrowseEnabled="true">
-
-</camelContext>
-----
-
-=== Component Extension Verifier
-
-When using component verifier
(`org.apache.camel.component.extension.ComponentVerifierExtension`) then you
-would know need to add `camel-core-catalog` to the classpath to make this
useable. If the JAR is missing,
-there will be an exception stating that `RuntimeCamelCatalog` is not found and
that this JAR should be added.
-
-=== ManagedRuntimeCatalog
-
-The `ManagedRuntimeCatalog` JMX MBean is removed and no longer available.
-
-=== Spring Boot JMX
-
-The `camel-management` dependency of `camel-spring-boot` was removed as Spring
Boot 2.2+ disables JMX by default.
-
-To continue using JMX with Camel Spring Boot add the following dependency:
-
-[source,xml]
-----
-<dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-management</artifactId>
-</dependency>
-----
-
-=== Custom components
-
-Camel now uses Camel Package Maven Plugin instead of `camel-apt` APT compiler
to generate component meta data.
-
-Custom components should then change in the pom.xml from:
-
-[source,xml]
-----
-<dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>apt</artifactId>
- <scope>provided</scope>
-</dependency>
-----
-
-To the following:
-
-[source,xml]
-----
- <plugin>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-package-maven-plugin</artifactId>
- <version>${camel-version}</version>
- <executions>
- <execution>
- <id>generate</id>
- <goals>
- <goal>generate-component</goal>
- </goals>
- <phase>process-classes</phase>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <executions>
- <execution>
- <phase>initialize</phase>
- <goals>
- <goal>add-source</goal>
- <goal>add-resource</goal>
- </goals>
- <configuration>
- <sources>
- <source>src/generated/java</source>
- </sources>
- <resources>
- <resource>
- <directory>src/generated/resources</directory>
- </resource>
- </resources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <!--
- Recompile source after generated loader classes have been created.
- The maven-compiler-plugin must be defined in the POM after the
- camel-package-maven-plugin so recompile runs after generated
- sources have been created.
-
- Adjust configuration for the JDK version your project uses.
- -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>3.8.1</version>
- <configuration>
- <source>1.11</source>
- <target>1.11</target>
- </configuration>
- <executions>
- <execution>
- <id>recompile</id>
- <goals>
- <goal>compile</goal>
- </goals>
- <phase>process-classes</phase>
- </execution>
- </executions>
- </plugin>
-----
-
-=== API changes
-
-==== log changed to private static LOG
-
-The `ServiceSupport` class has changed its logging from instance to static,
which means any inherited class that
-uses `log` would need to change the code to compile. This may happen in custom
Camel components.
-
-Before you may have:
-
-[source,java]
-----
- log.debug("Sending message to foobar service: {}", messageId);
-----
-
-You then need to migrate the logging to also be static:
-
-[source,java]
-----
- private static final Logger LOG =
LoggerFactory.getLogger(FooBarProducer.class);
-
- LOG.debug("Sending message to foobar service: {}", messageId);
-----
-
-==== Exchange
-
-The `Exchange` API has been modified slightly as part of an optimization
effort.
-The returned value of `getCreated` is changed from `java.util.Date` to `long`
which is the time millis.
-The `Exchange.CREATED_TIMESTAMP` is no longer stored as exchange property, but
you should use the `getCreated` method on `Exchange`.
-The returned value of `isExternalRedelivered` is changed from `Boolean` to
`boolean`.
-
-Some of the advanced and API for component developers on `Exchange` has been
moved to an extended interface `ExtendedExchange`.
-The following methods has been moved:
-
-- setFromEndpoint
-- setFromRouteId
-- setUnitOfWork
-- addOnCompletion
-- containsOnCompletion
-- handoverCompletions
-
-You can use these methods by adapting to the extended exchange as shown below:
-
-[source,java]
-----
-exchange.adapt(ExtendedExchange.class).addOnCompletion(...);
-----
-
-==== Message
-
-The message ID will now default to use the same id as Exchange ID as messages
are associated with the exchange
-and using different IDs does not offer much value. Another reason is to
optimize for performance to avoid generating new IDs.
-A few Camel components do provide their own message IDs such as the JMS
components.
-
-==== UnitOfWork
-
-For advanced Camel users whom implement custom `UnitOfWork` should implement
the new `isBeforeAfterProcess()' method and return true of false,
-whether Camel should invoke the before and after processor methods.
-
-The method `getId` has been removed.
-
-==== Cookies
-
-Cookies from `camel-http-common` has been moved into a new `camel-http-base`
JAR.
-The package `org.apache.camel.http.common.cookie` is renamed to
`org.apache.camel.http.base.cookie`.
-
-==== Exchange.ROUTE_STOP
-
-To signal an `Exchange` to stop continue routing has changed from setting the
exchange property `Exchange.ROUTE_STOP` to true.
-Instead you should now use the `setRouteStop` method on the `Exchange` API.
-
-[source,java]
-----
- exchange.setProperty(Exchange.ROUTE_STOP, Boolean.TRUE);
-----
-
-Should now be:
-[source,java]
-----
- exchange.setRouteStop(true);
-----
-
-==== Exchange.ROLLBACK_ONLY and Exchange.ROLLBACK_ONLY_LAST
-
-To signal an `Exchange` to rollback a transaction has changed from setting the
exchange property `Exchange.ROLLBACK_ONLY` to true.
-Instead you should now use the `setRollbackOnly` method on the `Exchange` API
(the same for rollback only last).
-
-[source,java]
-----
- exchange.setProperty(Exchange.ROLLBACK_ONLY, Boolean.TRUE);
-----
-
-Should now be:
-
-[source,java]
-----
- exchange.setRollbackOnly(true);
-----
-
-==== Exchange.ERRORHANDLER_HANDLED
-
-The exchange property `Exchange.ERRORHANDLER_HANDLED` was used to indicate
that the error handling mechanism for a given exchange
-had completed. This property sometimes had to be conveyed by aggregation
strategies, so instead of
-
-[source,java]
-----
- oldExchange.getProperties().put(
- Exchange.ERRORHANDLER_HANDLED,
- newExchange.getProperties().get(Exchange.ERRORHANDLER_HANDLED));
-----
-
-one should now use:
-
-[source,java]
-----
- Boolean handled = newExchange.adapt(ExtendedExchange.class)
- .getErrorHandlerHandled();
- oldExchange.adapt(ExtendedExchange.class)
- .setErrorHandlerHandled(handled);
-----
-
-==== ModelHelper removed
-
-The class `org.apache.camel.model.ModelHelper` has been removed. Instead you
can use its functionality from `ExtendedCamelContext` by
-the `getModelToXMLDumper` and `getXMLRoutesDefinitionLoader` methods which has
APIs similar to `ModelHelper`.
-
-==== JsonSchemaHelper removed
-
-The class `org.apache.camel.tooling.util.JSonSchemaHelper` has been removed.
Instead you can use utils coming from camel-util-json
-and the class `org.apache.camel.tooling.util.PackageHelper`
-
-==== camel-xml-jaxp
-
-The class `org.apache.camel.processor.validation.PredicateValidatingProcessor`
has moved from `camel-xml-jaxp` JAR
-to `camel-support` JAR and renamed to
`org.apache.camel.support.processor.PredicateValidatingProcessor`.
-
-==== Java DSL
-
-The Java DSL has been revisited and the following methods have been removed:
-
-* ExpressionClause::body(Supplier<Object>)
-* MulticastDefinition::onPrepare(Supplier<Processor>)
-* ProcessorDefinition::process(Supplier<Processor>)
-* ProcessorDefinition::setBody(Supplier<Result>)
-* RecipientListDefinition::onPrepare(Supplier<Processor>)
-* SplitDefinition::onPrepare(Supplier<Processor>)
-* WireTapDefinition::newExchange(Supplier<Processor>)
-* WireTapDefinition::onPrepare(Supplier<Processor>)
-
-This change is motivated by the need to remove method ambiguity for untyped
languages such as Groovy and JavaScript, for more info see
https://issues.apache.org/jira/browse/CAMEL-14300
-
-==== CamelContext
-
-Some unused methods have been removed from `CamelContext` which were not part
of the public API. The following methods have been removed:
-
-* getProducerServicePool
-* setProducerServicePool
-* getPollingConsumerServicePool
-* setPollingConsumerServicePool
-
-==== Internal API changes
-
-Remove the method `getProcessors` from `Pipeline` as you should use the `next`
method instead to access a read-only view of the processors.
-
-==== @Experimental
-
-The `@Experimental` annotation is moved from `meta-annotations` JAR to
`camel-api`
-and moved from package `org.apache.camel.meta` to `org.apache.camel`.
-And the meta-annotations has been removed.
-
-==== Property Placeholders
-
-The support for out-of-band property placeholders has been removed.
-This means that XML that were using the
`http://camel.apache.org/schema/placeholder`
-namespace and that the java builders using the `.placeholder(key, value).`
have to
-be modified.
-
-[source,java]
-----
- from("direct:start")
- .multicast()
- .placeholder("stopOnException", "stop")
- .to("mock:a")
-----
-should be rewritten as:
-[source,java]
-----
- from("direct:start")
- .multicast()
- .stopOnException("{{stop}}")
- .to("mock:a")
-----
-
-and
-[source,xml]
-----
- <route>
- <from uri="direct:start"/>
- <multicast prop:stopOnException="stop">
- <to uri="mock:a"/>
- </multicast>
- </route>
-----
-should be rewritten as:
-[source,xml]
-----
- <route>
- <from uri="direct:start"/>
- <multicast stopOnException="{{stop}}">
- <to uri="mock:a"/>
- </multicast>
- </route>
-----
-
-== Upgrading Camel 3.1 to 3.2
-
-=== JndiRegistry
-
-The deprecated class `org.apache.camel.impl.JndiRegistry` has been removed.
The class `org.apache.camel.support.jndi.JndiBeanRepository` located in
`org.apache.camel:camel-support` should be used instead.
-
-=== Rest Configuration
-
-The rest configuration has been simplified and there is now a single
RestConfiguration instance
(https://issues.apache.org/jira/browse/CAMEL-13844[CAMEL-13844]) per Camel
Context.
-
-The following methods have been removed:
-
-* org.apache.camel.CamelContext#addRestConfiguration(RestConfiguration
restConfiguration)
-* org.apache.camel.CamelContext#getRestConfiguration(String component, boolean
defaultIfNotFound)
-* org.apache.camel.CamelContext#getRestConfigurations
-
-https://issues.apache.org/jira/browse/CAMEL-13844
-
-=== Camel Cloud
-
-The following `ServiceDiscovery` implementation has been removed:
-
-* org.apache.camel.impl.cloud.CachingServiceDiscovery
-* org.apache.camel.impl.cloud.CachingServiceDiscoveryFactory
-
-https://issues.apache.org/jira/browse/CAMEL-14813
-
-=== Camel with Karaf and OSGi
-
-Camel on Apache Karaf / OSGi has been moved to its own project at:
https://github.com/apache/camel-karaf
-
-The Maven dependencies has changed the groupid from `org.apache.camel` to
`org.apache.camel.karaf`.
-
-For example the `camel-blueprint` would be changed from
-
-[source,xml]
-----
-<dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-blueprint</artifactId>
- <version>3.1.0</version>
-</dependency>
-----
-
-To:
-
-[source,xml]
-----
-<dependency>
- <groupId>org.apache.camel.karaf</groupId>
- <artifactId>camel-blueprint</artifactId>
- <version>3.2.0</version>
-</dependency>
-----
-
-The Camel Karaf features are the same as before, you can still install Camel
in Karaf shell via:
-[source,text]
-----
-feature:repo-add camel 3.2.0
-feature:install camel
-----
-
-==== Other components involved
-
-- Camel-test-blueprint
-
-[source,xml]
-----
-<dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-test-blueprint</artifactId>
- <version>3.1.0</version>
-</dependency>
-----
-
-To:
-
-[source,xml]
-----
-<dependency>
- <groupId>org.apache.camel.karaf</groupId>
- <artifactId>camel-test-blueprint</artifactId>
- <version>3.2.0</version>
-</dependency>
-----
-
-- Camel-test-karaf
-
-[source,xml]
-----
-<dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-test-karaf</artifactId>
- <version>3.1.0</version>
-</dependency>
-----
-
-To:
-
-[source,xml]
-----
-<dependency>
- <groupId>org.apache.camel.karaf</groupId>
- <artifactId>camel-test-karaf</artifactId>
- <version>3.2.0</version>
-</dependency>
-----
-
-- Camel-eventadmin
-
-[source,xml]
-----
-<dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-eventadmin</artifactId>
- <version>3.1.0</version>
-</dependency>
-----
-
-To:
-
-[source,xml]
-----
-<dependency>
- <groupId>org.apache.camel.karaf</groupId>
- <artifactId>camel-eventadmin</artifactId>
- <version>3.2.0</version>
-</dependency>
-----
-
-- Camel-kura
-
-[source,xml]
-----
-<dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-kura</artifactId>
- <version>3.1.0</version>
-</dependency>
-----
-
-To:
-
-[source,xml]
-----
-<dependency>
- <groupId>org.apache.camel.karaf</groupId>
- <artifactId>camel-kura</artifactId>
- <version>3.2.0</version>
-</dependency>
-----
-
-- Camel-osgi-activator
-
-[source,xml]
-----
-<dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-osgi-activator</artifactId>
- <version>3.1.0</version>
-</dependency>
-----
-
-To:
-
-[source,xml]
-----
-<dependency>
- <groupId>org.apache.camel.karaf</groupId>
- <artifactId>camel-osgi-activator</artifactId>
- <version>3.2.0</version>
-</dependency>
-----
-
-- Camel-paxlogging
-
-[source,xml]
-----
-<dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-paxlogging</artifactId>
- <version>3.1.0</version>
-</dependency>
-----
-
-To:
-
-[source,xml]
-----
-<dependency>
- <groupId>org.apache.camel.karaf</groupId>
- <artifactId>camel-paxlogging</artifactId>
- <version>3.2.0</version>
-</dependency>
-----
-
-==== Introducing a camel-karaf-bom
-
-We introduce a camel-karaf-bom too, so the end-users should be able to have
all of this dependencies easier:
-
-[source,xml]
-----
- <dependencyManagement>
- <dependencies>
- <!-- Add Camel BOM -->
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-bom</artifactId>
- <version>${project.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- <!-- Add Camel Karaf BOM -->
- <dependency>
- <groupId>org.apache.camel.karaf</groupId>
- <artifactId>camel-karaf-bom</artifactId>
- <version>${camel.karaf.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
-----
-
-In this way you'll get both the boms and all the "goodies"
-
-=== camel-elytron
-
-Transitive dependencies from org.wildfly.security:wildfly-elytron were removed.
-
-=== camel-spark-rest
-
-This component has been removed. Use any of the other REST capable components,
such as `camel-jetty`, `camel-netty-http`
-or `camel-undertow`.
-
-=== EIPs with cacheSize option
-
-The `cacheSize` option on EIPs has been improved to reduce memory usage when
the cache is disabled by
-setting the value to -1. One of the optimizations is that new endpoints will
not be added to the endpoint registry,
-but discarded after use. This avoids storing additional endpoints in the cache
(memory) as the cache should be disabled (cacheSize=-1).
-
-See more details in the documentation for the `cacheSize` option on the EIPs.
-
-=== Configuring components via Java setters
-
-Configuring Camel components from plain Java code has changed in some
components where they were using
-delegate setters for a nested configuration class. These delegates has been
removed, to ensure configuration
-is more consistent and aligned with how endpoints is configured as well, and
by using source code generated configurer classes.
-
-The following Camel components has been affected and changed on the component
level:
-
-- camel-aws
-- camel-aws2
-- camel-consul
-- camel-etcd
-- camel-infinispan
-- camel-kafka
-- camel-servicenow
-- camel-ssh
-- camel-stomp
-- camel-xmlsecurity
-- camel-yammer
-
-This only affects if you are configuring these components using Java code or
XML `<bean>` style.
-
-For example
-
-[source,java]
-----
-KafkaComponent kafka = new KafkaComponent();
-kafka.setBrokers("mybroker1:1234,mybroker2:1234");
-----
-
-Should now be:
-
-[source,java]
-----
-KafkaComponent kafka = new KafkaComponent();
-kafka.getConfiguration().setBrokers("mybroker1:1234,mybroker2:1234");
-----
-
-And in XML:
-
-[source,xml]
-----
-<bean id="kafka" class="org.apache.camel.component.kafka.KafkaComponent">
- <property name="brokers" value="mybroker1:1234,mybroker2:1234"/>
-</bean>
-----
-
-Should now be:
-
-[source,xml]
-----
-<bean id="kafka" class="org.apache.camel.component.kafka.KafkaComponent">
- <property name="configuration">
- <property name="brokers" value="mybroker1:1234,mybroker2:1234"/>
- </property>
-</bean>
-----
-
-=== Configuring components via Spring Boot auto configuration
-
-Configuring Camel spring boot components has changed its option keys to be
flattened and have the `.configuration` prefix
-removed now.
-
-Before in application.properties
-
-[source,properties]
-----
-camel.component.kafka.configuration.brokers=mybroker1:1234,mybroker2:1234
-----
-
-Should now be
-[source,properties]
-----
-camel.component.kafka.brokers=mybroker1:1234,mybroker2:1234
-----
-
-This applies to all the Camel spring boot _starter_ JARs where basically
`.configuration` should be removed.
-
-=== Configuring camel-activemq, camel-amqp and camel-stomp via Spring Boot
auto configuration
-
-When configuring these components from spring boot auto-configuration then the
URL for the broker was named `broker-u-r-l`
-in the spring boot auto configuration support. This has been renamed to
`broker-url` and a few other options too.
-
-Before:
-
-[source,properties]
-----
-camel.component.activemq.broker-u-r-l=tcp://localhost:61616
-----
-
-After:
-
-[source,properties]
-----
-camel.component.activemq.broker-url=tcp://localhost:61616
-----
-
-=== camel-any23
-
-The XML DSL has changed for the `<configuration>` element, which now
-is flattened so the key/values should be configured on it directly:
-
-Before:
-[source,xml]
-----
-<dataFormats>
- <any23 id="any23" baseURI ="http://mock.foo/bar" outputFormat="TURTLE" >
- <configuration>
- <property key="any23.extraction.metadata.nesting" value="off" />
- <property key="another-key" value="another-value" />
- </configuration>
- <extractors>html-head-title</extractors>
- </any23>
-</dataFormats>
-----
-
-After:
-
-[source,xml]
-----
-<dataFormats>
- <any23 id="any23" baseURI ="http://mock.foo/bar" outputFormat="TURTLE" >
- <configuration key="any23.extraction.metadata.nesting" value="off"/>
- <configuration key="another-key" value="another-value"/>
- <extractors>html-head-title</extractors>
- </any23>
-</dataFormats>
-----
-
-=== camel-avro
-
-The avro component and data format has been split up into two JARs. The
dataformat is in `camel-avro` JAR
-and the component in `camel-avro-rpc` JAR.
-
-=== camel-infinispan
-
-Camel now requires endpoint URIs to include context-path which means
-the endpoint URI `infinispan` should be changed to `infinispan:current`.
-
-=== google-pubnub
-
-The google-pubnub component has been improved to use a new Java library and
become faster.
-
-Support for Apache Karaf has been removed.
-
-=== camel-xstream
-
-The XML DSL has changed for the `<converters>`, `<alias>`,
`implicitCollections`, and `omitFields` elements,
-which now is flattened so the key/values should be configured on it directly.
-
-Before:
-[source,xml]
-----
-<xstream id="xstream-1" mode="NO_REFERENCES"
-
permissions="-org.apache.camel.dataformat.xstream.*,org.apache.camel.dataformat.xstream.PurchaseHistory,org.apache.camel.dataformat.xstream.PurchaseOrder">
- <converters>
- <converter
class="org.apache.camel.dataformat.xstream.XStreamConfigurationTest$PurchaseOrderConverter"
/>
- </converters>
- <aliases>
- <alias name="purchase-order"
class="org.apache.camel.dataformat.xstream.PurchaseOrder" />
- </aliases>
- <implicitCollections>
- <class name="org.apache.camel.dataformat.xstream.PurchaseHistory">
- <field>history</field>
- </class>
- </implicitCollections>
-</xstream>
-----
-
-After:
-[source,xml]
-----
-<xstream id="xstream-1" mode="NO_REFERENCES"
-
permissions="-org.apache.camel.dataformat.xstream.*,org.apache.camel.dataformat.xstream.PurchaseHistory,org.apache.camel.dataformat.xstream.PurchaseOrder">
- <converters key="purchase-converter"
value="org.apache.camel.dataformat.xstream.XStreamConfigurationTest$PurchaseOrderConverter"/>
- <aliases key="purchase-order"
value="org.apache.camel.dataformat.xstream.PurchaseOrder"/>
- <implicitCollections
key="org.apache.camel.dataformat.xstream.PurchaseHistory" value="history"/>
-</xstream>
-----
-
-Multiple values for `implicitCollections` and `omitFields` can be separated by
comma
-
-For example:
-[source,xml]
-----
-<implicitCollections key="org.apache.camel.dataformat.xstream.PurchaseHistory"
value="history,adress"/>
-----
-
-=== camel-weather
-
-This component has been upgraded from using Apache Http Client 3.x to 4.x and
is therefore not fully backwards compatible.
-Some options for configurer and setting proxy is removed. You can however
configure this directly on a custom `HttpClient` instance
-and set this on the `WeatherComponent` to use.
-
-=== Endpoint URIs without context path
-
-Previously Camel components may work by referring to their name only without a
colon and context path (eg `log`)
-that for a few components would allow them to create an endpoint anyway.
-
-Now this is not allowed and Camel will throw an `NoSuchEndpointException`.
-
-An endpoint by its logical id can still be referred by the id only, eg
-[source,java]
-----
-Endpoint endpoint = camelContext.getEndpoint("myCoolEndpoint");
-----
-
-=== Error handling
-
-The context scope error handling has been modified a bit. The processors in
those `onException` and
-`onCompletion` are not shared between routes anymore. This should have little
effect in most cases.
-If there is a need to have a single set of processors involved (such as when
using a loadbalancer or
-other stateful patterns), then an intermediary route needs to be used. The
following excerpt:
-
-[source,java]
-----
-onException(Exception.class).handled(true)
- .loadBalance().roundRobin().id("round")
- .to("mock:error", "mock:error2", "mock:error3");
-----
-
-... needs to be rewritten as:
-
-[source,java]
-----
-onException(Exception.class).handled(true).to("direct:error");
-
-from("direct:error").loadBalance().roundRobin().id("round")
- .to("mock:error", "mock:error2", "mock:error3");
-----
-
-=== camel-cluster
-
-The base support for cluster in `org.apache.camel.cluster` has been moved
-out of `camel-core-engine` into separate JAR named `camel-cluster`.
-
-=== Configuring milli seconds
-
-Camel was using a type converter from `String` -> `long` that accepted
-a time pattern which allowed to configure long values such as `2s` for 2
seconds, e.g. `2000`.
-And more complex such as `8h15m` for 8 hours and 15 minutes.
-
-However as this was implemented as part of `String` -> `long` type conversion
-which then adds a little bit of overhead during routing, when converting from
String to plain numbers.
-
-To make Camel routing engine as fast as possible this feature has been removed.
-
-For example a timer with a 5 second period
-
-[source,java]
-----
-from("timer:foo?period=5s")
-----
-
-Should now be specified as numeric only:
-
-[source,java]
-----
-from("timer:foo?period=5000")
-----
-
-=== Main in camel-spring
-
-The `org.apache.camel.spring.Main` class has been moved out of `camel-spring`
JAR into its own
-JAR named `camel-spring-main`.
-
-=== Main in camel-test-blueprint
-
-The `org.apache.camel.test.blueprint.Main` class has been renamed to
`org.apache.camel.test.blueprint.Main`
-and moved into its own `camel-test-blueprint` JAR.
-
-To use the camel-maven-plugin goal `camel:run` with OSGi plugin, you now need
to add the following dependency
-to the classpath `org.apache.camel.karaf:camel-blueprint-main`.
-
-=== API changes
-
-==== DefaultComponent
-
-The deprecated method `preProcessUri` has been removed.
-
-==== CamelContext
-
-The method `getEndpoint` now throws `NoSuchEndpointException` directly instead
of being wrapped
-within an `FailedToResolveEndpoint`.
-
-==== JavaUuidGenerator
-
-The `org.apache.camel.impl.engine.JavaUuidGenerator` class has been removed.
-Its a very slow UUID generator and its not recommended to be used.
-
-==== PropertiesComponent
-
-The `org.apache.camel.component.properties.PropertiesFunction` has been moved
to `org.apache.camel.spi.PropertiesFunction`
-and its now possible to add custom functions on the
`org.apache.camel.spi.PropertiesComponent` interface.
-
-==== JMX Connector configuration removed
-
-The JMX Connector configuration in camel-management has been
https://issues.apache.org/jira/browse/CAMEL-14811[removed]
-in Camel 3.2.0. If you want to support the ability to use JMX with Camel
remotely, then
-just use the default JVM JMX remote capabilities. For example, use the
following (insecure)
-JVM settings to be able to manage Camel remotely on localhost, port 9913:
-
-[source]
-----
--Dcom.sun.management.jmxremote.port=9913
--Dcom.sun.management.jmxremote.authenticate=false
--Dcom.sun.management.jmxremote.ssl=false
--Djava.rmi.server.hostname=localhost
-----
-
-== Upgrading Camel 3.2 to 3.3
-
-=== camel-jackson
-
-The dependency on `jackson-module-jaxb-annotations` and the option
`enableJaxbAnnotationModule` have been removed. To
-enable support for JAXB annotations, users have to:
-
-* explicit add `jackson-module-jaxb-annotations`
-* configure the `JacksonDataFormat` and/or the `JacksonTypeConverters` module
classes, example:
-+
-.JacksonDataFormat
-[source,java]
-----
-JacksonDataFormat formatPojo = new JacksonDataFormat(TestJAXBPojo.class);
-formatPojo.setModuleClassNames(JaxbAnnotationModule.class.getName());
-----
-+
-.JacksonTypeConverters
-[source,java]
-----
-context.getGlobalOptions().put(JacksonConstants.ENABLE_TYPE_CONVERTER, "true");
-context.getGlobalOptions().put(JacksonConstants.TYPE_CONVERTER_TO_POJO,
"true");
-context.getGlobalOptions().put(JacksonConstants.TYPE_CONVERTER_MODULE_CLASS_NAMES,
JaxbAnnotationModule.class.getName());
-----
-
-this change affects also the Java DSL and as consequence the
`enableJaxbAnnotationModule` option for the Json
-DataFormat definition has been removed.
-
-=== Template components
-
-The template components which supports using a header to specify a dynamic
resource to use as template, instead
-of the configured template on the endpoint is now enabled out of the box. If
you want to use this feature then
-you must turn on `allowTemplateFromHeader=true` on either the endpoint or
component level.
-
-This applies to the following templating components: camel-freemarker,
camel-velocity, camel-mvel, camel-mustache,
-camel-string-template, camel-chunk, camel-jolt, camel-jslt,
camel-robotframework.
-
-=== SupervisingRouteController
-
-The `SupervisingRouteController` has been refactored and its configuration has
been simplified.
-And when configuring from spring boot, then the auto configuration parameters
has
-been changed from `camel.supervising.controller` into the general
`camel.springboot` which
-allows to share the same configuration across runtimes so its the same in
Spring Boot, Camel Main,
-Camel K, Camel Quarkus, etc.
-
-=== Camel Karaf
-
-The following components is no longer supported in OSGi and has been removed
from the Camel Karaf features file:
-camel-undertow, camel-jgroups, camel-jgroups-raft, camel-infinspan.
-
-=== camel-maven-plugin
-
-The `embedded` goal has been removed (was never really in use). Use `run` goal
instead.
-
-=== API changes
-
-The dump model classes in package `org.apache.camel.support.dump` has been
removed
-as they were not in use by Camel.
-
-In relation to the dump model classes removal, in camel-karaf the following
commands were removed: `context-info`, `route-info`, `route-profile` and
`route-step`.
-
-
-== Upgrading Camel 3.3 to 3.4
-
-=== Template components
-
-The template components which allows access to the current `Exchange` and
`CamelContext` API
-from the context map available for templating has now been restricted to only
the message body and headers.
-
-This option can be enabled (`allowContextMapAll=true`) for full access to the
current Exchange and CamelContext.
-Doing so impose a potential security risk as this opens access to the full
power of CamelContext API.
-
-This applies to the following templating components: camel-freemarker,
camel-velocity, camel-mvel, camel-mustache,
-camel-string-template, camel-chunk, camel-robotframework.
-
-=== Using custom language in RouteBuilder
-
-The Java DSL `RouteBuilder` allows referring to a custom language as shown
below:
-
-[source,java]
-----
-from("direct:start")
- .filter(language("foo", "Bla bla bla"))
- .to("mock:camel");
-----
-
-This functionality is seldom in use, as you would use the provided languages
from Camel.
-If using, then the `language` method now requires a static import as shown
below:
-
-[source,java]
-----
-import static org.apache.camel.builder.Builder.language;
-----
+You can find upgrade guide for each release in the following pages:
+- xref:camel-3x-upgrade-guide-3_1.adoc[Upgrade guide from 3.0 to 3.1]
+- xref:camel-3x-upgrade-guide-3_2.adoc[Upgrade guide from 3.1 to 3.2]
+- xref:camel-3x-upgrade-guide-3_3.adoc[Upgrade guide from 3.2 to 3.3]
+- xref:camel-3x-upgrade-guide-3_4.adoc[Upgrade guide from 3.3 to 3.4]