You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2019/06/26 03:33:51 UTC

[camel] 07/07: Camel Core and some left overs. https://issues.apache.org/jira/browse/CAMEL-13480

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

commit ece9db287ef73a2e39b50b16614e842b3085cae2
Author: Alexandros Koufoudakis <ak...@gmail.com>
AuthorDate: Tue Jun 25 17:45:19 2019 +0200

    Camel Core and some left overs. https://issues.apache.org/jira/browse/CAMEL-13480
---
 .../src/main/docs/camel-report-maven-plugin.adoc   |  6 ++--
 .../camel-http4/src/main/docs/http4-component.adoc |  2 +-
 .../camel-irc/src/main/docs/irc-component.adoc     |  2 +-
 core/camel-base/src/main/docs/file-language.adoc   | 15 ++++----
 core/camel-base/src/main/docs/simple-language.adoc | 22 +++++-------
 .../src/main/docs/eips/aggregate-eip.adoc          | 17 +++++----
 core/camel-core/src/main/docs/eips/bean-eip.adoc   |  2 +-
 .../src/main/docs/eips/dynamic-router.adoc         | 15 +++-----
 .../src/main/docs/eips/dynamicRouter-eip.adoc      | 12 +++----
 core/camel-core/src/main/docs/eips/enrich-eip.adoc | 41 ++--------------------
 .../camel-core/src/main/docs/eips/hystrix-eip.adoc |  4 +--
 .../src/main/docs/eips/idempotentConsumer-eip.adoc | 20 ++++-------
 .../src/main/docs/eips/loadBalance-eip.adoc        |  8 ++---
 core/camel-core/src/main/docs/eips/log-eip.adoc    |  9 +++--
 core/camel-core/src/main/docs/eips/loop-eip.adoc   |  2 +-
 .../src/main/docs/eips/multicast-eip.adoc          |  2 +-
 .../src/main/docs/eips/pollEnrich-eip.adoc         | 30 +++-------------
 .../src/main/docs/eips/recipientList-eip.adoc      | 10 +++---
 .../src/main/docs/eips/resequence-eip.adoc         |  2 +-
 .../src/main/docs/eips/routingSlip-eip.adoc        |  6 ++--
 core/camel-core/src/main/docs/eips/split-eip.adoc  | 31 +++++++++++-----
 core/camel-core/src/main/docs/eips/toD-eip.adoc    |  6 ++--
 .../camel-core/src/main/docs/eips/wireTap-eip.adoc | 12 +++----
 23 files changed, 100 insertions(+), 176 deletions(-)

diff --git a/catalog/camel-report-maven-plugin/src/main/docs/camel-report-maven-plugin.adoc b/catalog/camel-report-maven-plugin/src/main/docs/camel-report-maven-plugin.adoc
index ebd2634..3f406ea 100644
--- a/catalog/camel-report-maven-plugin/src/main/docs/camel-report-maven-plugin.adoc
+++ b/catalog/camel-report-maven-plugin/src/main/docs/camel-report-maven-plugin.adoc
@@ -142,9 +142,9 @@ The maven plugin *validate* goal supports the following options which can be con
 | ignoreUnknownComponent | true | Whether to ignore unknown components.
 | ignoreIncapable | true | Whether to ignore incapable of parsing the endpoint uri or simple expression.
 | ignoreLenientProperties | true | Whether to ignore components that uses lenient properties. When this is true, then the uri validation is stricter but would fail on properties that are not part of the component but in the uri because of using lenient properties. For example using the HTTP components to provide query parameters in the endpoint uri.
-| ignoreDeprecated | true | *Camel 2.23* Whether to ignore deprecated options being used in the endpoint uri.
-| duplicateRouteId | true | *Camel 2.20* Whether to validate for duplicate route ids. Route ids should be unique and if there are duplicates then Camel will fail to startup.
-| directOrSedaPairCheck | true | *Camel 2.23* Whether to validate direct/seda endpoints sending to non existing consumers.
+| ignoreDeprecated | true |Whether to ignore deprecated options being used in the endpoint uri.
+| duplicateRouteId | true |Whether to validate for duplicate route ids. Route ids should be unique and if there are duplicates then Camel will fail to startup.
+| directOrSedaPairCheck | true |Whether to validate direct/seda endpoints sending to non existing consumers.
 | showAll | false | Whether to show all endpoints and simple expressions (both invalid and valid).
 |===
 
diff --git a/components/camel-http4/src/main/docs/http4-component.adoc b/components/camel-http4/src/main/docs/http4-component.adoc
index 7bd59c2..a698396 100644
--- a/components/camel-http4/src/main/docs/http4-component.adoc
+++ b/components/camel-http4/src/main/docs/http4-component.adoc
@@ -565,7 +565,7 @@ behavior.
 Using the JSSE Configuration Utility
 
 The HTTP4 component supports SSL/TLS configuration
-through the link:camel-configuration-utilities.html[Camel JSSE
+through the link:camel-configuration-utilities.adoc[Camel JSSE
 Configuration Utility].  This utility greatly decreases the amount of
 component specific code you need to write and is configurable at the
 endpoint and component levels.  The following examples demonstrate how
diff --git a/components/camel-irc/src/main/docs/irc-component.adoc b/components/camel-irc/src/main/docs/irc-component.adoc
index 0e8eefe..8f12b59 100644
--- a/components/camel-irc/src/main/docs/irc-component.adoc
+++ b/components/camel-irc/src/main/docs/irc-component.adoc
@@ -150,7 +150,7 @@ The component supports 4 options, which are listed below.
 #### Using the JSSE Configuration Utility
 
 The IRC component supports SSL/TLS configuration
-through the link:camel-configuration-utilities.html[Camel JSSE
+through the link:camel-configuration-utilities.adoc[Camel JSSE
 Configuration Utility].  This utility greatly decreases the amount of
 component specific code you need to write and is configurable at the
 endpoint and component levels.  The following examples demonstrate how
diff --git a/core/camel-base/src/main/docs/file-language.adoc b/core/camel-base/src/main/docs/file-language.adoc
index b4ec091..4f3dbe2 100644
--- a/core/camel-base/src/main/docs/file-language.adoc
+++ b/core/camel-base/src/main/docs/file-language.adoc
@@ -3,8 +3,7 @@
 
 *Available as of Camel version 1.1*
 
-INFO:*File language is now merged with Simple language*
-From Camel 2.2 onwards, the file language is now merged with
+The file language is merged with
 <<simple-language,Simple>> language which means you can use all the file
 syntax directly within the simple language.
 
@@ -55,16 +54,16 @@ File component supports all of them.
 |file:name |String |yes |no |yes |no |refers to the file name (is relative to the starting directory, see note
 below)
 
-|file:name.ext |String |yes |no |yes |no |*Camel 2.3:* refers to the file extension only
+|file:name.ext |String |yes |no |yes |no |refers to the file extension only
 
-|file:name.ext.single |String |yes |no |yes |no |*Camel 2.14.4/2.15.3:* refers to the file extension. If the file
+|file:name.ext.single |String |yes |no |yes |no |refers to the file extension. If the file
 extension has mutiple dots, then this expression strips and only returns
 the last part.
 
 |file:name.noext |String |yes |no |yes |no |refers to the file name with no extension (is relative to the starting
 directory, see note below)
 
-|file:name.noext.single |String |yes |no |yes |no |*Camel 2.14.4/2.15.3:* refers to the file name with no extension (is
+|file:name.noext.single |String |yes |no |yes |no |refers to the file name with no extension (is
 relative to the starting directory, see note below). If the file
 extension has multiple dots, then this expression strips only the last
 part, and keep the others.
@@ -74,7 +73,7 @@ part, and keep the others.
 |file:onlyname.noext |String |yes |no |yes |no |refers to the file name only with no extension and with no leading
 paths.
 
-|file:onlyname.noext.single |String |yes |no |yes |no |*Camel 2.14.4/2.15.3:*refers to the file name only with no extension and
+|file:onlyname.noext.single |String |yes |no |yes |no |refers to the file name only with no extension and
 with no leading paths. If the file extension has multiple dots, then
 this expression strips only the last part, and keep the others.
 
@@ -90,7 +89,7 @@ this expression strips only the last part, and keep the others.
 
 |file:length |Long |yes |no |yes |no |refers to the file length returned as a Long type
 
-|file:size |Long |yes |no |yes |no |*Camel 2.5:* refers to the file length returned as a Long type
+|file:size |Long |yes |no |yes |no |refers to the file length returned as a Long type
 
 |file:modified |Date |yes |no |yes |no |Refers to the file last modified returned as a Date type
 
@@ -254,7 +253,7 @@ Spring XML, where we can route based on file extensions as shown below:
 
 If you use the `fileName` option on the File endpoint
 to set a dynamic filename using the <<file-language,File Language>> then make sure you  +
- use the alternative syntax (available from Camel 2.5 onwards) to avoid
+ use the alternative syntax to avoid
 clashing with Springs `PropertyPlaceholderConfigurer`.
 
 *bundle-context.xml*
diff --git a/core/camel-base/src/main/docs/simple-language.adoc b/core/camel-base/src/main/docs/simple-language.adoc
index 654b66c..1183d46 100644
--- a/core/camel-base/src/main/docs/simple-language.adoc
+++ b/core/camel-base/src/main/docs/simple-language.adoc
@@ -247,8 +247,7 @@ log sensitive data from the message itself.
 === OGNL expression support
 
 INFO:Camel's OGNL support is for invoking methods only. You cannot access
-fields. From *Camel 2.11.1* onwards we added special support for accessing the
-length field of Java arrays.
+fields. Camel support accessing the length field of Java arrays.
 
 
 The <<simple-language,Simple>> and <<simple-language,Bean>> language now
@@ -359,8 +358,7 @@ And you can call the size method on the list with
 simple("${body.address.lines.size}")
 ------------------------------------
 
-From *Camel 2.11.1* onwards we added support for the length field for
-Java arrays as well, eg:
+Camel supports the length field for Java arrays as well, eg:
 
 [source,java]
 ---------------------------------------------------
@@ -473,9 +471,8 @@ function, otherwise parsed as literal.
 |\ |To escape a value, eg \$, to indicate a $ sign.
 Special: Use \n for new line, \t for tab, and \r for carriage return.
 *Notice:* Escaping is *not* supported using the
-<<file-language,File Language>>. *Notice:* From Camel 2.11
-onwards the escape character is no longer support, but replaced with the
-following three special escaping.
+<<file-language,File Language>>. *Notice:* The escape character is not supported, use the
+following three special escaping instead.
 
 |\n |To use newline character.
 
@@ -771,7 +768,7 @@ from("direct:order")
     .to("mock:reply");
 ----
 
-And from Camel 2.3 onwards you can also convert the body to a given
+You can also convert the body to a given
 type, for example to ensure that it is a String you can do:
 
 [source,xml]
@@ -786,8 +783,7 @@ There are a few types which have a shorthand notation, so we can use
 `byte[], String, Integer, Long`. All other types must use their FQN
 name, e.g. `org.w3c.dom.Document`.
 
-It is also possible to lookup a value from a header `Map` in *Camel 2.3*
-onwards:
+It is also possible to lookup a value from a header `Map`:
 
 [source,xml]
 ----
@@ -801,7 +797,7 @@ a `java.util.Map` and we then lookup with the key `gold` and return the
 value. If the header is not convertible to Map an exception is thrown. If the
 header with name `type` does not exist `null` is returned.
 
-From Camel 2.9 onwards you can nest functions, such as shown below:
+You can nest functions, such as shown below:
 
 [source,xml]
 ----
@@ -820,7 +816,7 @@ the message which enum it matches.
 
 === Using new lines or tabs in XML DSLs
 
-From Camel 2.9.3 onwards it is easier to specify new lines or tabs in
+It is easier to specify new lines or tabs in
 XML DSLs as you can escape the value now
 
 [source,xml]
@@ -848,7 +844,7 @@ whitespace characters.
 
 You can now provide a result type to the <<simple-language,Simple>>
 expression, which means the result of the evaluation will be converted
-to the desired type. This is most useable to define types such as
+to the desired type. This is most usable to define types such as
 booleans, integers, etc.
 
 For example to set a header as a boolean type you can do:
diff --git a/core/camel-core/src/main/docs/eips/aggregate-eip.adoc b/core/camel-core/src/main/docs/eips/aggregate-eip.adoc
index fe21813..0ec26f7 100644
--- a/core/camel-core/src/main/docs/eips/aggregate-eip.adoc
+++ b/core/camel-core/src/main/docs/eips/aggregate-eip.adoc
@@ -117,20 +117,19 @@ exchanges are completed.
 * completionSize - Is a number indicating that after X aggregated
 exchanges it's complete.
 * completionPredicate - Runs a link:predicate.html[Predicate] when a new
-exchange is aggregated to determine if we are complete or not. Staring
-in *Camel 2.15*, the configured aggregationStrategy can implement the
+exchange is aggregated to determine if we are complete or not.
+The configured aggregationStrategy can implement the
 Predicate interface and will be used as the completionPredicate if no
-completionPredicate is configured. From *Camel 2.16*, the configured
-aggregationStrategy can
+completionPredicate is configured. The configured aggregationStrategy can
 implement `PreCompletionAwareAggregationStrategy` and will be used as
 the completionPredicate in pre-complete check mode. See further below
 for more details.
 * completionFromBatchConsumer - Special option for
 link:batch-consumer.html[Batch Consumer] which allows you to complete
 when all the messages from the batch has been aggregated.
-* forceCompletionOnStop - *Camel 2.9* Indicates to complete all current
+* forceCompletionOnStop - Indicates to complete all current
 aggregated exchanges when the context is stopped
-* Using a `AggregateController` - *Camel 2.16* which allows to use an
+* Using a `AggregateController` - which allows to use an
 external source to complete groups or all groups. This can be done using
 Java or JMX API.
 
@@ -304,7 +303,7 @@ completion of all groups after processing the current message.
 If you want to aggregate some value from the messages `<V>` into a `List<V>`
 then we have added a
 `org.apache.camel.processor.aggregate.AbstractListAggregationStrategy`
-abstract class in *Camel 2.11* that makes this easier. The completed
+abstract class that makes this easier. The completed
 Exchange that is sent out of the aggregator will contain the `List<V>` in
 the message body.
 
@@ -413,8 +412,8 @@ List<Exchange> grouped = exchange.getIn().getBody(List.class);
 
 To use the `AggregationStrategy` you had to implement the
 `org.apache.camel.AggregationStrategy` interface,
-which means your logic would be tied to the Camel API. From *Camel 2.12*
-onwards you can use a POJO for the logic and let Camel adapt to your
+which means your logic would be tied to the Camel API.
+You can use a POJO for the logic and let Camel adapt to your
 POJO. To use a POJO a convention must be followed:
 
 * there must be a public method to use
diff --git a/core/camel-core/src/main/docs/eips/bean-eip.adoc b/core/camel-core/src/main/docs/eips/bean-eip.adoc
index 9fe57b9..0d67398 100644
--- a/core/camel-core/src/main/docs/eips/bean-eip.adoc
+++ b/core/camel-core/src/main/docs/eips/bean-eip.adoc
@@ -1,7 +1,7 @@
 [[bean-eip]]
 == Bean EIP
 
-The *bean:* EIP binds beans to Camel message exchanges.
+The Bean EIP binds beans to Camel message exchanges.
 
 === URI Format
 
diff --git a/core/camel-core/src/main/docs/eips/dynamic-router.adoc b/core/camel-core/src/main/docs/eips/dynamic-router.adoc
index b83e44b..e25baef 100644
--- a/core/camel-core/src/main/docs/eips/dynamic-router.adoc
+++ b/core/camel-core/src/main/docs/eips/dynamic-router.adoc
@@ -9,7 +9,7 @@ on all possible destinations while maintaining its efficiency.
 
 image:http://www.enterpriseintegrationpatterns.com/img/DynamicRouter.gif[image]
 
-In *Camel 2.5* we introduced a `dynamicRouter` in the DSL which is like
+The `dynamicRouter` in the DSL is similar to
 a dynamic Routing Slip which evaluates the slip
 _on-the-fly_.
 
@@ -32,7 +32,7 @@ endpoints.
 Otherwise Camel will thrown an exception stating the endpoint uri is not
 valid.
 
-|`cacheSize` |`1000` |*Camel 2.13.1/2.12.4:* Allows to configure the cache size for the
+|`cacheSize` |`1000` |Allows to configure the cache size for the
 `ProducerCache` which caches producers for reuse in the routing slip.
 Will by default use the default cache size which is 1000. Setting the
 value to -1 allows to turn off the cache all together.
@@ -41,7 +41,7 @@ value to -1 allows to turn off the cache all together.
 [[DynamicRouter-DynamicRouterinCamel2.5onwards]]
 === Dynamic Router in Camel 2.5 onwards
 
-From Camel 2.5 the Dynamic Router will set a
+The Dynamic Router will set a
 property (Exchange.SLIP_ENDPOINT) on the Exchange
 which contains the current endpoint as it advanced though the slip. This
 allows you to know how far we have processed in the slip. (It's a slip
@@ -138,12 +138,6 @@ guaranteed to be preserved during routing, where as properties on the
 Exchange are. Although there was a bug in the method
 call expression, see the warning below.
 
-WARNING:*Using beans to store state*
-Mind that in Camel 2.9.2 or older, when using a <<bean-component,Bean>> the
-state is not propagated, so you will have to use a
-Processor instead. This is fixed in Camel 2.9.3
-onwards.
-
 [[DynamicRouter-SpringXML]]
 === Spring XML
 
@@ -173,8 +167,7 @@ The same example in Spring XML would be:
 [[DynamicRouter-DynamicRouterannotation]]
 === @DynamicRouter annotation
 
-You can also use the `@DynamicRouter` annotation, for example the Camel
-2.4 example below could be written as follows. The `route` method would
+You can also use the `@DynamicRouter` annotation. The `route` method would
 then be invoked repeatedly as the message is processed dynamically. The
 idea is to return the next endpoint uri where to go. Return `null` to
 indicate the end. You can return multiple endpoints if you like, just as
diff --git a/core/camel-core/src/main/docs/eips/dynamicRouter-eip.adoc b/core/camel-core/src/main/docs/eips/dynamicRouter-eip.adoc
index 80ed1d3..0bafc76 100644
--- a/core/camel-core/src/main/docs/eips/dynamicRouter-eip.adoc
+++ b/core/camel-core/src/main/docs/eips/dynamicRouter-eip.adoc
@@ -5,7 +5,9 @@ The link:http://www.enterpriseintegrationpatterns.com/DynamicRouter.html[Dynamic
 
 image:http://www.enterpriseintegrationpatterns.com/img/DynamicRouter.gif[image]
 
-In *Camel 2.5* we introduced a dynamicRouter in the DSL which is like a dynamic Routing Slip which evaluates the slip _on-the-fly_.
+The `dynamicRouter` in the DSL is similar to
+a dynamic Routing Slip which evaluates the slip
+_on-the-fly_.
 
 [IMPORTANT]
 .Avoid endless looping
@@ -112,12 +114,6 @@ public String slip(String body, @Properties Map<String, Object> properties) {
 
 You could also store state as message headers, but they are not guaranteed to be preserved during routing, where as properties on the Exchange are. Although there was a bug in the method call expression, see the warning below.
 
-[WARNING]
-.Using beans to store state
-====
-Mind that in Camel 2.9.2 or older, when using a Bean the state is not propagated, so you will have to use a Processor instead. This is fixed in Camel 2.9.3 onwards.
-====
-
 ==== Spring XML
 The same example in Spring XML would be:
 
@@ -143,7 +139,7 @@ The same example in Spring XML would be:
 ----
 
 === @DynamicRouter annotation
-You can also use the `@DynamicRouter` annotation, for example the Camel 2.4 example below could be written as follows. The `route` method would then be invoked repeatedly as the message is processed dynamically.
+You can also use the `@DynamicRouter` annotation. The `route` method would then be invoked repeatedly as the message is processed dynamically.
 The idea is to return the next endpoint uri where to go. Return `null` to indicate the end. You can return multiple endpoints if you like, just as the Routing Slip, where each endpoint is separated by a delimiter.
 
 [source,java]
diff --git a/core/camel-core/src/main/docs/eips/enrich-eip.adoc b/core/camel-core/src/main/docs/eips/enrich-eip.adoc
index e2d284b..2098fff 100644
--- a/core/camel-core/src/main/docs/eips/enrich-eip.adoc
+++ b/core/camel-core/src/main/docs/eips/enrich-eip.adoc
@@ -88,14 +88,7 @@ The other one is `pollEnrich`
 
 `enrich` uses a Producer to obtain the additional data. It is usually used for Request Reply messaging, for instance to invoke an external web service.
 
-[WARNING]
-.Camel 2.15 or older - Data from current Exchange not used
-====
-`pollEnrich` or `enrich` does *not* access any data from the current Exchange which means when polling it cannot use any of the existing headers you may have set on the Exchange. For example you cannot set a filename in the `Exchange.FILE_NAME` header and use `pollEnrich` to consume only that file. For that you *must* set the filename in the endpoint URI.
-
-Instead of using enrich you can use Recipient List and have dynamic endpoints and define an `AggregationStrategy` on the Recipient List which then would work as a enrich would do.
-
-From *Camel 2.16* onwards both `enrich` and `pollEnrich` supports dynamic endpoints that uses an Expression to compute the uri, which allows to use data from the current Exchange. In other words all what is told above no longer apply and it just works.
+Both `enrich` and `pollEnrich` supports dynamic endpoints that uses an Expression to compute the uri, which allows to use data from the current Exchange.
 ====
 
 A little enrich example using Java:
@@ -139,26 +132,6 @@ Using this template the original exchange can be of any pattern. The resource ex
 
 ==== Enrich example using XML
 
-The same example in the Spring DSL (Camel 2.15 or older)
-
-[source,xml]
-----
-<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
-  <route>
-    <from uri="direct:start"/>
-    <enrich uri="direct:resource" strategyRef="aggregationStrategy"/>
-    <to uri="direct:result"/>
-  </route>
-  <route>
-    <from uri="direct:resource"/>
-    ...
-  </route>
-</camelContext>
-
-<bean id="aggregationStrategy" class="..." />
-----
-
-The same example in the Spring DSL (Camel 2.16 or newer)
 [source,xml]
 ----
 <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
@@ -188,17 +161,7 @@ from("direct:start")
 ----
 
 In the route above the message sent to the direct:result endpoint will contain the output from the direct:resource as we do not use any custom aggregation.
-And for Spring DSL (Camel 2.15 or older) just omit the strategyRef attribute:
-[source,xml]
-----
-<route>
-  <from uri="direct:start"/>
-  <enrich uri="direct:resource"/>
-  <to uri="direct:result"/>
-</route>
-----
 
-And for Spring DSL (Camel 2.16 or newer) just omit the strategyRef attribute:
 [source,xml]
 ----
 <route>
@@ -213,7 +176,7 @@ And for Spring DSL (Camel 2.16 or newer) just omit the strategyRef attribute:
 === Using dynamic uris
 *Available as of Camel 2.16*
 
-From Camel 2.16 onwards `enrich` and `pollEnrich` supports using dynamic uris computed based on information from the current Exchange. For example to enrich from a HTTP endpoint where the header with key orderId is used as part of the content-path of the HTTP url:
+Both `enrich` and `pollEnrich` supports using dynamic uris computed based on information from the current Exchange. For example to enrich from a HTTP endpoint where the header with key orderId is used as part of the content-path of the HTTP url:
 [source,java]
 ----
 from("direct:start")
diff --git a/core/camel-core/src/main/docs/eips/hystrix-eip.adoc b/core/camel-core/src/main/docs/eips/hystrix-eip.adoc
index bb6701b..cf1208c 100644
--- a/core/camel-core/src/main/docs/eips/hystrix-eip.adoc
+++ b/core/camel-core/src/main/docs/eips/hystrix-eip.adoc
@@ -32,8 +32,8 @@ The Hystrix EIP supports 2 options which are listed below:
 === Camel's Error Handler and Hystrix EIP
 
 By default the Hystrix EIP handles errors by itself. This means if the circuit breaker is open and
-the message fails, then Camel's error handler is not reacting also. However from *Camel 2.23* onwards
-you can enable Camels error handler with Hystrix by enabling the `inheritErrorHandler` option, as shown:
+the message fails, then Camel's error handler is not reacting also.
+However, you can enable Camels error handler with Hystrix by enabling the `inheritErrorHandler` option, as shown:
 
 [source,java]
 ----
diff --git a/core/camel-core/src/main/docs/eips/idempotentConsumer-eip.adoc b/core/camel-core/src/main/docs/eips/idempotentConsumer-eip.adoc
index 5381a69..2999a12 100644
--- a/core/camel-core/src/main/docs/eips/idempotentConsumer-eip.adoc
+++ b/core/camel-core/src/main/docs/eips/idempotentConsumer-eip.adoc
@@ -19,21 +19,13 @@ Camel provides the following Idempotent Consumer implementations:
 * MemoryIdempotentRepository
 * link:file2.html[FileIdempotentRepository]
 * link:hazelcast-component.html[HazelcastIdempotentRepository]
-(*Available as of Camel 2.8*)
-* <<sql-component,JdbcMessageIdRepository>> (*Available as of
-Camel 2.7*)
+* <<sql-component,JdbcMessageIdRepository>>
 * <<jpa-component,JpaMessageIdRepository>>
-* <<infinispan-component,InfinispanIdempotentRepository>> (*Available as of
-Camel 2.13.0)*
-* <<jcache-component,JCacheIdempotentRepository>>* (*Available as of Camel
-2.17.0)**
-* link:spring.html[SpringCacheIdempotentRepository] *(*Available as of
-Camel 2.17.1)**** 
-**
-* <<ehcache-component,EhcacheIdempotentRepository>>** *(*Available as of
-Camel 2.18.0)****
-* <<kafka-component,KafkaIdempotentRepository>> (*Available as of Camel
-2.19.0)*
+* <<infinispan-component,InfinispanIdempotentRepository>>
+* <<jcache-component,JCacheIdempotentRepository>>
+* link:spring.html[SpringCacheIdempotentRepository]
+* <<ehcache-component,EhcacheIdempotentRepository>>
+* <<kafka-component,KafkaIdempotentRepository>>
 
 === Options
 
diff --git a/core/camel-core/src/main/docs/eips/loadBalance-eip.adoc b/core/camel-core/src/main/docs/eips/loadBalance-eip.adoc
index d670bd4..e2eed83 100644
--- a/core/camel-core/src/main/docs/eips/loadBalance-eip.adoc
+++ b/core/camel-core/src/main/docs/eips/loadBalance-eip.adoc
@@ -15,10 +15,10 @@ Camel provides the following policies out-of-the-box:
 | Sticky | Sticky load balancing using an Expression to calculate a correlation key to perform the sticky load balancing; rather like jsessionid in the web or JMSXGroupID in JMS.
 | Topic | Topic which sends to all destinations (rather like JMS Topics)
 | Failover | In case of failures the exchange will be tried on the next endpoint.
-| Weighted Round-Robin | *Camel 2.5*: The weighted load balancing policy allows you to specify a processing load distribution ratio for each server with respect to the others. In addition to the weight, endpoint selection is then further refined using *round-robin* distribution based on weight.
-| Weighted Random | *Camel 2.5*: The weighted load balancing policy allows you to specify a processing load distribution ratio for each server with respect to others.In addition to the weight, endpoint selection is then further refined using *random* distribution based on weight.
-| Custom | *Camel 2.8*: From *Camel 2.8* onwards the preferred way of using a custom Load Balancer is to use this policy, as the ref attribute is not supported anymore.
-| Circuit Breaker | *Camel 2.14*: Implements the Circuit Breaker pattern as described in "Release it!" book.
+| Weighted Round-Robin |The weighted load balancing policy allows you to specify a processing load distribution ratio for each server with respect to the others. In addition to the weight, endpoint selection is then further refined using *round-robin* distribution based on weight.
+| Weighted Random |The weighted load balancing policy allows you to specify a processing load distribution ratio for each server with respect to others.In addition to the weight, endpoint selection is then further refined using *random* distribution based on weight.
+| Custom |The preferred way of using a custom Load Balancer is to use this policy, as the ref attribute is not supported anymore.
+| Circuit Breaker |Implements the Circuit Breaker pattern as described in "Release it!" book.
 |=======================================================================
 
 === Options
diff --git a/core/camel-core/src/main/docs/eips/log-eip.adoc b/core/camel-core/src/main/docs/eips/log-eip.adoc
index 810823b..687af98 100644
--- a/core/camel-core/src/main/docs/eips/log-eip.adoc
+++ b/core/camel-core/src/main/docs/eips/log-eip.adoc
@@ -31,7 +31,7 @@ The log DSL is much lighter and meant for logging human logs such as Starting to
 
 === Samples
 
-In *Camel 2.2* you can use the log DSL which allows you to use <<simple-language,Simple>> language to construct a dynamic message which gets logged.
+You can use the log DSL which allows you to use <<simple-language,Simple>> language to construct a dynamic message which gets logged.
 
 For example you can do
 
@@ -63,7 +63,7 @@ from("direct:start")
     .to("bean:foo");
 ----
 
-Since *Camel 2.12.4/2.13.1* the logger instance may be used as well:
+The logger instance may be used as well:
 [source,java]
 ----
 from("direct:start")
@@ -115,7 +115,7 @@ Since Camel *2.12.4/2.13.1* it is possible to reference logger instance. For exa
 
 ==== Using Logger instance from the Registry
 
-As of *Camel 2.12.4/2.13.1*, if no logger name or logger instance is passed to log DSL,
+If no logger name or logger instance is passed to log DSL,
  there is a Registry lookup performed to find single instance of org.slf4j.Logger.
  If such an instance is found, it is used instead of creating a new logger instance.
  If more instances are found, the behavior defaults to creating a new instance of logger.
@@ -125,7 +125,7 @@ As of *Camel 2.12.4/2.13.1*, if no logger name or logger instance is passed to l
 
 By default the log name is the route id. If you want to use a different log name, you would need to configure the logName option. However if you have many logs and you want all of them to use the same log name, then you would need to set that logName option on all of them.
 
-With Camel 2.17 onwards you can configure a global log name that is used instead of the route id, eg
+You can configure a global log name that is used instead of the route id, eg
 [source,java]
 ----
 camelContext.getProperties().put(Exchange.LOG_EIP_NAME, "com.foo.myapp");
@@ -156,7 +156,6 @@ You can specify a marker name in the DSL
 ----
 
 === Using log DSL in OSGi
-*Improvement as of Camel 2.12.4/2.13.1*
 
 When using log DSL inside OSGi (e.g., in Karaf), the underlying logging mechanisms are provided by PAX logging. It searches for a bundle which invokes org.slf4j.LoggerFactory.getLogger() method and associates the bundle with the logger instance. Passing only logger name to log DSL results in associating camel-core bundle with the logger instance created.
 
diff --git a/core/camel-core/src/main/docs/eips/loop-eip.adoc b/core/camel-core/src/main/docs/eips/loop-eip.adoc
index 0ff0e14..596a8ca 100644
--- a/core/camel-core/src/main/docs/eips/loop-eip.adoc
+++ b/core/camel-core/src/main/docs/eips/loop-eip.adoc
@@ -6,7 +6,7 @@ The Loop allows for processing a message a number of times, possibly in a differ
 [NOTE]
 .Default mode
 ====
-Notice by default the loop uses the same exchange throughout the looping. So the result from the previous iteration will be used for the next (eg Pipes and Filters). From Camel 2.8 onwards you can enable copy mode instead. See the options table for more details.
+Notice by default the loop uses the same exchange throughout the looping. So the result from the previous iteration will be used for the next (eg Pipes and Filters). You can enable copy mode instead. See the options table for more details.
 ====
 
 === Options
diff --git a/core/camel-core/src/main/docs/eips/multicast-eip.adoc b/core/camel-core/src/main/docs/eips/multicast-eip.adoc
index 0429a9f..a645640 100644
--- a/core/camel-core/src/main/docs/eips/multicast-eip.adoc
+++ b/core/camel-core/src/main/docs/eips/multicast-eip.adoc
@@ -71,7 +71,7 @@ handle this in the `AggregationStrategy`.
 
 But sometimes you just want Camel to stop and let the exception be
 propagated back, and let the Camel error handler handle it. You can do
-this in Camel 2.1 by specifying that it should stop in case of an
+this by specifying that it should stop in case of an
 exception occurred. This is done by the `stopOnException` option as
 shown below:
 
diff --git a/core/camel-core/src/main/docs/eips/pollEnrich-eip.adoc b/core/camel-core/src/main/docs/eips/pollEnrich-eip.adoc
index 9207655..bd2c38b 100644
--- a/core/camel-core/src/main/docs/eips/pollEnrich-eip.adoc
+++ b/core/camel-core/src/main/docs/eips/pollEnrich-eip.adoc
@@ -22,11 +22,9 @@ You can pass in a timeout value that determines which method to use
 
 The timeout values is in millis.
 
-[IMPORTANT]
-.Camel 2.15 or older - Data from current Exchange not used
 ====
 `pollEnrich` does *not* access any data from the current Exchange which means when polling it cannot use any of the existing headers you may have set on the Exchange. For example you cannot set a filename in the `Exchange.FILE_NAME` header and use `pollEnrich` to consume only that file. For that you *must* set the filename in the endpoint URI.
-From *Camel 2.16* onwards both `enrich` and `pollEnrich` supports dynamic endpoints that uses an Expression to compute the uri, which allows to use data from the current Exchange. In other words all what is told above no longer apply and it just works.
+Both `enrich` and `pollEnrich` supports dynamic endpoints that uses an Expression to compute the uri, which allows to use data from the current Exchange. In other words all what is told above no longer apply and it just works.
 ====
 
 === Content enrichment using pollEnrich
@@ -64,17 +62,7 @@ from("direct:start")
   .to("direct:result");
 ----
 
-And in XML DSL (Camel 2.15 or older) you do:
-[source,xml]
-----
-<route>
-  <from uri="direct:start"/>
-  <pollEnrich uri="file:inbox?fileName=data.txt"/>
-  <to uri="direct:result"/>
-</route>
-----
-
-And in XML DSL (Camel 2.16 or newer) you do:
+And in XML DSL you do:
 [source,xml]
 ----
 <route>
@@ -88,17 +76,7 @@ And in XML DSL (Camel 2.16 or newer) you do:
 
 If there is no file then the message is empty. We can use a timeout to either wait (potentially forever) until a file exists, or use a timeout to wait a certain period.
 
-For example to wait up to 5 seconds you can do (Camel 2.15 or older):
-[source,xml]
-----
-<route>
-  <from uri="direct:start"/>
-  <pollEnrich uri="file:inbox?fileName=data.txt" timeout="5000"/>
-  <to uri="direct:result"/>
-</route>
-----
-
-For example to wait up to 5 seconds you can do (Camel 2.16 or newer):
+For example to wait up to 5 seconds you can do:
 [source,xml]
 ----
 <route>
@@ -114,7 +92,7 @@ For example to wait up to 5 seconds you can do (Camel 2.16 or newer):
 
 *Available as of Camel 2.16*
 
-From Camel 2.16 onwards `enrich` and `pollEnrich` supports using dynamic uris computed based on information from the current Exchange. For example to `pollEnrich` from an endpoint that uses a header to indicate a SEDA queue name:
+Both `enrich` and `pollEnrich` supports using dynamic uris computed based on information from the current Exchange. For example to `pollEnrich` from an endpoint that uses a header to indicate a SEDA queue name:
 [source,java]
 ----
 from("direct:start")
diff --git a/core/camel-core/src/main/docs/eips/recipientList-eip.adoc b/core/camel-core/src/main/docs/eips/recipientList-eip.adoc
index 7245644..c3bc72a 100644
--- a/core/camel-core/src/main/docs/eips/recipientList-eip.adoc
+++ b/core/camel-core/src/main/docs/eips/recipientList-eip.adoc
@@ -214,8 +214,9 @@ And in XML it is again an attribute on the recipient list tag.
 === Knowing which endpoint when using custom AggregationStrategy
 *Available as of Camel 2.12*
 
-When using a custom `AggregationStrategy` then the `aggregate` method is always invoked in sequential order (also if parallel processing is enabled) of the endpoints the Recipient List is using.
-However from Camel 2.12 onwards this is easier to know as the `newExchange` Exchange now has a property stored (key is `Exchange.RECIPIENT_LIST_ENDPOINT` with the uri of the Endpoint.
+When using a custom `AggregationStrategy` then the `aggregate` method is always invoked in sequential order
+(also if parallel processing is enabled) of the endpoints the Recipient List is using.
+However, Exchange has a property stored (key is `Exchange.RECIPIENT_LIST_ENDPOINT` with the uri of the Endpoint.
 So you know which endpoint you are aggregating from. The code block shows how to access this property in your Aggregator.
 
 [source,java]
@@ -348,9 +349,8 @@ See details at the Multicast EIP
 
 The recipient list will by default use the current Exchange Pattern. Though one can imagine use-cases where one wants to send
 a message to a recipient using a different exchange pattern. For example you may have a route that initiates as an `InOnly` route,
-but want to use `InOut` exchange pattern with a recipient list. To do this in earlier Camel releases, you would need to change
-the exchange pattern before the recipient list, or use `onPrepare` option to alter the pattern.
-From Camel 2.15 onwards, you can configure the exchange pattern directly in the recipient endpoints.
+but want to use `InOut` exchange pattern with a recipient list. You can configure the exchange pattern directly in the
+recipient endpoints.
 
 For example in the route below we pick up new files (which will be started as `InOnly`) and then route to a recipient list.
 As we want to use `InOut` with the ActiveMQ (JMS) endpoint we can now specify this using the `exchangePattern=InOut` option.
diff --git a/core/camel-core/src/main/docs/eips/resequence-eip.adoc b/core/camel-core/src/main/docs/eips/resequence-eip.adoc
index a2a698f..233711d 100644
--- a/core/camel-core/src/main/docs/eips/resequence-eip.adoc
+++ b/core/camel-core/src/main/docs/eips/resequence-eip.adoc
@@ -115,7 +115,7 @@ Notice this is *only* possible in the `batch` mode of the Resequencer.
 === Ignore invalid exchanges
 *Available as of Camel 2.9*
 
-The Resequencer EIP will from Camel 2.9 onwards throw a `CamelExchangeException` if the incoming Exchange is not valid for the resequencer - ie. the expression cannot be evaluated, such as a missing header.
+The Resequencer EIP throws a `CamelExchangeException` if the incoming Exchange is not valid for the resequencer - ie. the expression cannot be evaluated, such as a missing header.
 You can use the option `ignoreInvalidExchanges` to ignore these exceptions which means the Resequencer will then skip the invalid Exchange.
 
 [source,java]
diff --git a/core/camel-core/src/main/docs/eips/routingSlip-eip.adoc b/core/camel-core/src/main/docs/eips/routingSlip-eip.adoc
index 4de7c26..47ed81a 100644
--- a/core/camel-core/src/main/docs/eips/routingSlip-eip.adoc
+++ b/core/camel-core/src/main/docs/eips/routingSlip-eip.adoc
@@ -30,7 +30,7 @@ from("activemq:SomeQueue")
 
 Messages will be checked for the existence of the `aRoutingSlipHeader` header.
 The value of this header should be a comma-delimited list of endpoint URIs you wish the message to be routed to.
-The Message will be routed in a pipeline fashion, i.e., one after the other. From *Camel 2.5* the Routing Slip will set a property, `Exchange.SLIP_ENDPOINT`, on the Exchange which contains the current endpoint as it advanced though the slip. This allows you to _know_ how far we have processed in the slip.
+The Message will be routed in a pipeline fashion, i.e., one after the other. The Routing Slip sets a property, `Exchange.SLIP_ENDPOINT`, on the Exchange which contains the current endpoint as it advanced though the slip. This allows you to _know_ how far we have processed in the slip.
 
 The Routing Slip will compute the slip *beforehand* which means, the slip is only computed once. If you need to compute the slip _on-the-fly_ then use the Dynamic Router pattern instead.
 
@@ -60,7 +60,7 @@ from("direct:c").routingSlip(header("aRoutingSlipHeader"), "#");
 === Ignore Invalid Endpoints
 *Available as of Camel 2.3*
 
-The Routing Slip now supports ignoreInvalidEndpoints which the Recipient List also supports. You can use it to skip endpoints which are invalid.
+The Routing Slip supports ignoreInvalidEndpoints which the Recipient List also supports. You can use it to skip endpoints which are invalid.
 [source,java]
 ---------------------
 from("direct:a")
@@ -85,7 +85,7 @@ Then let's say the myHeader contains the following two endpoints direct:foo,xxx:
 === Expression Support
 *Available as of Camel 2.4*
 
-The Routing Slip now supports to take the expression parameter as the Recipient List does. You can tell Camel the expression that you want to use to get the routing slip.
+The Routing Slip supports to take the expression parameter as the Recipient List does. You can tell Camel the expression that you want to use to get the routing slip.
 
 [source,java]
 ---------------------
diff --git a/core/camel-core/src/main/docs/eips/split-eip.adoc b/core/camel-core/src/main/docs/eips/split-eip.adoc
index a365137..d442c23 100644
--- a/core/camel-core/src/main/docs/eips/split-eip.adoc
+++ b/core/camel-core/src/main/docs/eips/split-eip.adoc
@@ -36,8 +36,8 @@ The following properties are set on each Exchange that are split:
 |=======================================================================
 | Property | Type | Description
 | `CamelSplitIndex` | `int` | A split counter that increases for each Exchange being split. The counter starts from 0.
-| `CamelSplitSize` | `int` | The total number of Exchanges that was splitted. This header is not applied for stream based splitting. From *Camel 2.9* onwards this header is also set in stream based splitting, but only on the completed Exchange.
-| `CamelSplitComplete` | `boolean` | *Camel 2.4*: Whether or not this Exchange is the last.
+| `CamelSplitSize` | `int` | The total number of Exchanges that was splitted. This header is not applied for stream based splitting. This header is also set in stream based splitting, but only on the completed Exchange.
+| `CamelSplitComplete` | `boolean` |Whether or not this Exchange is the last.
 |=======================================================================
 
 
@@ -131,7 +131,7 @@ In the sample below we split the body using a `@` as separator. You can of cours
 
 The Splitter will by default return the original input message.
 
-You can override this by suppling your own strategy as an `AggregationStrategy`.
+You can override this by supplying your own strategy as an `AggregationStrategy`.
 There is a sample on this page (Split aggregate request/reply sample).
 Notice its the same strategy as the Aggregate EIP supports.
 This Splitter can be viewed as having a build in light weight Aggregate EIP.
@@ -154,9 +154,10 @@ from("activemq:my.queue")
 [NOTE]
 .Splitting big XML payloads
 ====
-The XPath engine in Java and saxon will load the entire XML content into memory. And thus they are not well suited for very big XML payloads.
-Instead you can use a custom Expression which will iterate the XML payload in a streamed fashion. From Camel 2.9 onwards you can use the Tokenizer language
-which supports this when you supply the start and end tokens. From Camel 2.14, you can use the XMLTokenizer language which is specifically provided for tokenizing XML documents.
+The XPath engine in Java and saxon will load the entire XML content into memory. And thus they are not well suited for very big
+XML payloads. Instead you can use a custom Expression which will iterate the XML payload in a streamed fashion.
+You can use the Tokenizer language which supports this when you supply the start and end tokens.
+You can use the XMLTokenizer language which is specifically provided for tokenizing XML documents.
 ====
 
 You can split streams by enabling the streaming mode using the streaming builder method.
@@ -616,8 +617,12 @@ See details at Multicast EIP
 === Sharing unit of work
 *Available as of Camel 2.8*
 
-The Splitter will by default not share unit of work between the parent exchange and each splitted exchange. This means each sub exchange has its own individual unit of work.
-For example you may have an use case, where you want to split a big message. And you want to regard that process as an atomic isolated operation that either is a success or failure. In case of a failure you want that big message to be moved into a dead letter queue. To support this use case, you would have to share the unit of work on the Splitter.
+The Splitter will by default not share unit of work between the parent exchange and each split exchange.
+This means each sub exchange has its own individual unit of work.
+For example you may have an use case, where you want to split a big message.
+And you want to regard that process as an atomic isolated operation that either is a success or failure.
+In case of a failure you want that big message to be moved into a dead letter queue.
+To support this use case, you would have to share the unit of work on the Splitter.
 
 Here is an example in Java DSL
 [source,java]
@@ -642,7 +647,15 @@ from("direct:line")
     .to("mock:line");
 ----
 
-Now in this example what would happen is that in case there is a problem processing each sub message, the error handler will kick in (yes error handling still applies for the sub messages). *But* what doesn't happen is that if a sub message fails all redelivery attempts (its exhausted), then its *not* moved into that dead letter queue. The reason is that we have shared the unit of work, so the sub message will report the error on the shared unit of work. When the Splitter is done, it che [...]
+Now in this example what would happen is that in case there is a problem processing each sub message,
+the error handler will kick in (yes error handling still applies for the sub messages).
+*But* what doesn't happen is that if a sub message fails all redelivery attempts (its exhausted),
+then its *not* moved into that dead letter queue. The reason is that we have shared the unit of work,
+so the sub message will report the error on the shared unit of work. When the Splitter is done,
+it checks the state of the shared unit of work and checks if any errors occurred.
+And if an error occurred it will set the exception on the Exchange and mark it for rollback.
+The error handler will yet again kick in, as the Exchange has been marked as rollback and it had an exception as well.
+No redelivery attempts is performed (as it was marked for rollback) and the Exchange will be moved into the dead letter queue.
 
 Using this from XML DSL is just as easy as you just have to set the `shareUnitOfWork` attribute to true:
 
diff --git a/core/camel-core/src/main/docs/eips/toD-eip.adoc b/core/camel-core/src/main/docs/eips/toD-eip.adoc
index e566172..d7c713d 100644
--- a/core/camel-core/src/main/docs/eips/toD-eip.adoc
+++ b/core/camel-core/src/main/docs/eips/toD-eip.adoc
@@ -143,8 +143,6 @@ of being reused in case a message is routed with the same `userName` header. The
 will not solve the _endless dynamic endoints_ problem. Instead you should use static endpoints with `to` and
 provide the dynamic parts in Camel message headers (if possible).
 
-The example above can resolve via static endpoints, or from Camel 2.22 onwards via optimised components (see further below)
-
 ==== Using static endpoints
 
 In the example above then the parameter `userid` is dynamic computed, and would result in one instance of endpoint and producer
@@ -158,13 +156,13 @@ from("direct:login")
   .toD("http:myloginserver:8080");
 ----
 
-If you are using Camel 2.22 onwards then you can use its optimised components for `toD` that can _solve_ this out of the box,
+However, you can use its optimised components for `toD` that can _solve_ this out of the box,
 as documented next.
 
 === Using optimised components
 
 But a better solution would be if the HTTP component could be optimised to handle the variations of dynamic computed endpoint uris.
-This is now possible with *Camel 2.22* onwards, where the following components has been optimised for `toD`:
+This is with the following components, which have been optimised for `toD`:
 
 - camel-http
 - camel-http4
diff --git a/core/camel-core/src/main/docs/eips/wireTap-eip.adoc b/core/camel-core/src/main/docs/eips/wireTap-eip.adoc
index 03bbd38..fe485c0 100644
--- a/core/camel-core/src/main/docs/eips/wireTap-eip.adoc
+++ b/core/camel-core/src/main/docs/eips/wireTap-eip.adoc
@@ -104,16 +104,14 @@ over how the link:exchange.html[Exchange] is populated as you can set
 properties, headers, etc. An link:expression.html[Expression] can only
 be used to set the *`IN`* body.
 
-From *Camel 2.3*: the link:expression.html[Expression] or
+The link:expression.html[Expression] or
 link:processor.html[Processor] is pre-populated with a copy of the
 original link:exchange.html[Exchange], which allows you to access the
 original message when you prepare a new link:exchange.html[Exchange] to
 be sent. You can use the *`copy`* option (enabled by default) to
-indicate whether you want this. If you set *`copy=false`*, then it works
-as in *Camel 2.2* or older where the link:exchange.html[Exchange] will
-be empty.
+indicate whether you want this.
 
-Below is the processor variation. This example is from *Camel 2.3*,
+Below is the processor variation,
 where we disable *`copy`* by passing in *`false`* to create a new, empty
 link:exchange.html[Exchange]
 
@@ -163,8 +161,8 @@ part of the queue name:
 If you send a new message using link:wire-tap.html[Wire Tap], then you
 could only set the message body using an
 link:expression.html[Expression] from the DSL. If you also need to set
-headers, you would have to use a link:processor.html[Processor]. From
-*Camel 2.8*: it's possible to set headers as well using the DSL.
+headers, you would have to use a link:processor.html[Processor].
+It's possible to set headers as well using the DSL.
 
 The following example sends a new message which has