[
https://issues.apache.org/jira/browse/CAMEL-11497?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16661768#comment-16661768
]
ASF GitHub Bot commented on CAMEL-11497:
----------------------------------------
oscerd closed pull request #2576: CAMEL-11497: Migrate FAQ - Using Camel
Questions - part2
URL: https://github.com/apache/camel/pull/2576
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
diff --git a/camel-core/src/main/docs/eips/content-filter-eip.adoc
b/camel-core/src/main/docs/eips/content-filter-eip.adoc
index f66fd7e38d0..933c12e3fcf 100644
--- a/camel-core/src/main/docs/eips/content-filter-eip.adoc
+++ b/camel-core/src/main/docs/eips/content-filter-eip.adoc
@@ -8,7 +8,7 @@ Filter] from the
using one of the following mechanisms in the routing logic to transform
content from the inbound message.
-* <<MessageTranslator-MessageTranslator,Message Translator>>
+* <<messageTranslator-eip,Message Translator>>
* invoking a <<BeanIntegration-BeanIntegration,Java bean>>
* <<Processor-Processor,Processor>> object
diff --git a/camel-core/src/main/docs/eips/message-translator.adoc
b/camel-core/src/main/docs/eips/message-translator.adoc
index 797e96e252f..f2ba7c8ffc1 100644
--- a/camel-core/src/main/docs/eips/message-translator.adoc
+++ b/camel-core/src/main/docs/eips/message-translator.adoc
@@ -1,4 +1,4 @@
-[[MessageTranslator-MessageTranslator]]
+[[messageTranslator-eip]]
== Message Translator
Camel supports the
diff --git a/camel-core/src/main/docs/eips/pipeline-eip.adoc
b/camel-core/src/main/docs/eips/pipeline-eip.adoc
deleted file mode 100644
index 3f9c4f77bb6..00000000000
--- a/camel-core/src/main/docs/eips/pipeline-eip.adoc
+++ /dev/null
@@ -1,97 +0,0 @@
-[[pipeline-eip]]
-== Pipeline EIP
-== Pipes and Filters
-
-Camel supports the
link:http://www.enterpriseintegrationpatterns.com/PipesAndFilters.html[Pipes
and Filters] from the
link:https://github.com/apache/camel/blob/master/docs/user-manual/en/enterprise-integration-patterns.adoc[EIP
patterns] in various ways.
-
-image:http://www.enterpriseintegrationpatterns.com/img/PipesAndFilters.gif[image]
-
-With Camel you can split your processing across multiple independent
-link:https://github.com/apache/camel/blob/master/docs/user-manual/en/endpoint.adoc[Endpoint]
instances which can then be chained
-together.
-
-== Options
-
-// eip options: START
-The Pipeline EIP has no options.
-// eip options: END
-
-[[PipesandFilters-Samples]]
-=== Samples
-
-You can create pipelines of logic using multiple
-link:https://github.com/apache/camel/blob/master/docs/user-manual/en/endpoint.adoc[Endpoint]
or
link:https://github.com/apache/camel/blob/master/camel-core/src/main/docs/eips/message-translator.adoc[Message
-Translator] instances as follows
-
-Though pipeline is the default mode of operation when you specify
-multiple outputs in Camel. The opposite to pipeline is multicast; which
-fires the same message into each of its outputs. (See the example
-below).
-
-In Java you do:
-[source,java]
-----
-from("activemq:SomeQueue")
- .pipeline()
- .bean("foo")
- .bean("bar")
- .to("acitvemq:OutputQueue");
-----
-
-The pipeline is the default mode, which can be omitted, and therefore you
almost often write as:
-
-[source,java]
-----
-from("activemq:SomeQueue")
- .bean("foo")
- .bean("bar")
- .to("acitvemq:OutputQueue");
-----
-
-In XML you can use the `<pipeline>` element
-
-[source,xml]
-----
-<route>
- <from uri="activemq:SomeQueue"/>
- <pipeline>
- <bean ref="foo"/>
- <bean ref="bar"/>
- <to uri="activemq:OutputQueue"/>
- </pipeline>
-</route>
-----
-
-In the above the pipeline element is actually unnecessary, you could use this:
-
-[source,xml]
-----
-<route>
- <from uri="activemq:SomeQueue"/>
- <bean ref="foo"/>
- <bean ref="bar"/>
- <to uri="activemq:OutputQueue"/>
-</route>
-----
-
-Its just a bit more explicit. However if you wish to use `<multicast/>` to
-avoid a pipeline - to send the same message into multiple pipelines -
-then the `<pipeline>` element comes into its own.
-
-[source,xml]
-----
-<route>
- <from uri="activemq:SomeQueue"/>
- <multicast>
- <pipeline>
- <bean ref="something"/>
- <to uri="log:Something"/>
- </pipeline>
- <pipeline>
- <bean ref="foo"/>
- <bean ref="bar"/>
- <to uri="activemq:OutputQueue"/>
- </pipeline>
- </multicast>
-</route>
-----
diff --git a/camel-core/src/main/docs/eips/pipes-and-filters.adoc
b/camel-core/src/main/docs/eips/pipes-and-filters.adoc
index ef30252021b..7750c7fae68 100644
--- a/camel-core/src/main/docs/eips/pipes-and-filters.adoc
+++ b/camel-core/src/main/docs/eips/pipes-and-filters.adoc
@@ -1,4 +1,4 @@
-[[PipesandFilters-PipesandFilters]]
+[[pipesandFilters-eip]]
== Pipes and Filters
Camel supports the
link:http://www.enterpriseintegrationpatterns.com/PipesAndFilters.html[Pipes
and Filters] from the
link:https://github.com/apache/camel/blob/master/docs/user-manual/en/enterprise-integration-patterns.adoc[EIP
patterns] in various ways.
@@ -9,7 +9,7 @@ With Camel you can split your processing across multiple
independent
link:https://github.com/apache/camel/blob/master/docs/user-manual/en/endpoint.adoc[Endpoint]
instances which can then be chained
together.
-[[PipesandFilters-Samples]]
+[[pipesandFilters-Samples]]
=== Samples
You can create pipelines of logic using multiple
diff --git a/camel-core/src/main/docs/request-reply.adoc
b/camel-core/src/main/docs/eips/requestReply-eip.adoc
similarity index 97%
rename from camel-core/src/main/docs/request-reply.adoc
rename to camel-core/src/main/docs/eips/requestReply-eip.adoc
index 899179234aa..38103bb30a3 100644
--- a/camel-core/src/main/docs/request-reply.adoc
+++ b/camel-core/src/main/docs/eips/requestReply-eip.adoc
@@ -1,4 +1,4 @@
-[[RequestReply-RequestReply]]
+[[requestReply-eip]]
== Request Reply
Camel supports the
diff --git a/docs/user-manual/en/SUMMARY.md b/docs/user-manual/en/SUMMARY.md
index 2f29eb67ff6..2ba1c10987a 100644
--- a/docs/user-manual/en/SUMMARY.md
+++ b/docs/user-manual/en/SUMMARY.md
@@ -23,7 +23,7 @@
* [Examples](#examples)
* Cookbook
* [Architecture](#architecture)
-* [Enterprise Integration Patterns](#enterprise-integration-patterns)
+* [Enterprise Integration Patterns](enterprise-integration-patterns.adoc)
* [DSL](#dsl)
* [Components](#components)
* [Data Formats](#data-formats)
@@ -122,13 +122,7 @@
* [Type Converter](type-converter.adoc)
* URIs
* [UuidGenerator](uuidgenerator.adoc)
-* Xml Configuration
-
-### [Enterprise Integration Patterns](enterprise-integration-patterns.adoc)
-
-* [Event Message](event-message.adoc)
-* [Message](message.adoc)
-* [Request Reply](request-reply.adoc)
+* XML Configuration
### [DSL](dsl.adoc)
diff --git a/docs/user-manual/en/architecture.adoc
b/docs/user-manual/en/architecture.adoc
index 4e9c80c2ce4..b3917c48148 100644
--- a/docs/user-manual/en/architecture.adoc
+++ b/docs/user-manual/en/architecture.adoc
@@ -3,7 +3,7 @@ Architecture
~~~~~~~~~~~~
Camel uses a Java based link:dsl.adoc[Routing Domain Specific Language
-(DSL)] or an Xml Configuration to configure
+(DSL)] or an XML Configuration to configure
routing and mediation rules which are added to a
http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/CamelContext.html[CamelContext]
to implement the various
diff --git a/docs/user-manual/en/backlog-tracer.adoc
b/docs/user-manual/en/backlog-tracer.adoc
index 90ad728d996..1ea01116d5b 100644
--- a/docs/user-manual/en/backlog-tracer.adoc
+++ b/docs/user-manual/en/backlog-tracer.adoc
@@ -25,7 +25,7 @@ tracer is storing +
link:tracer.html[Tracer] is event based and logs the messages as they
happen (or route to another Camel destination). Also the
link:tracer.html[Tracer] has more fine grained events where it dives
-into link:eip.html[EIP]s such as the
+into link:enterprise-integration-patterns.adoc[EIP]s such as the
link:content-based-router.html[Content Based Router] and traces the
when/otherwise(s). Though the link:tracer.html[Tracer] has much more
complicated logic to handle this (there is some edge-cases where this
@@ -55,8 +55,8 @@ either the name "to1", or "to2". You can use * for wildcards.
So you can
do "to*" to match any to. Or use "route-foo*" to match any foo routes.
|traceFilter |`null` |Allow to configure a filter as a
link:predicate.html[Predicate] using
-any of the Camel link:languages.html[languages]. But default the
-link:simple.html[Simple] language is used. For example to filter on
+any of the Camel link:languages.adoc[languages]. But default the
+<<simple-language,Simple>> language is used. For example to filter on
messages with a given header, use `${header.foo} != null`. To use
link:groovy.html[Groovy] then prefix the value with "groovy:". And
similar for the other languages.
@@ -69,7 +69,7 @@ or negative value to use unlimited size.
|bodyIncludeStreams |`false` |Whether to include the message body of stream
based messages. If enabled
then beware the stream may not be re-readable later. See more about
-link:stream-caching.html[Stream Caching].
+link:stream-caching.adoc[Stream Caching].
|bodyIncludeFiles |`true` |Whether to include the message body of file based
messages. The overhead
is that the file content has to be read from the file.
diff --git a/docs/user-manual/en/bean-integration.adoc
b/docs/user-manual/en/bean-integration.adoc
index a83d32388b2..632c0f422d7 100644
--- a/docs/user-manual/en/bean-integration.adoc
+++ b/docs/user-manual/en/bean-integration.adoc
@@ -34,7 +34,7 @@ property placeholder.
|`@Produce` |To inject a producer to send message to an endpoint. See
POJO Producing.
-|`@Consume` |To inject a consumer on a method. See
link:pojo-consuming.html[POJO
+|`@Consume` |To inject a consumer on a method. See
link:pojo-consuming.adoc[POJO
Consuming].
|=======================================================================
diff --git a/docs/user-manual/en/data-format.adoc
b/docs/user-manual/en/data-format.adoc
index 8ee1f26f10e..3283d408535 100644
--- a/docs/user-manual/en/data-format.adoc
+++ b/docs/user-manual/en/data-format.adoc
@@ -3,7 +3,7 @@
Camel supports a pluggable DataFormat to allow messages to be marshalled
to and from binary or text formats to support a kind of
-<<MessageTranslator-MessageTranslator,Message Translator>>.
+<<messageTranslator-eip,Message Translator>>.
The following data formats are currently supported:
@@ -129,7 +129,7 @@ link:registry.adoc[Registry].
The following example unmarshals via serialization then marshals using a
named JAXB data format to perform a kind of
-<<MessageTranslator-MessageTranslator,Message Translator>>:
+<<messageTranslator-eip,Message Translator>>:
[source,java]
----
diff --git a/docs/user-manual/en/error-handling-in-camel.adoc
b/docs/user-manual/en/error-handling-in-camel.adoc
index 0c60a4c58b6..3f8b17526ea 100644
--- a/docs/user-manual/en/error-handling-in-camel.adoc
+++ b/docs/user-manual/en/error-handling-in-camel.adoc
@@ -232,4 +232,4 @@ for more.
* link:transactionerrorhandler.adoc[TransactionErrorHandler]
* link:defaulterrorhandler.adoc[DefaultErrorHandler]
* link:try-catch-finally.adoc[Try Catch Finally]
-* <<loadBalancer-eip,Failover Load Balancer>>
+* <<loadBalance-eip,Failover Load Balancer>>
diff --git a/docs/user-manual/en/exception-clause.adoc
b/docs/user-manual/en/exception-clause.adoc
index 3b34eef8341..ac8bf9fc83d 100644
--- a/docs/user-manual/en/exception-clause.adoc
+++ b/docs/user-manual/en/exception-clause.adoc
@@ -407,7 +407,7 @@ In the route above we handled the exception but routed it
to a different
endpoint. What if you need to alter the response and send a fixed
response back to the original caller (the client). No secret here just
do as you do in normal Camel routing, use
-<<MessageTranslator-MessageTranslator,transform>> to set the response, as
shown in
+<<messageTranslator-eip,transform>> to set the response, as shown in
the sample below:
/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionHandleAndTransformTest.java
diff --git a/docs/user-manual/en/expression.adoc
b/docs/user-manual/en/expression.adoc
index 172e75a1ff6..62bb9189fa7 100644
--- a/docs/user-manual/en/expression.adoc
+++ b/docs/user-manual/en/expression.adoc
@@ -5,7 +5,7 @@ Expressions
Expressions and Predicates can then be used to
create the various link:enterprise-integration-patterns.adoc[Enterprise
Integration Patterns] in the DSL or
-Xml Configuration like the
+XML Configuration like the
Recipient List. +
To support dynamic rules Camel supports pluggable
http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Expression.html[Expression]
@@ -98,7 +98,7 @@ The following languages are supported out of the box
* Tokenizer
* <<xpath-language,XPath>>
* <<xquery-component,XQuery>>
-* VTD-XML
+*
https://github.com/camel-extra/camel-extra/blob/master/components/camel-vtdxml/src/main/docs/vtdxml-component.adoc[VTD-XML]
Most of these languages is also supported used as
link:annotation-based-expression-language.html[Annotation Based
diff --git a/docs/user-manual/en/faq.adoc b/docs/user-manual/en/faq.adoc
index 87f56016fef..e73138a2549 100644
--- a/docs/user-manual/en/faq.adoc
+++ b/docs/user-manual/en/faq.adoc
@@ -96,15 +96,15 @@ Questions on using Apache Camel
*
link:faq/how-do-i-write-a-custom-processor-which-sends-multiple-messages.adoc[How
do I write a custom Processor which sends multiple messages?]
* link:faq/how-should-i-invoke-my-pojos-or-spring-services.adoc[How should I
invoke my POJOs or Spring Services?]
* link:faq/how-should-i-package-applications-using-camel-and-activemq.adoc[How
should I package applications using Camel and ActiveMQ?]
-*
link:faq/how-to-avoid-importing-bunch-of-cxf-packages-when-start-up-the-camel-cxf-endpoint-from-osgi-platform-.adoc[How
to avoid importing bunch of cxf packages when start up the camel-cxf endpoint
from OSGi platform ?]
+*
link:faq/how-to-avoid-importing-bunch-of-cxf-packages-when-start-up-the-camel-cxf-endpoint-from-osgi-platform-.adoc[How
to avoid importing bunch of cxf packages when start up the camel-cxf endpoint
from OSGi platform?]
* link:faq/how-to-avoid-sending-some-or-all-message-headers.adoc[How to avoid
sending some or all message headers?]
-* link:faq/how-to-define-a-static-camel-converter-method-in-scala.adoc[How to
define a static camel converter method in Scala?]
+* link:faq/how-to-define-a-static-camel-converter-method-in-scala.adoc[How to
define a static Camel converter method in Scala?]
*
link:faq/how-to-remove-the-http-protocol-headers-in-the-camel-message.adoc[How
to remove the http protocol headers in the camel message?]
* link:faq/how-to-send-the-same-message-to-multiple-endpoints.adoc[How to send
the same message to multiple endpoints?]
*
link:faq/how-to-switch-the-cxf-consumer-between-http-and-https-without-touching-the-spring-configuration.adoc[How
to switch the CXF consumer between HTTP and HTTPS without touching the Spring
configuration?]
* link:faq/how-to-use-a-dynamic-uri-in-to.adoc[How to use a dynamic URI in
to()?]
-* link:faq/how-to-use-extra-camel-componets-in-servicemix-camel.adoc[How to
use extra camel componets in servicemix-camel?]
-*
link:faq/how-to-validate-the-camel-1x-context-xml-from-apache-camel-web-site.adoc[How
to validate the camel-1.x context xml from Apache Camel web site?]
+* link:faq/how-to-use-extra-camel-componets-in-servicemix-camel.adoc[How to
use extra Camel componets in servicemix-camel?]
+*
link:faq/how-to-validate-the-camel-1x-context-xml-from-apache-camel-web-site.adoc[How
to validate the camel 1.x context xml from Apache Camel web site?]
* link:faq/is-there-an-ide.adoc[Is there an IDE?]
*
link:faq/should-i-deploy-camel-inside-the-activemq-broker-or-in-another-application.adoc[Should
I deploy Camel inside the ActiveMQ broker or in another application?]
* link:faq/using-camel-core-testsjar.adoc[Using camel-core-tests.jar]
diff --git
a/docs/user-manual/en/faq/how-do-i-import-routes-from-other-xml-files.adoc
b/docs/user-manual/en/faq/how-do-i-import-routes-from-other-xml-files.adoc
index 679c502b697..aa7a41346d5 100644
--- a/docs/user-manual/en/faq/how-do-i-import-routes-from-other-xml-files.adoc
+++ b/docs/user-manual/en/faq/how-do-i-import-routes-from-other-xml-files.adoc
@@ -3,7 +3,7 @@
*Available as of Camel 2.3*
-When defining routes in Camel using link:../xml-configuration.adoc[Xml
Configuration]
+When defining routes in Camel using link:../xml-configuration.adoc[XML
Configuration]
you may want to define some routes in other XML files.
For example you may have many routes and it may help to maintain the
application if some of the routes are in separate XML files. You may
diff --git a/docs/user-manual/en/faq/how-do-i-name-my-routes.adoc
b/docs/user-manual/en/faq/how-do-i-name-my-routes.adoc
new file mode 100644
index 00000000000..3930771f8b0
--- /dev/null
+++ b/docs/user-manual/en/faq/how-do-i-name-my-routes.adoc
@@ -0,0 +1,20 @@
+[[HowdoInamemyroutes-HowdoInamemyroutes]]
+=== How do I name my routes?
+
+You can assign names to your routes in Java DSL using `routeId`:
+
+[source,java]
+----
+from("direct:start").routeId("myRoute")
+ .to(mock:bar);
+----
+
+And in Spring XML using the `id` attribute:
+
+[source,xml]
+----
+<route id="myRoute">
+ <from uri="direct:start"/>
+ <to uri="mock:bar"/>
+</route>
+----
diff --git a/docs/user-manual/en/faq/how-do-i-restart-camelcontext.adoc
b/docs/user-manual/en/faq/how-do-i-restart-camelcontext.adoc
new file mode 100644
index 00000000000..50e85c9daab
--- /dev/null
+++ b/docs/user-manual/en/faq/how-do-i-restart-camelcontext.adoc
@@ -0,0 +1,9 @@
+[[HowdoIrestartCamelContext-HowdoIrestartCamelContext]]
+=== How do I restart CamelContext?
+
+A link:../camelcontext.adoc[CamelContext] provides operations to control
+its lifecycle, see more at link:../camelcontext.adoc[CamelContext].
+
+NOTE: Obviously you can also restart a Camel application if its been
+deployed in a server. For example a WAR application can be restarted
+using the usual means for managing web applications.
diff --git
a/docs/user-manual/en/faq/how-do-i-reuse-the-contexttestsupport-class-in-my-unit-tests.adoc
b/docs/user-manual/en/faq/how-do-i-reuse-the-contexttestsupport-class-in-my-unit-tests.adoc
new file mode 100644
index 00000000000..9bda0cad709
--- /dev/null
+++
b/docs/user-manual/en/faq/how-do-i-reuse-the-contexttestsupport-class-in-my-unit-tests.adoc
@@ -0,0 +1,44 @@
+[[HowdoIreusetheContextTestSupportclassinmyunittests-HowdoIreusetheContextTestSupportclassinmyunittests]]
+=== How do I reuse the ContextTestSupport class in my unit tests?
+
+You might want to look at the various link:../testing.adoc[Testing]
+options, in particular <<test-component,Camel Test>> and
+link:../spring-testing.adoc[Spring Testing] to see if those are better,
+more powerful options. We see `ContextTestSupport` as an older, less
+powerful option.
+
+There are a number of useful unit test cases and support classes you can
+reuse in your own unit test cases.
+
+If you use maven2 then here you go:
+
+`ContextTestSupport`:
+
+[source,java]
+----
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-core</artifactId>
+ <version>${camel-version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+----
+
+`SpringTestSupport`:
+
+[source,java]
+----
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-spring</artifactId>
+ <version>${camel-version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+----
+
+If you don't use maven:
+
+http://repo1.maven.org/maven2/org/apache/camel/camel-core/2.22.1/camel-core-2.22.1-tests.jar
+http://repo1.maven.org/maven2/org/apache/camel/camel-test-spring/2.22.1/camel-test-spring-2.22.1.jar
diff --git
a/docs/user-manual/en/faq/how-do-i-run-activemq-and-camel-in-jboss.adoc
b/docs/user-manual/en/faq/how-do-i-run-activemq-and-camel-in-jboss.adoc
new file mode 100644
index 00000000000..093245d3d4b
--- /dev/null
+++ b/docs/user-manual/en/faq/how-do-i-run-activemq-and-camel-in-jboss.adoc
@@ -0,0 +1,21 @@
+[[HowdoIrunActiveMQandCamelinJBoss-HowdoIrunActiveMQandCamelinJBoss]]
+=== How do I run ActiveMQ and Camel in JBoss?
+
+A user had a problem with running ActiveMQ embedded inside JBoss. He
+reported his findings on the Camel mailing list which you can read about
+http://www.nabble.com/JBoss-%2B-ActiveMQ-%2B-Camel-%2B-Newbie-td24056976.html[his
+solution here].
+
+[[HowdoIrunActiveMQandCamelinJBoss-UsingCamelinJBoss]]
+==== Using Camel in JBoss
+
+*Available as of Camel 2.1*
+
+We have now created a
https://github.com/camel-extra/camel-extra/blob/master/components/camel-jboss/src/main/docs/jboss-component.adoc[camel-jboss]
component which
+allows you to run Camel inside JBoss. Unfortunately JBoss uses LGPL
+license which is Apache unfriendly so the project is hosted at
+https://camel-extra.github.io/[Camel Extra].
+
+Basically what you need is to use a specialized classloader due to JBoss
+classloading challenges. This classloder is provided in the
+https://github.com/camel-extra/camel-extra/blob/master/components/camel-jboss/src/main/docs/jboss-component.adoc[camel-jboss]
component.
diff --git
a/docs/user-manual/en/faq/how-do-i-set-the-max-chars-when-debug-logging-messages-in-camel.adoc
b/docs/user-manual/en/faq/how-do-i-set-the-max-chars-when-debug-logging-messages-in-camel.adoc
new file mode 100644
index 00000000000..8d2d5f00234
--- /dev/null
+++
b/docs/user-manual/en/faq/how-do-i-set-the-max-chars-when-debug-logging-messages-in-camel.adoc
@@ -0,0 +1,54 @@
+[[HowdoIsetthemaxcharswhendebugloggingmessagesinCamel-HowdoIsetthemaxcharswhendebugloggingmessagesinCamel]]
+=== How do I set the max chars when debug logging messages in Camel?
+
+*Available as of Camel 2.0*
+
+When you run Camel with logging, it will log the messages and its
+content from time to time.
+As some messages can contain very big payloads Camel will by default
+clip the log message and only show the first 1000 chars.
+
+You will see this in the log as:
+
+----
+
+DEBUG ProducerCache - >>>> Endpoint[direct:start]
Exchange[Message: 01234567890123456789... [Body clipped after 20 chars, total
length is 1000]]
+----
+
+Here we have a big message that just contains many numbers. As its based
+on an unit test we have set a custom limit of 20 chars, and we have a
+payload with 1000 chars in total.
+
+You can customize the limit when Camel clips the body in the log.
+You can use a limit of 0 or negative to disable it so the entire body is
+shown.
+
+From *Camel 2.12* onwards, setting a negative value, such as -1, means
+the message body is not logged. For earlier Camel versions, you would
+need to set the value to 1, and have the first char logged.
+
+[[HowdoIsetthemaxcharswhendebugloggingmessagesinCamel-CustomizingfromJavaDSL]]
+==== Customizing from Java DSL
+
+You add to the Camel properties the limit. For example to limit at 500
+chars:
+
+[source,java]
+----
+ context.getProperties().put(Exchange.LOG_DEBUG_BODY_MAX_CHARS, "500");
+----
+
+[[HowdoIsetthemaxcharswhendebugloggingmessagesinCamel-CustomizingfromSpringDSL]]
+==== Customizing from Spring DSL
+
+You add to the Camel properties the limit. For example to limit at 500
+chars:
+
+[source,xml]
+----
+ <camelContext>
+ <properties>
+ <property key="CamelLogDebugBodyMaxChars" value="500"/>
+ </properties>
+ </camelContext>
+----
diff --git
a/docs/user-manual/en/faq/how-do-i-specify-time-period-in-a-human-friendly-syntax.adoc
b/docs/user-manual/en/faq/how-do-i-specify-time-period-in-a-human-friendly-syntax.adoc
new file mode 100644
index 00000000000..db639add320
--- /dev/null
+++
b/docs/user-manual/en/faq/how-do-i-specify-time-period-in-a-human-friendly-syntax.adoc
@@ -0,0 +1,55 @@
+[[HowdoIspecifytimeperiodinahumanfriendlysyntax-HowdoIspecifytimeperiodinahumanfriendlysyntax]]
+=== How do I specify time period in a human friendly syntax?
+
+*Available as of Camel 2.3*
+
+Some of the Camel link:../component.adoc[components] offers options to
+specify a time period, which must be entered in milli second as unit.
+This may be unfriendly to read as a human when the value is large such
+as 45min = 2700000 millis.
+
+So in Camel 2.3 you can now configure any endpoint uri parameter using a
+String syntax, which at runtime will get converted to millis (`long`
+type).
+
+You can use the following short syntax, which is most common to use:
+
+[width="100%",cols="50%,50%",options="header",]
+|============
+|Syntax |Unit
+|h |hour
+|m |minute
+|s |second
+|============
+
+So for example the <<timer-component,Timer>> endpoint can be configured as
+follows:
+
+[source,java]
+----
+from("timer:foo?period=45m").to("log:foo");
+----
+
+You can mix and match the units so you can do this as well:
+
+[source,java]
+----
+from("timer:foo?period=1h15m").to("log:foo");
+from("timer:bar?period=2h30s").to("log:bar");
+from("timer:bar?period=3h45m58s").to("log:bar");
+----
+
+However you can also use long syntax:
+
+[width="100%",cols="50%,50%",options="header",]
+|=========================
+|Syntax |Unit
+|hour or hours |hour
+|minute or minutes |minute
+|second or seconds |second
+|=========================
+
+[source,java]
+----
+from("timer:foo?period=45minutes").to("log:foo");
+----
diff --git a/docs/user-manual/en/faq/how-do-i-use-a-big-uber-jar.adoc
b/docs/user-manual/en/faq/how-do-i-use-a-big-uber-jar.adoc
new file mode 100644
index 00000000000..e59f1a8aeed
--- /dev/null
+++ b/docs/user-manual/en/faq/how-do-i-use-a-big-uber-jar.adoc
@@ -0,0 +1,11 @@
+[[HowdoIuseabiguberJAR-HowdoIuseabiguberJAR]]
+=== How do I use a big (uber) JAR?
+
+If you want to repackage all the Camel JARs into a single uber JAR then
+you can use the Maven shade plugin. But you have to ensure all the
+service files get appended correctly. If you do this you are taking
+responsible yourself for this.
+
+See some example in this
+https://issues.apache.org/jira/browse/CAMEL-3773[CAMEL-3773] JIRA
+ticket.
diff --git a/docs/user-manual/en/faq/how-do-i-use-camel-inside-servicemix.adoc
b/docs/user-manual/en/faq/how-do-i-use-camel-inside-servicemix.adoc
new file mode 100644
index 00000000000..aae5317ddb3
--- /dev/null
+++ b/docs/user-manual/en/faq/how-do-i-use-camel-inside-servicemix.adoc
@@ -0,0 +1,7 @@
+[[HowdoIuseCamelinsideServiceMix-HowdoIuseCamelinsideServiceMix]]
+=== How do I use Camel inside ServiceMix?
+
+See the
+http://servicemix.apache.org/3-beginner-using-apache-camel-inside-servicemix.html[Using
Camel with ServiceMix tutorial]
+for an indepth walk through of using Camel to route inside the JBI based
+Normalized Message Bus.
diff --git
a/docs/user-manual/en/faq/how-do-i-use-uris-with-parameters-in-xml.adoc
b/docs/user-manual/en/faq/how-do-i-use-uris-with-parameters-in-xml.adoc
new file mode 100644
index 00000000000..f3231c99099
--- /dev/null
+++ b/docs/user-manual/en/faq/how-do-i-use-uris-with-parameters-in-xml.adoc
@@ -0,0 +1,52 @@
+[[HowdoIuseURIswithparametersinXML-HowdoIuseURIswithparametersinXML]]
+=== How do I use URIs with parameters in XML?
+
+If you try and use one of the Camel link:../uris.adoc[URIs] in an
+link:../xml-configuration.adoc[XML Configuration] using the URI query
+parameter notation, such as:
+
+[source,xml]
+----
+<route>
+ <from uri="direct:start?paramA=1¶mB=2"/>
+ <to uri="mock:result"/>
+</route>
+----
+
+you might get errors such as...
+
+----
+Caused by: org.xml.sax.SAXParseException: The reference to entity "paramB"
must end with the ';' delimiter.
+ at
com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:236)
+ at
+----
+
+This is because in XML you need to escape some special XML characters
+like these:
+
+[width="100%",cols="50%,50%",options="header",]
+|==================================================
+|Special Character |How to escape it in XML
+a|`&`
+
+a|`+&+`
+
+a|`<`
+
+a|`+<+`
+
+a|`>`
+
+a|`+>+`
+
+|==================================================
+
+So if you write the following XML it should work...
+
+[source,xml]
+----
+<route>
+ <from uri="direct:start?paramA=1&paramB=2"/>
+ <to uri="mock:result"/>
+</route>
+----
diff --git
a/docs/user-manual/en/faq/how-do-i-write-a-custom-processor-which-sends-multiple-messages.adoc
b/docs/user-manual/en/faq/how-do-i-write-a-custom-processor-which-sends-multiple-messages.adoc
new file mode 100644
index 00000000000..ea97e74ebe3
--- /dev/null
+++
b/docs/user-manual/en/faq/how-do-i-write-a-custom-processor-which-sends-multiple-messages.adoc
@@ -0,0 +1,51 @@
+[[HowdoIwriteacustomProcessorwhichsendsmultiplemessages-HowdoIwriteacustomProcessorwhichsendsmultiplemessages]]
+=== How do I write a custom Processor which sends multiple messages?
+
+You could use a <<split-eip,Splitter>> or use multiple
+<<messageTranslator-eip,Message Translator>> instances in your
+route.
+
+Or you could write a custom processor which is injected with a
+`ProducerTemplate` instance that just generates N messages...
+
+[source,java]
+----
+public class MyProducer implements Processor {
+ ProducerTemplate producer;
+
+ public void setProducer(ProducerTemplate producer) {
+ this.producer = producer;
+ }
+
+ public void process(Exchange inExchange) {
+ // some loop for each message
+ for (String template in templates) {
+ // lets send a new exchange to the producers default destination
+ // being called back so we can customize the message
+ producer.send(new Processor() {
+ public void process(Exchange outExchange) {
+ outExchange.getIn().setBody("This is the body");
+ // set some headers too?
+ }
+ });
+ }
+}
+----
+
+Then the `ProducerTemplate` can be injected -- configured in `spring.xml`
+with its default URI:
+
+[source,xml]
+----
+<camelContext xmlns="http://camel.apache.org/schema/spring">
+ <template id="myTemplate" defaultEndpoint="activemq:someQueue"/>
+</camelContext>
+
+<bean id="foo" class="MyProducer">
+ <property name="producer" ref="myTemplate"/>
+</bean>
+----
+
+Note that the default output URI is inherited from the `<template/>`
+configuration. If you prefer you could specify that in the
+`producer.send()` method call.
diff --git a/docs/user-manual/en/faq/how-does-camel-work-with-activemq.adoc
b/docs/user-manual/en/faq/how-does-camel-work-with-activemq.adoc
index 715aa0adcba..667ae98b50a 100644
--- a/docs/user-manual/en/faq/how-does-camel-work-with-activemq.adoc
+++ b/docs/user-manual/en/faq/how-does-camel-work-with-activemq.adoc
@@ -14,7 +14,7 @@ So Camel can route messages to and from
<<mail-component,Mail>>,
other Camel link:../component.adoc[Components] as well as implementating
all of the link:../enterprise-integration-patterns.adoc[Enterprise
Integration Patterns] such as link:content-based-router.html[Content
-Based Router] or <<MessageTranslator-MessageTranslator,Message Translator>>.
+Based Router] or <<messageTranslator-eip,Message Translator>>.
For more details see
http://activemq.apache.org/enterprise-integration-patterns.html[ActiveMQ
diff --git
a/docs/user-manual/en/faq/how-should-i-invoke-my-pojos-or-spring-services.adoc
b/docs/user-manual/en/faq/how-should-i-invoke-my-pojos-or-spring-services.adoc
new file mode 100644
index 00000000000..e81f5cc7ca4
--- /dev/null
+++
b/docs/user-manual/en/faq/how-should-i-invoke-my-pojos-or-spring-services.adoc
@@ -0,0 +1,22 @@
+[[HowshouldIinvokemyPOJOsorSpringServices-HowshouldIinvokemyPOJOsorSpringServices]]
+=== How should I invoke my POJOs or Spring Services?
+
+The various options are described in detail in
+link:../bean-integration.adoc[Bean Integration], in particular the
+link:bean-binding.adoc[Bean Binding] describes how we invoke a bean
+inside a route.
+
+See the link:pojo-consuming.adoc[POJO Consuming] for examples using
+either the `@Consume` annotation or using the routing DSL:
+
+[source,java]
+----
+from("jms:someQueue").bean(MyBean.class, "someMethod");
+----
+
+[[HowshouldIinvokemyPOJOsorSpringServices-SeeAlso]]
+==== See Also
+
+* link:../bean-integration.adoc[Bean Integration]
+* link:bean-binding.adoc[Bean Binding]
+* link:pojo-consuming.adoc[POJO Consuming]
diff --git
a/docs/user-manual/en/faq/how-should-i-package-applications-using-camel-and-activemq.adoc
b/docs/user-manual/en/faq/how-should-i-package-applications-using-camel-and-activemq.adoc
new file mode 100644
index 00000000000..495635bec9e
--- /dev/null
+++
b/docs/user-manual/en/faq/how-should-i-package-applications-using-camel-and-activemq.adoc
@@ -0,0 +1,22 @@
+[[HowshouldIpackageapplicationsusingCamelandActiveMQ-HowshouldIpackageapplicationsusingCamelandActiveMQ]]
+=== How should I package applications using Camel and ActiveMQ?
+
+So you may wish to use Camel's
+link:../enterprise-integration-patterns.adoc[Enterprise Integration Patterns]
+inside the ActiveMQ Broker. In which case the
+stand alone broker is already packaged to work with Camel out of the
+box; just add your EIP routing rules to ActiveMQ's
+link:../xml-configuration.adoc[XML Configuration] like the example
+routing rule which ships with ActiveMQ
+5.x or later. If you want to include some Java routing rules, then just
+add your jar to somewhere inside ActiveMQ's lib directory.
+
+If you wish to use ActiveMQ and/or Camel in a standalone application, we
+recommend you just create a normal Spring application; then add the
+necessary jars and customise the Spring XML and you're good to go.
+
+[[HowshouldIpackageapplicationsusingCamelandActiveMQ-WhatjarsdoIneed]]
+==== What jars do I need?
+
+*
https://cwiki.apache.org/confluence/display/ACTIVEMQ/Initial+Configuration[What
jars are required for ActiveMQ]
+* link:what-jars-do-i-need.adoc[What jars are required for Camel]
diff --git
a/docs/user-manual/en/faq/how-to-avoid-importing-bunch-of-cxf-packages-when-start-up-the-camel-cxf-endpoint-from-osgi-platform-.adoc
b/docs/user-manual/en/faq/how-to-avoid-importing-bunch-of-cxf-packages-when-start-up-the-camel-cxf-endpoint-from-osgi-platform-.adoc
new file mode 100644
index 00000000000..137722fb24d
--- /dev/null
+++
b/docs/user-manual/en/faq/how-to-avoid-importing-bunch-of-cxf-packages-when-start-up-the-camel-cxf-endpoint-from-osgi-platform-.adoc
@@ -0,0 +1,67 @@
+[[HowtoavoidimportingbunchofcxfpackageswhenstartupthecamelcxfendpointfromOSGiplatform-HowtoavoidimportingbunchofcxfpackageswhenstartupthecamelcxfendpointfromOSGiplatform]]
+=== How to avoid importing bunch of cxf packages when start up the camel-cxf
endpoint from OSGi platform?
+
+If you are using camel-cxf endpoint in your OSGi bundle and want to get
+full of control of CXF component loading. (eg. you just want to use the
+http jetty transport, soap binding and don't want to load jms transport,
+jaxrs modules). You may need to tell SpringBusFactory which module
+should be load, in this way you need to import bunch of cxf packages or
+using the `*` on the `DynamicImport-Package` section of your application's
+OSGi meta information.
+
+As the CXF bundle have the most cxf configuration file, here is a way to
+do it by setting the right thread context class loader to load the cxf
+module configures, without any additional setting.
+This is the code snippet to show to create a CXF bus with soap binding
+and http-jetty transport.
+
+NOTE: If you have other CXF configuration which want to be load, you
+need to make sure the thread context class loader can load it.
+
+[source,java]
+----
+ClassLoader oldCL = Thread.currentThread().getContextClassLoader();
+try {
+ Thread.currentThread().setContextClassLoader(
+ BusFactory.class.getClassLoader());
+ SpringBusFactory springBusFactory = new SpringBusFactory();
+ Bus bus = springBusFactory.createBus(new String[]
+ { "META-INF/cxf/cxf.xml", "META-INF/cxf/cxf-extension-soap.xml",
+ "META-INF/cxf/cxf-extension-http-jetty.xml" }, false);
+ // The last parameter is telling CXF not to load the cxf-extension-*.xml
from META-INF/cxf
+ // You can set the bus the normal CXF endpoint or other camel-cxf endpoint
+} finally {
+ Thread.currentThread().setContextClassLoader(oldCL);
+}
+----
+
+From *Camel 2.2.0*, we introduced a `SpringBusFactoryBean` which leverage
+the `BusApplicationContext` will use the `BusApplicationContext.class`
+classloader as a fall back classloader, so you can configure the
+SpringBusFactoryBean and set the bus directly into the camel-cxf
+endpoint without using any java code. The Spring configuration snippet
+is below:
+
+NOTE: If you are using URI to specify the camel-cxf endpoint , you can set the
+URI with bus option like this: `cxf://ADDRESS?bus=myBus&...`
+
+[source,xml]
+----
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:cxf="http://camel.apache.org/schema/cxf"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+ http://camel.apache.org/schema/cxf
http://camel.apache.org/schema/cxf/camel-cxf.xsd
+ ">
+
+ <bean id="myBus"
class="org.apache.camel.component.cxf.spring.SpringBusFactoryBean">
+ <property name="cfgFiles"
value="META-INF/cxf/cxf.xml;META-INF/cxf/cxf-extension-soap.xml;META-INF/cxf/cxf-extension-http-jetty.xml"
/>
+ <property name="includeDefaultBus" value="false" />
+ </bean>
+
+ <cxf:cxfEndpoint id="routerEndpoint" address="http://localhost:9000/router"
+ serviceClass="org.apache.camel.component.cxf.HelloService" bus="myBus"/>
+
+</beans>
+----
diff --git
a/docs/user-manual/en/faq/how-to-avoid-sending-some-or-all-message-headers.adoc
b/docs/user-manual/en/faq/how-to-avoid-sending-some-or-all-message-headers.adoc
new file mode 100644
index 00000000000..be9f6b41994
--- /dev/null
+++
b/docs/user-manual/en/faq/how-to-avoid-sending-some-or-all-message-headers.adoc
@@ -0,0 +1,75 @@
+[[Howtoavoidsendingsomeorallmessageheaders-Howtoavoidsendingsomeorallmessageheaders]]
+=== How to avoid sending some or all message headers?
+
+When I send a message to a Camel endpoint such as the
+<<mail-component,Mail>> component, then the mail include some message
+headers I do not want. How can I avoid this?
+
+[[Howtoavoidsendingsomeorallmessageheaders-UseremoveHeadersintheroute]]
+==== Use removeHeaders in the route
+
+This is a gotcha more people encounter. However it's very easy to solve.
+To remove all headers use a wildcard expression:
+
+[source,java]
+----
+from(...).removeHeaders("*").to("smtp://....")
+----
+
+Similarly to remove all headers except some of your own (`myheader1` and
+`myheader2`) use a wildcard with a vararg:
+
+[source,java]
+----
+from(...).removeHeaders("*", "myheader1", "myheader2").to("smtp://....")
+----
+
+To do (a similar thing) in XML DSL you simply do:
+
+[source,xml]
+----
+<route>
+ <from uri="..."/>
+ <removeHeaders pattern="*" excludePattern="header1|header2"/>
+ <to uri="smtp://..."/>
+</route>
+----
+
+At present, the `excludePattern` only supports one header name (which
+can be include wild cards or regular expressions). We tackle this
+limitation with
+https://issues.apache.org/jira/browse/CAMEL-6445[CAMEL-6445].
+
+Again to remove only Camel headers but no other transport headers:
+
+[source,java]
+----
+from(...).removeHeaders("Camel*").to("smtp://....")
+----
+
+To do this in XML DSL you simply do:
+
+[source,xml]
+----
+<route>
+ <from uri="..."/>
+ <removeHeaders pattern="Camel*"/>
+ <to uri="smtp://..."/>
+</route>
+----
+
+There is also a removeHeader in the DSL to remove a single header. But
+it does not support patterns, so you can only remove a single header by
+its name.
+
+[[Howtoavoidsendingsomeorallmessageheaders-UseHeaderFilterStrategy]]
+==== Use HeaderFilterStrategy
+
+An alternative is that some of the Camel
+link:../component.adoc[Components] supports configuring a custom header
+filter strategy.
+This allows you to implement the
+`org.apache.camel.spi.HeaderFilterStrategy` interface, where you can
+filter unwanted headers.
+Though it's often easier to use the `removeHeaders` in the Camel route as
+shown above.
diff --git
a/docs/user-manual/en/faq/how-to-define-a-static-camel-converter-method-in-scala.adoc
b/docs/user-manual/en/faq/how-to-define-a-static-camel-converter-method-in-scala.adoc
new file mode 100644
index 00000000000..f4b9478756a
--- /dev/null
+++
b/docs/user-manual/en/faq/how-to-define-a-static-camel-converter-method-in-scala.adoc
@@ -0,0 +1,19 @@
+[[HowtodefineastaticCamelconvertermethodinScala-HowtodefineastaticCamelconvertermethodinScala]]
+=== How to define a static Camel converter method in Scala?
+
+When you use Scala object you can define the static method for others to
+use. Scala will create a class which implements the singleton pattern
+for that class object.
+
+If the object name is `A`, you can find the singleton class name with `A$`.
+Using `javap` to recompile the class `A` and `A$`, you will find `A` has bunch
+of static method, and `A$` doesn't have any of them. If you specify the
+converter class package name in
+`META-INF/service/org/apache/camel/TypeConverter`, Camel will load the
+class `A` and `A$` at the same time. As the `A$` construction method is not
+supposed to be invoked, Camel will complain that he cannot load the
+converter method which you are supposed to use because he can't create
+an instance of `A$`.
+
+To avoid this kind of error, we need to specify the full class name of `A`
+in the `TypeConverter` to let Camel load the converter directly.
diff --git
a/docs/user-manual/en/faq/how-to-remove-the-http-protocol-headers-in-the-camel-message.adoc
b/docs/user-manual/en/faq/how-to-remove-the-http-protocol-headers-in-the-camel-message.adoc
new file mode 100644
index 00000000000..10299cd0193
--- /dev/null
+++
b/docs/user-manual/en/faq/how-to-remove-the-http-protocol-headers-in-the-camel-message.adoc
@@ -0,0 +1,44 @@
+[[Howtoremovethehttpprotocolheadersinthecamelmessage-Howtoremovethehttpprotocolheadersinthecamelmessage]]
+=== How to remove the http protocol headers in the camel message?
+
+In camel there are a number of components that use the http protocol
+headers to do their business.
+The components include camel-http, camel-jetty, camel-restlet,
+camel-cxf, etc.
+If you are using these component, you may pay attention to the HTTP
+protocol headers:
+
+[source,java]
+----
+ Exchange.CONTENT_ENCODING
+ Exchange.CONTENT_TYPE
+ Exchange.HTTP_BASE_URI
+ Exchange.HTTP_CHARACTER_ENCODING
+ Exchange.HTTP_METHOD
+ Exchange.HTTP_PATH
+ Exchange.HTTP_QUERY
+ Exchange.HTTP_RESPONSE_CODE
+----
+
+If you don't want these headers to bother your other endpoints, you can
+remove these headers as follows:
+
+[source,java]
+----
+ from("jetty://http://myhost:9000/myservice/")
+ // Remove the header which name is start with CamelHttp, this DSL is new
to Camel 2.3.0
+ // You can use removeHeader if your camel version is lower than 2.3.0
+ .removeHeaders("CamelHttp*")
+ .to("otherEndpoint");
+----
+
+[source,xml]
+----
+ <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
+ <route>
+ <from uri="jetty://http://myhost:9000/myservice/"/>
+ <removeHeaders pattern="CamelHttp*" />
+ <to uri="otherEndpoint"/>
+ </route>
+ </camelContext>
+----
diff --git
a/docs/user-manual/en/faq/how-to-send-the-same-message-to-multiple-endpoints.adoc
b/docs/user-manual/en/faq/how-to-send-the-same-message-to-multiple-endpoints.adoc
new file mode 100644
index 00000000000..2426e2eb45d
--- /dev/null
+++
b/docs/user-manual/en/faq/how-to-send-the-same-message-to-multiple-endpoints.adoc
@@ -0,0 +1,34 @@
+[[Howtosendthesamemessagetomultipleendpoints-Howtosendthesamemessagetomultipleendpoints]]
+=== How to send the same message to multiple endpoints?
+
+When you need to send the *same* message to multiple endpoints then you
+should use <<multicast-eip,Multicast>>.
+
+In the sample below we consume messages from the activemq queue `foo`
+and want to send the *same message* to both `seda:foo` and `seda:bar`.
+Sending the same message requires that we use
+<<multicast-eip,Multicast>>. This is done by adding the `multicast()`
+before the to type:
+
+[source,java]
+----
+from("activemq:queue:foo").multicast().to("seda:foo", "seda:bar");
+----
+
+[NOTE]
+====
+**Pipeline is default in Camel**
+
+If you have a route such as:
+
+[source,java]
+----
+from("activemq:queue:foo").to("seda:foo", "seda:bar");
+----
+
+It is by default a <<pipesandFilters-eip,pipeline>> in Camel (that is
+the opposite to <<multicast-eip,Multicast>>). In the above example
+using pipes and filters then the result from seda:foo is sent to
+seda:bar, ie. its not the *same* message sent to multiple destinations,
+but a sent through a chain (the pipes and the filters).
+====
diff --git
a/docs/user-manual/en/faq/how-to-switch-the-cxf-consumer-between-http-and-https-without-touching-the-spring-configuration.adoc
b/docs/user-manual/en/faq/how-to-switch-the-cxf-consumer-between-http-and-https-without-touching-the-spring-configuration.adoc
new file mode 100644
index 00000000000..2e3d885070f
--- /dev/null
+++
b/docs/user-manual/en/faq/how-to-switch-the-cxf-consumer-between-http-and-https-without-touching-the-spring-configuration.adoc
@@ -0,0 +1,88 @@
+[[HowtoswitchtheCXFconsumerbetweenHTTPandHTTPSwithouttouchingtheSpringconfiguration-HowtoswitchtheCXFconsumerbetweenHTTPandHTTPSwithouttouchingtheSpringconfiguration]]
+=== How to switch the CXF consumer between HTTP and HTTPS without touching the
Spring configuration?
+
+You can find general information how to secure your Camel CXF Consumer
+with HTTPS
+http://cxf.apache.org/docs/client-http-transport-including-ssl-support.html[here].
+
+A simple Camel CXF Consumer configuration which use the `http:conduit`
+configuration to enable SSL and an external properties file for all
+environment specific configurations could looks like:
+
+*bundle-context.xml*
+
+[source,xml]
+----
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ctx="http://www.springframework.org/schema/context"
+ xmlns:camel="http://camel.apache.org/schema/spring"
+ xmlns:camel-cxf="http://camel.apache.org/schema/cxf"
+ xmlns:http="http://cxf.apache.org/transports/http/configuration"
+ xmlns:sec="http://cxf.apache.org/configuration/security"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
+ http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd
+ http://camel.apache.org/schema/osgi
http://camel.apache.org/schema/osgi/camel-osgi.xsd
+ http://camel.apache.org/schema/cxf
http://camel.apache.org/schema/cxf/camel-cxf.xsd
+ http://cxf.apache.org/transports/http/configuration
http://cxf.apache.org/schemas/configuration/http-conf.xsd
+ http://cxf.apache.org/configuration/security
http://cxf.apache.org/schemas/configuration/security.xsd
+ ">
+
+ <import resource="classpath:META-INF/cxf/cxf.xml" />
+ <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
+ <import resource="classpath:META-INF/cxf/cxf-extension-http-jetty.xml" />
+
+ <ctx:property-placeholder location="classpath:orderEntry.cfg" />
+
+ <camel-cxf:cxfEndpoint id="orderEntryEndpoint"
+ address="${endpointUri}"
+ serviceClass="com.company.product.OrderEntryService"
+ endpointName="ssp:OrderEntry"
+ serviceName="ssp:OrderEntryService"
+ wsdlURL="META-INF/orderEntry/orderEntry.wsdl"
+ xmlns:ssp="http://www.company.com/product/orderEntry/service/1" />
+
+ <http:conduit
name="{http://www.company.com/product/orderEntry/service/1}OrderEntry.http-conduit">
+ <http:tlsClientParameters disableCNCheck="true">
+ <sec:trustManagers>
+ <sec:keyStore type="JKS" password="${trustStore.password}"
file="${trustStore.file}"/>
+ </sec:trustManagers>
+ <sec:cipherSuitesFilter>
+ <sec:include>.*_EXPORT_.*</sec:include>
+ <sec:include>.*_EXPORT1024_.*</sec:include>
+ <sec:include>.*_WITH_DES_.*</sec:include>
+ <sec:include>.*_WITH_NULL_.*</sec:include>
+ <sec:exclude>.*_DH_anon_.*</sec:exclude>
+ </sec:cipherSuitesFilter>
+ </http:tlsClientParameters>
+ </http:conduit>
+
+ <camel:camelContext trace="true">
+ <camel:routeBuilder ref="orderEntryRoute" />
+ </camel:camelContext>
+
+ <bean id="orderEntryRoute" class="com.company.product.OrderEntryRoute" />
+</beans>
+----
+
+The environment specific configurations are externalized into a
+properties file:
+
+*orderEntry.cfg*
+
+[source,java]
+----
+endpointUri=https://localhost:8181/OrderEntry
+trustStore.password=password
+trustStore.file=etc/myApp.ts
+----
+
+With this configuration, you Camel CXF consumer connects with HTTPS to
+the web service provider.
+If you need to change the protocol to HTTP, maybe for tracing/debugging
+reasons, change the `endpointUri` property in your properties file to
+e.g. `http://localhost:8080/OrderEntry`. That's all! Isn't it easy?
+Apache CXF detects that you "only" use HTTP and instantiates a
+`HttpURLConnectionFactoryImpl` instead of a `HttpsURLConnectionFactory`.
diff --git a/docs/user-manual/en/faq/how-to-use-a-dynamic-uri-in-to.adoc
b/docs/user-manual/en/faq/how-to-use-a-dynamic-uri-in-to.adoc
new file mode 100644
index 00000000000..045036030f4
--- /dev/null
+++ b/docs/user-manual/en/faq/how-to-use-a-dynamic-uri-in-to.adoc
@@ -0,0 +1,80 @@
+[[HowtouseadynamicURIinto-HowtouseadynamicURIinto]]
+=== How to use a dynamic URI in `to()`
+
+A dynamic URI is an endpoint URI that varies depending on inflight
+routing information, such as Exchange properties, message headers, the
+body, the Camel Context, etc.
+
+[NOTE]
+====
+*Dynamic To - out of the box*
+
+From *Camel 2.16* onwards there is a new `<toD>` which is a dynamic to.
+See more details at <<messageEndpoint-eip,Message Endpoint>>.
+====
+
+For example, if you're using a Freemarker producer and the template
+location is provided inside the current message, you might expect the
+following code to work, *but it will not*.
+
+[WARNING]
+====
+*This is not valid code*
+
+This snippet is not valid code. Read on.
+====
+
+[source,java]
+----
+.to("freemarker://templateHome/${body.templateName}.ftl")
+----
+
+In this case, you must use an EIP (Enterprise Integration Pattern) that
+is capable of computing a dynamic URI using
+an link:../expression.adoc[Expression], such as
+the <<recipientList-eip,Recipient List>> EIP pattern.
+
+For example, rewriting the snippet above to use the
+<<simple-language,Simple>> expression language:
+
+[TIP]
+====
+*This is valid code*
+
+This snippet is valid code.
+====
+
+[source,java]
+----
+.recipientList(simple("freemarker://templateHome/${body.templateName}.ftl"))
+----
+
+Or you could use any other of Camel link:../languages.adoc[Languages].
+
+[NOTE]
+====
+Notice that the <<recipientList-eip,Recipient List>> can send to
+multiple
+link:../endpoint.adoc[Endpoints]
+if the expression returns either a `java.util.List`, array,
+`java.util.Iteratable` or a `String`. If the returned value is a
+`String` then you can specify multiple endpoints separated by comma. So
+if you only want to send to *one* endpoint and use a `String` type, then
+beware of the comma. If you need to use a comma, then you can change or
+turn off the separator on the <<recipientList-eip,Recipient List>>.
+
+For example, to turn it, when using *Camel 2.13* onwards:
+
+[source,java]
+----
+.recipientList(simple("sql:select firstName, lastName from myTable where user
= ${header.user}"), "false")
+----
+
+And for users of *Camel 2.12.x* or older, we use a non existing
+delimiter char:
+
+[source,java]
+----
+.recipientList(simple("sql:select firstName, lastName from myTable where user
= ${header.user}"), "@")
+----
+====
diff --git
a/docs/user-manual/en/faq/how-to-use-extra-camel-componets-in-servicemix-camel.adoc
b/docs/user-manual/en/faq/how-to-use-extra-camel-componets-in-servicemix-camel.adoc
new file mode 100644
index 00000000000..f397263d0fa
--- /dev/null
+++
b/docs/user-manual/en/faq/how-to-use-extra-camel-componets-in-servicemix-camel.adoc
@@ -0,0 +1,73 @@
+[[HowtouseextraCamelcomponetsinservicemixcamel-HowtouseextraCamelcomponetsinservicemixcamel]]
+=== How to use extra Camel componets in servicemix-camel?
+
+Since ServiceMix 3's component has same hierarchies of the class loaders
+with the J2EE application server, and the components the class loader is
+separated with the SU's. And Camel has lots of components, we just
+include the camel-core and camel-spring components in the
+servicemix-camel by default. When the user want to use other camel
+component, they always add the camel-xxx component into their SU lib.
+In this way if there is a class which is loaded from the different SU
+classloader and registed into the camel-core's registry by
+servicemix-camel component , we will faced on the typical class cast
+exception in Servicemix3. Basically this exception is caused by the same
+class is loaded by different class loader.
+
+You may meet an issue of the class cast exception when deploying the
+same servicemix-camel component SU twice.
+
+In this case, when the SU is redeployed, it will create a new deployer
+which will create an application context with the class loader of
+servicemix-camel component, and then using the SU's class loader to
+create a camel context.
+Since the SU is redeployed, Servicemix will create a new class loader to
+load the SU's lib jars and resources.
+When the SU initial the rmi component, boom , we meet the situation of
+same component loaded with different class loader, The class cast
+exception is thrown out.
+
+Note, in Servicemix4's camel component, we will not get that kind of
+issue, since the OSGi will help us to manage the relationship of the
+jars.
+
+The solution is putting the camel-xxx components and third part jars
+into servicemix-camel component's lib. You need to check out the
+servicemix-camel component's pom.xml and recompile the servicemix-camel
+component by adding the camel-xxx component dependency.
+
+Let me take the latest servicemix-camel as an example:
+
+1. Checking out the servicemix-camel component's pom:
++
+----
+svn co
http://svn.apache.org/repos/asf/servicemix/components/engines/servicemix-camel/trunk/pom.xml
+----
+
+2. If you need camel-rmi component, you just put the dependency into
+the `pom.xml`:
++
+[source,xml]
+----
+<dependency>
+ <groupid>org.apache.camel</groupid>
+ <artifactid>camel-rmi</artifactid>
+ <version>${camel-version}</version>
+</dependency>
+----
+
+3. Running `mvn install` and copy the `servicemix-camel-*.zip` into the
+deploy directory.
+
+4. Write your servicemix-camel SU, make sure you don't include any
+camel relates jars into the SU's lib, you can use the
+`<scope>provided</scope>` to not packing the artifact.
++
+[source,xml]
+----
+<dependency>
+ <groupid>org.apache.camel</groupid>
+ <artifactid>camel-rmi</artifactid>
+ <version>${camel-version}</version>
+ <scope>provided</scope>
+</dependency>
+----
diff --git
a/docs/user-manual/en/faq/how-to-validate-the-camel-1x-context-xml-from-apache-camel-web-site.adoc
b/docs/user-manual/en/faq/how-to-validate-the-camel-1x-context-xml-from-apache-camel-web-site.adoc
new file mode 100644
index 00000000000..f7b2b42b9bd
--- /dev/null
+++
b/docs/user-manual/en/faq/how-to-validate-the-camel-1x-context-xml-from-apache-camel-web-site.adoc
@@ -0,0 +1,42 @@
+[[Howtovalidatethecamel1xcontextxmlfromApacheCamelwebsite-Howtovalidatethecamel1xcontextxmlfromApacheCamelwebsite]]
+=== How to validate the camel 1.x context xml from Apache Camel web site?
+
+Since Camel became to be Apache Top Level Project for a while, and all
+the request to the camel old web site
+(http://activemq.apache.org/camel/) will be redirect to the new site
+(http://camel.apache.org). We updated the camel schemas' target
+namespace to refect the URL change in Camel 2.0. But we don't change the
+schemas namespace of Camel 1.x to keep the compatibility.
+
+We recently released Camel 2.0-ml, and the site schema maintenance
+script always copys the latest released Camel version's schema to the
+default schema without version number. You may meet the schema
+validation problem if your application spring configuration is still
+using the old Camel 1.x schema namespace and using the web site schema
+for validations.
+
+To walk around this issue, you just need to specify the schema version
+in your Spring configuration's schemaLocation attribute.
+
+[source,xml]
+----
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:camel="http://activemq.apache.org/camel/schema/spring"
+ xmlns:osgi="http://www.springframework.org/schema/osgi"
+ xmlns:cxf="http://activemq.apache.org/camel/schema/cxfEndpoint"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+ http://www.springframework.org/schema/osgi
+ http://www.springframework.org/schema/osgi/spring-osgi.xsd
+ http://activemq.apache.org/camel/schema/osgi
+ http://activemq.apache.org/camel/schema/osgi/camel-osgi-1.6.0.xsd
+ http://activemq.apache.org/camel/schema/spring
+ http://activemq.apache.org/camel/schema/spring/camel-spring-1.6.0.xsd
+ http://activemq.apache.org/camel/schema/cxfEndpoint
+
http://activemq.apache.org/camel/schema/cxf/camel-cxf-1.6.0.xsd">
+
+...
+</beans>
+----
diff --git
a/docs/user-manual/en/faq/using-getin-or-getout-methods-on-exchange.data/Message-flow-in-Route.png
b/docs/user-manual/en/faq/images/using-getin-or-getout-methods-on-exchange.data/Message-flow-in-Route.png
similarity index 100%
rename from
docs/user-manual/en/faq/using-getin-or-getout-methods-on-exchange.data/Message-flow-in-Route.png
rename to
docs/user-manual/en/faq/images/using-getin-or-getout-methods-on-exchange.data/Message-flow-in-Route.png
diff --git
a/docs/user-manual/en/faq/using-getin-or-getout-methods-on-exchange.data/flow.png
b/docs/user-manual/en/faq/images/using-getin-or-getout-methods-on-exchange.data/flow.png
similarity index 100%
rename from
docs/user-manual/en/faq/using-getin-or-getout-methods-on-exchange.data/flow.png
rename to
docs/user-manual/en/faq/images/using-getin-or-getout-methods-on-exchange.data/flow.png
diff --git a/docs/user-manual/en/faq/is-there-an-ide.adoc
b/docs/user-manual/en/faq/is-there-an-ide.adoc
new file mode 100644
index 00000000000..083554675f5
--- /dev/null
+++ b/docs/user-manual/en/faq/is-there-an-ide.adoc
@@ -0,0 +1,14 @@
+[[IsthereanIDE-IsthereanIDEforeditingCamelroutes]]
+=== Is there an IDE for editing Camel routes?
+
+Apache Camel offers no IDE out of the box.
+
+You could use your Java IDE for smart completion when creating
+link:../routes.adoc[Java routing rules] via the link:../dsl.adoc[DSL] which
+will give you smart completion in Java code.
+Or you can use your XML IDE (with XSD smart completion) to edit the
+link:../spring.adoc[routing rules in XML] using the
+link:../xml-configuration.adoc[XML Configuration]
+
+Some of the link:../commercial-camel-offerings.adoc[Commercial Companies]
+offers IDE's and other tooling for Camel.
diff --git
a/docs/user-manual/en/faq/should-i-deploy-camel-inside-the-activemq-broker-or-in-another-application.adoc
b/docs/user-manual/en/faq/should-i-deploy-camel-inside-the-activemq-broker-or-in-another-application.adoc
new file mode 100644
index 00000000000..c6d61cdc6ca
--- /dev/null
+++
b/docs/user-manual/en/faq/should-i-deploy-camel-inside-the-activemq-broker-or-in-another-application.adoc
@@ -0,0 +1,36 @@
+[[ShouldIdeployCamelinsidetheActiveMQbrokerorinanotherapplication-ShouldIdeployCamelinsidetheActiveMQbrokerorinanotherapplication]]
+=== Should I deploy Camel inside the ActiveMQ broker or in another application
+
+Whether you deploy the
+link:../enterprise-integration-patterns.adoc[Enterprise Integration Patterns]
+inside the ActiveMQ Broker or in a separate application
+depends on your requirements.
+
+[[ShouldIdeployCamelinsidetheActiveMQbrokerorinanotherapplication-AdvantagesofdeployingEIPinsidethebroker]]
+==== Advantages of deploying EIP inside the broker
+
+* It is a single JVM so less moving parts and you're less likely to forget
+to deploy something.
+* If you are doing things like polling resources such as files,
+databases and bridging them to queues or topics then its usually more
+efficient to host in the broker; as there's less contention and there's
+no network communication between the EIP rules and the message broker as
+its all in the same JVM (so you can use the <<vm-component,VM Transport>>
+to avoid network overhead.
+
+[[ShouldIdeployCamelinsidetheActiveMQbrokerorinanotherapplication-AdvantagesofdeployingEIPinsideaseparateapplication]]
+==== Advantages of deploying EIP inside a separate application
+
+* It is easier to deploy loads of JVMs containing the EIP routing rules to
+get better load balancing.
+* You can easily change your routing rules then stop/restart
+applications without having to restart your broker. Having said that
+since ActiveMQ supports it's not such a big deal to bounce the Broker now and
again
+to refresh routing rules. Note that at some point
+https://issues.apache.org/activemq/browse/CAMEL-234[Camel will support
auto-reload of routing rules on the fly without having to stop and reload the
JVM]
+so one day this won't be such a big benefit.
+
+[[ShouldIdeployCamelinsidetheActiveMQbrokerorinanotherapplication-SeeAlso]]
+==== See Also
+
+*
http://activemq.apache.org/should-i-deploy-the-broker-inside-my-jvm-or-appserver.html[Should
I embed the broker in my JVM or run it separately]
diff --git a/docs/user-manual/en/faq/using-camel-core-testsjar.adoc
b/docs/user-manual/en/faq/using-camel-core-testsjar.adoc
new file mode 100644
index 00000000000..7ad9a9fee56
--- /dev/null
+++ b/docs/user-manual/en/faq/using-camel-core-testsjar.adoc
@@ -0,0 +1,10 @@
+[[Usingcamel-core-tests.jar-Usingcamel-core-tests.jar]]
+=== Using camel-core-tests.jar
+
+The `camel-core-tests.jar` is *not* for usage for Camel end users. This
+JAR is only used internally by Camel itself when it tests the same unit
+tests using different DSL such as Spring XML, Blueprint XML, Scala DSL,
+etc.
+
+End users who need a test kit should use `camel-test` or `camel-testng`
+JARs instead. See more here link:../testing.adoc[Testing].
diff --git
a/docs/user-manual/en/faq/using-getin-or-getout-methods-on-exchange.adoc
b/docs/user-manual/en/faq/using-getin-or-getout-methods-on-exchange.adoc
new file mode 100644
index 00000000000..6a31b770d8a
--- /dev/null
+++ b/docs/user-manual/en/faq/using-getin-or-getout-methods-on-exchange.adoc
@@ -0,0 +1,131 @@
+[[UsinggetInorgetOutmethodsonExchange-MessageexchangepatternsandtheExchangeobject]]
+=== Message Exchange Patterns and the Exchange object
+
+The Camel API is influenced by APIs such as
+http://en.wikipedia.org/wiki/Java_Business_Integration[JBI specification],
+http://cxf.apache.org/[CXF] which defines a concept
+called Message Exchange Patterns (MEP for short).
+
+The MEP defines the messaging style used such as one-way
+(<<eventMessage-eip,InOnly>>) or request-reply
+(<<requestReply-eip,InOut>>),
+which means you have IN and optionally OUT messages. This closely maps
+to other APIs such as WS, WSDL, REST, JBI and the likes.
+
+The link:../exchange.adoc[Exchange] API provides two methods to get a
+message, either `getIn` or `getOut`.
+Obviously the `getIn` gets the IN message, and the `getOut` gets the OUT
+message.
+
+[[UsinggetInorgetOutmethodsonExchange-Flowofanexchangethrougharoute]]
+==== Flow of an exchange through a route
+
+image:images/using-getin-or-getout-methods-on-exchange.data/Message-flow-in-Route.png[image]
+
+* The out message from each step is used as the in message for the next
+step
+* if there is no out message then the in message is used instead
+* For the InOut MEP the out from the last step in the route is returned
+to the producer. In case of InOnly the last out is thrown away
+
+[TIP]
+====
+**Beware of `getOut` to check if there is an out message**
+
+`exchange.getOut` creates an out message if there is none. So if you want
+to check if there is an out message then you should use `exchange.hasOut`
+instead.
+====
+
+[[UsinggetInorgetOutmethodsonExchange-UsinggetInorgetOutmethodsonExchange]]
+==== Using getIn or getOut methods on Exchange
+
+Now suppose you want to use a Camel link:../processor.adoc[Processor] to
+adjust a message. This can be done as follows:
+
+[source,java]
+----
+public void process(Exchange exchange) throws Exception {
+ String body = exchange.getIn().getBody(String.class);
+ // change the message to say Hello
+ exchange.getOut().setBody("Hello " + body);
+}
+----
+
+This seems intuitive and is what you would expect is the _right_
+approach to change a message from a link:../processor.adoc[Processor].
+However there is an big issue -- the `getOut` method will create a new
+<<message-eip,Message>>, which means any other information
+from the IN message will not be propagated; which means you will lose
+that data.
+
+To remedy this we'll have to copy the data which is done as follows:
+
+[source,java]
+----
+public void process(Exchange exchange) throws Exception {
+ String body = exchange.getIn().getBody(String.class);
+ // change the message to say Hello
+ exchange.getOut().setBody("Hello " + body);
+ // copy headers from IN to OUT to propagate them
+ exchange.getOut().setHeaders(exchange.getIn().getHeaders());
+}
+----
+
+Well that is not all, a <<message-eip,Message>> can also contain
+attachments so to be sure you need to propagate those as well:
+
+[source,java]
+----
+public void process(Exchange exchange) throws Exception {
+ String body = exchange.getIn().getBody(String.class);
+ // change the message to say Hello
+ exchange.getOut().setBody("Hello " + body);
+ // copy headers from IN to OUT to propagate them
+ exchange.getOut().setHeaders(exchange.getIn().getHeaders();
+ // copy attachements from IN to OUT to propagate them
+ exchange.getOut().setAttachments(exchange.getIn().getAttachments());
+}
+----
+
+Now we ensure that all additional data is propagated on the new OUT
+message. But its a shame we need 2 code lines to ensure data is
+propagated.
+What you can do instead is to change the IN message instead, as shown
+below:
+
+[source,java]
+----
+public void process(Exchange exchange) throws Exception {
+ String body = exchange.getIn().getBody(String.class);
+ // change the existing message to say Hello
+ exchange.getIn().setBody("Hello " + body);
+}
+----
+
+[TIP]
+====
+**Consider using getIn**
+
+As shown above you most often need to alter the existing IN message,
+than creating a totally new OUT message.
+And therefore it's often easier just to adjust the IN message directly.
+====
+
+Changing the IN message directly is possible in Camel as it doesn't
+mind. Camel will detect that the link:../exchange.adoc[Exchange] has no OUT
+message and therefore use the IN message instead.
+
+[[UsinggetInorgetOutmethodsonExchange-AboutMessageExchangePatternandgetOut]]
+==== About Message Exchange Pattern and getOut
+
+If the link:../exchange.adoc[Exchange] is using `InOnly` as the MEP, then
+you may think that the link:../exchange.adoc[Exchange] has no OUT
+message. But you can still invoke the `getOut` method on
+link:../exchange.adoc[Exchange]; Camel will not barf.
+
+So the example code above is possible for any kind of MEP. The MEP is
+_just_ a flag on the link:../exchange.adoc[Exchange] which the Consumer and
+Producer adhere to.
+You can change the MEP on the link:../exchange.adoc[Exchange] using the
+`setPattern` method. And likewise there is DSL to change it as well.
diff --git
a/docs/user-manual/en/faq/using-getin-or-getout-methods-on-exchange.data/Message-flow-in-Route
b/docs/user-manual/en/faq/using-getin-or-getout-methods-on-exchange.data/Message-flow-in-Route
deleted file mode 100644
index 591a8ed24ea..00000000000
---
a/docs/user-manual/en/faq/using-getin-or-getout-methods-on-exchange.data/Message-flow-in-Route
+++ /dev/null
@@ -1 +0,0 @@
-{"contentType":"application/gliffy+json","version":"1.3","metadata":{"title":"untitled","revision":0,"exportBorder":false,"loadPosition":"default"},"embeddedResources":{"index":0,"resources":[]},"stage":{"objects":[{"x":120,"y":50,"rotation":0,"id":5,"uid":"com.gliffy.shape.erd.erd_v1.default.zero_one","width":85,"height":1,"lockAspectRatio":false,"lockShape":false,"order":4,"graphic":{"type":"Line","Line":{"strokeWidth":2,"strokeColor":"#333333","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":1,"startArrowRotation":"auto","endArrowRotation":"auto","ortho":true,"interpolationType":"linear","cornerRadius":null,"controlPath":[[0,0],[28.333333333333343,0],[56.66666666666666,0],[85,0]],"lockSegments":{}}},"children":[],"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":4,"px":1,"py":0.5}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":2,"px":0,"py":0.54}}},"linkMap":[]},{"x":305,"y":47,"rotation":0,"id":9,"uid":"com.gliffy.shape.erd.erd_v1.default.zero_one","width":82,"height":1,"lockAspectRatio":false,"lockShape":false,"order":9,"graphic":{"type":"Line","Line":{"strokeWidth":2,"strokeColor":"#333333","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":1,"startArrowRotation":"auto","endArrowRotation":"auto","ortho":true,"interpolationType":"linear","cornerRadius":null,"controlPath":[[0,0],[27.3333346036585,0],[54.666669207317,0],[82.0000038109755,0]],"lockSegments":{}}},"children":[],"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":2,"px":1,"py":0.5}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":8,"px":0,"py":0.487}}},"linkMap":[]},{"x":487,"y":48,"rotation":0,"id":15,"uid":"com.gliffy.shape.erd.erd_v1.default.zero_one","width":63.5,"height":1,"lockAspectRatio":false,"lockShape":false,"order":14,"graphic":{"type":"Line","Line":{"strokeWidth":2,"strokeColor":"#333333","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":1,"startArrowRotation":"auto","endArrowRotation":"auto","ortho":true,"interpolationType":"linear","cornerRadius":null,"controlPath":[[0,0],[21.166666666666686,0],[42.33333333333337,0],[63.5,0]],"lockSegments":{}}},"children":[],"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":8,"px":1,"py":0.5}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":14,"px":0,"py":0.5}}},"linkMap":[]},{"x":70,"y":75,"rotation":0,"id":17,"uid":"com.gliffy.shape.erd.erd_v1.default.zero_one","width":513,"height":29.5,"lockAspectRatio":false,"lockShape":false,"order":16,"graphic":{"type":"Line","Line":{"strokeWidth":2,"strokeColor":"#333333","fillColor":"none","dashStyle":null,"startArrow":1,"endArrow":0,"startArrowRotation":"auto","endArrowRotation":"auto","ortho":true,"interpolationType":"linear","cornerRadius":null,"controlPath":[[0,0],[0,29.5],[513,29.5],[513,5.5]],"lockSegments":{}}},"children":[],"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":4,"px":0.5,"py":1}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":14,"px":0.5,"py":1}}},"linkMap":[]},{"x":615.5,"y":48,"rotation":0,"id":20,"uid":"com.gliffy.shape.erd.erd_v1.default.zero_one","width":59.5,"height":1,"lockAspectRatio":false,"lockShape":false,"order":19,"graphic":{"type":"Line","Line":{"strokeWidth":2,"strokeColor":"#333333","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":1,"startArrowRotation":"auto","endArrowRotation":"auto","ortho":true,"interpolationType":"linear","cornerRadius":null,"controlPath":[[0,0],[19.83333333333337,0],[39.66666666666663,0],[59.5,0]],"lockSegments":{}}},"children":[],"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":14,"px":1,"py":0.5}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":19,"px":0,"py":0.52}}},"linkMap":[]},{"x":205,"y":9.5,"rotation":0,"id":2,"uid":"com.gliffy.shape.flowchart.flowchart_v1.default.process","width":100,"height":75,"lockAspectRatio":false,"lockShape":false,"order":0,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#333333","fillColor":"#d1d1d1","gradient":true,"dropShadow":true,"state":null,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":23,"uid":null,"width":100,"height":14,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"none","vposition":"none","hposition":"none","html":"<p
style=\"text-align:center;\"><span style=\"font-family: Arial; font-size:
12px; line-height: 14px; color: rgb(0, 0,
0);\">Processor</span></p>","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2,"outerPaddingLeft":5,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingTop":6}},"children":[]}],"linkMap":[]},{"x":20,"y":25,"rotation":0,"id":4,"uid":"com.gliffy.shape.flowchart.flowchart_v1.default.start_end","width":100,"height":50,"lockAspectRatio":false,"lockShape":false,"order":2,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.start_end.flowchart_v1","strokeWidth":2,"strokeColor":"#333333","fillColor":"#d1d1d1","gradient":true,"dropShadow":true,"state":null,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":24,"uid":null,"width":100,"height":14,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"none","vposition":"none","hposition":"none","html":"<p
style=\"text-align: center;\"><span style=\"font-family: Arial; font-size:
12px; line-height:
14px;\">consumer</span></p>","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2,"outerPaddingLeft":5,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingTop":6}},"children":[]}],"linkMap":[]},{"x":120.5,"y":25.5,"rotation":0,"id":6,"uid":"com.gliffy.shape.basic.basic_v1.default.text","width":35,"height":25,"lockAspectRatio":false,"lockShape":false,"order":5,"graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"none","vposition":"none","hposition":"none","html":"<p
style=\"text-align:center;\"><span style=\"font-family: Arial; font-size:
12px; line-height: 14px; color: rgb(0, 0,
0);\">out</span></p>","paddingLeft":0,"paddingRight":0,"paddingBottom":0,"paddingTop":0,"outerPaddingLeft":5,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingTop":6}},"children":[],"linkMap":[]},{"x":175.5,"y":25.5,"rotation":0,"id":7,"uid":"com.gliffy.shape.basic.basic_v1.default.text","width":25,"height":25,"lockAspectRatio":false,"lockShape":false,"order":6,"graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"none","vposition":"none","hposition":"none","html":"<p
style=\"text-align:center;\"><span style=\"font-family: Arial; font-size:
12px; line-height: 14px; color: rgb(0, 0,
0);\">in</span></p>","paddingLeft":0,"paddingRight":0,"paddingBottom":0,"paddingTop":0,"outerPaddingLeft":5,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingTop":6}},"children":[],"linkMap":[]},{"x":387,"y":10.5,"rotation":0,"id":8,"uid":"com.gliffy.shape.flowchart.flowchart_v1.default.process","width":100,"height":75,"lockAspectRatio":false,"lockShape":false,"order":7,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#333333","fillColor":"#d1d1d1","gradient":true,"dropShadow":true,"state":null,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":25,"uid":null,"width":100,"height":14,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"none","vposition":"none","hposition":"none","html":"<p
style=\"text-align:center;\"><span style=\"font-family: Arial; font-size:
12px; line-height: 14px; color: rgb(0, 0,
0);\">Processor</span></p>","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2,"outerPaddingLeft":5,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingTop":6}},"children":[]}],"linkMap":[]},{"x":300.5,"y":20.5,"rotation":0,"id":10,"uid":"com.gliffy.shape.basic.basic_v1.default.text","width":35,"height":25,"lockAspectRatio":false,"lockShape":false,"order":10,"graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"none","vposition":"none","hposition":"none","html":"<p
style=\"text-align:center;\"><span style=\"font-family: Arial; font-size:
12px; line-height: 14px; color: rgb(0, 0,
0);\">out</span></p>","paddingLeft":0,"paddingRight":0,"paddingBottom":0,"paddingTop":0,"outerPaddingLeft":5,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingTop":6}},"children":[],"linkMap":[]},{"x":355.5,"y":20.5,"rotation":0,"id":11,"uid":"com.gliffy.shape.basic.basic_v1.default.text","width":25,"height":25,"lockAspectRatio":false,"lockShape":false,"order":11,"graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"none","vposition":"none","hposition":"none","html":"<p
style=\"text-align:center;\"><span style=\"font-family: Arial; font-size:
12px; line-height: 14px; color: rgb(0, 0,
0);\">in</span></p>","paddingLeft":0,"paddingRight":0,"paddingBottom":0,"paddingTop":0,"outerPaddingLeft":5,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingTop":6}},"children":[],"linkMap":[]},{"x":550.5,"y":15.5,"rotation":0,"id":14,"uid":"com.gliffy.shape.flowchart.flowchart_v1.default.decision","width":65,"height":65,"lockAspectRatio":false,"lockShape":false,"order":12,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.diamond.basic_v1","strokeWidth":2,"strokeColor":"#333333","fillColor":"#d1d1d1","gradient":true,"dropShadow":true,"state":null,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":26,"uid":null,"width":65,"height":28,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"none","vposition":"none","hposition":"none","html":"<p
style=\"text-align:center;\"><span style=\"font-family: Arial; font-size:
12px; line-height: 14px; color: rgb(0, 0, 0);\">MEP</span></p><p
style=\"text-align:center;\"><span style=\"font-family: Arial; font-size: 12px;
line-height: 14px; color: rgb(0, 0,
0);\">type</span></p>","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2,"outerPaddingLeft":5,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingTop":6}},"children":[]}],"linkMap":[]},{"x":485.5,"y":25.5,"rotation":0,"id":16,"uid":"com.gliffy.shape.basic.basic_v1.default.text","width":35,"height":25,"lockAspectRatio":false,"lockShape":false,"order":15,"graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"none","vposition":"none","hposition":"none","html":"<p
style=\"text-align:center;\"><span style=\"font-family: Arial; font-size:
12px; line-height: 14px; color: rgb(0, 0,
0);\">out</span></p>","paddingLeft":0,"paddingRight":0,"paddingBottom":0,"paddingTop":0,"outerPaddingLeft":5,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingTop":6}},"children":[],"linkMap":[]},{"x":675,"y":22,"rotation":0,"id":19,"uid":"com.gliffy.shape.flowchart.flowchart_v1.default.start_end","width":100,"height":50,"lockAspectRatio":false,"lockShape":false,"order":17,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.start_end.flowchart_v1","strokeWidth":2,"strokeColor":"#333333","fillColor":"#d1d1d1","gradient":true,"dropShadow":true,"state":null,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":27,"uid":null,"width":100,"height":14,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"none","vposition":"none","hposition":"none","html":"<p
style=\"text-align:center;\"><span style=\"font-family: Arial; font-size:
12px; line-height: 14px; color: rgb(0, 0, 0);\">Throw away
out</span></p>","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2,"outerPaddingLeft":5,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingTop":6}},"children":[]}],"linkMap":[]},{"x":579,"y":80.5,"rotation":0,"id":21,"uid":"com.gliffy.shape.basic.basic_v1.default.text","width":50,"height":25,"lockAspectRatio":false,"lockShape":false,"order":20,"graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"none","vposition":"none","hposition":"none","html":"<p
style=\"text-align:center;\"><span style=\"font-family: Arial; font-size:
12px; line-height: 14px; color: rgb(0, 0,
0);\">InOut</span></p>","paddingLeft":0,"paddingRight":0,"paddingBottom":0,"paddingTop":0,"outerPaddingLeft":5,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingTop":6}},"children":[],"linkMap":[]},{"x":615,"y":20.5,"rotation":0,"id":22,"uid":"com.gliffy.shape.basic.basic_v1.default.text","width":50,"height":25,"lockAspectRatio":false,"lockShape":false,"order":21,"graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"none","vposition":"none","hposition":"none","html":"<p
style=\"text-align:center;\"><span style=\"font-family: Arial; font-size:
12px; line-height: 14px; color: rgb(0, 0,
0);\">InOnly</span></p>","paddingLeft":0,"paddingRight":0,"paddingBottom":0,"paddingTop":0,"outerPaddingLeft":5,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingTop":6}},"children":[],"linkMap":[]}],"background":"#ffffff","width":777,"height":109,"maxWidth":800,"maxHeight":150,"nodeIndex":28,"autoFit":true,"exportBorder":false,"gridOn":true,"snapToGrid":true,"drawingGuidesOn":false,"pageBreaksOn":false,"printGridOn":false,"printPaper":"LETTER","printShrinkToFit":false,"printPortrait":true,"shapeStyles":{"com.gliffy.shape.basic.basic_v1.default":{"fill":"#d1d1d1","stroke":"#333333","gradient":true,"shadow":true},"com.gliffy.shape.flowchart.flowchart_v1.default":{"fill":"#d1d1d1","stroke":"#333333","gradient":true,"shadow":true}},"lineStyles":{"global":{"stroke":"#333333","strokeWidth":2,"endArrow":1,"orthoMode":1}},"textStyles":{"global":{"face":"Arial","size":"12px","color":"#000000"}},"themeData":null,"viewportType":"default","fitBB":{"min":{"x":20,"y":9.5},"max":{"x":777,"y":109}}}}
\ No newline at end of file
diff --git
a/docs/user-manual/en/faq/why-can-i-not-use-when-or-otherwise-in-a-java-camel-route.adoc
b/docs/user-manual/en/faq/why-can-i-not-use-when-or-otherwise-in-a-java-camel-route.adoc
new file mode 100644
index 00000000000..4088777cdc4
--- /dev/null
+++
b/docs/user-manual/en/faq/why-can-i-not-use-when-or-otherwise-in-a-java-camel-route.adoc
@@ -0,0 +1,98 @@
+[[WhycanInotusewhenorotherwiseinaJavaCamelroute-WhycanInotusewhenotherwiseinaJavaCamelroute]]
+=== Why can I not use when/otherwise in a Java Camel route?
+
+When using the <<contentBasedRouter-eip,Content Based Router>> in
+the Java DSL you may have a situation where the compiler will not accept
+the following `when()` or `otherwise()` statement.
+
+[TIP]
+====
+**Quick tip**
+
+Use `.endChoice()` to return "back" to the
+<<contentBasedRouter-eip,Content Based Router>>.
+====
+
+For example as shown in the route below where we use the
+<<loadBalance-eip,Load Balancer>> inside the
+<<contentBasedRouter-eip,Content Based Router>> in the first when:
+
+*Code will not compile*
+
+[source,java]
+----
+from("direct:start")
+ .choice()
+ .when(body().contains("Camel"))
+ .loadBalance().roundRobin().to("mock:foo").to("mock:bar")
+ .otherwise()
+ .to("mock:result");
+----
+
+Well the first issue is that the <<loadBalance-eip,Load Balancer>>
+uses the additional routing to know what to use in the load balancing.
+In this example that would be the:
+
+[source,java]
+----
+.to("mock:foo").to("mock:bar")
+----
+
+To indicate when the balancing stops, you should use `.end()` to denote
+the end. So the route is updates as follows:
+
+*Code will still not compile*
+
+[source,java]
+----
+from("direct:start")
+ .choice()
+ .when(body().contains("Camel"))
+ .loadBalance().roundRobin().to("mock:foo").to("mock:bar").end()
+ .otherwise()
+ .to("mock:result");
+----
+
+But the code will still not compile. The reason is we have stretched how
+far we can take the good old Java language in terms of
+link:../dsl.adoc[DSL]. In a more modern language such as
+link:../scala-dsl.adoc[Scala] or link:../groovy-dsl.adoc[Groovy] you would be
able
+to let it be stack based, so the `.end()` will pop the last type of the
+stack, and you would return back to the scope of the
+<<contentBasedRouter-eip,Content Based Router>>. However that's not
+easily doable in Java. So we need to help Java a bit, which you do by
+using `.endChoice()`, which tells Camel to "pop the stack" and return
+back to the scope of the link:content-based-router.html[Content Based
+Router].
+
+*Code compiles*
+
+[source,java]
+----
+from("direct:start")
+ .choice()
+ .when(body().contains("Camel"))
+
.loadBalance().roundRobin().to("mock:foo").to("mock:bar").endChoice()
+ .otherwise()
+ .to("mock:result");
+----
+
+You only need to use `.endChoice()` when using certain
+link:../enterprise-integration-patterns.adoc[EIP]s which often have additional
+methods to configure or as part of the
+link:../enterprise-integration-patterns.adoc[EIP] itself. For example the
+<<split-eip,Splitter>> EIP has a sub-route which denotes the
+routing of each splitted message. You would also have to use
+`.endChoice()` to indicate the end of the sub-route and to return back
+to the <<contentBasedRouter-eip,Content Based Router>>. Note
+`.endChoice()` is *available as of Camel 2.7*.
+
+[[WhycanInotusewhenorotherwiseinaJavaCamelroute-Stillproblems]]
+==== Still problems
+
+If there are still problems, then you can split your route into multiple
+routes, and link them together using the <<direct-component,Direct>>
+component.
+There can be some combinations of
link:../enterprise-integration-patterns.adoc[EIP]s
+that can hit limits in how far we can take the fluent builder DSL with
+generics you can do in Java programming language (1.7 and below).
diff --git a/docs/user-manual/en/faq/why-cant-i-use-sign-in-my-password.adoc
b/docs/user-manual/en/faq/why-cant-i-use-sign-in-my-password.adoc
new file mode 100644
index 00000000000..a4a3cbc580d
--- /dev/null
+++ b/docs/user-manual/en/faq/why-cant-i-use-sign-in-my-password.adoc
@@ -0,0 +1,18 @@
+[[WhycantIusesigninmypassword-WhycantIusesigninmypassword]]
+=== Why can't I use `+` sign in my password?
+
+How do I configure password options on Camel endpoints without the value being
encoded?
+
+When you configure Camel endpoints using link:../uris.adoc[URIs] then the
+parameter values gets url encoded by default.
+This can be a problem when you want to configure passwords _as is_.
+
+To do that you can tell Camel to use the raw value, by enclosing the
+value with RAW(value). See more details at
+link:how-do-i-configure-endpoints.adoc[How do I configure endpoints?]
+which has an example also.
+
+[[WhycantIusesigninmypassword-SeeAlso]]
+==== See Also
+
+* link:how-do-i-configure-endpoints.adoc[How do I configure endpoints?]
diff --git
a/docs/user-manual/en/faq/why-do-my-message-lose-its-headers-during-routing.adoc
b/docs/user-manual/en/faq/why-do-my-message-lose-its-headers-during-routing.adoc
new file mode 100644
index 00000000000..efdb3d65b13
--- /dev/null
+++
b/docs/user-manual/en/faq/why-do-my-message-lose-its-headers-during-routing.adoc
@@ -0,0 +1,4 @@
+[[Whydomymessageloseitsheadersduringrouting-Whydomymessageloseitsheadersduringrouting]]
+=== Why do my message lose its headers during routing?
+
+See this link:using-getin-or-getout-methods-on-exchange.adoc[FAQ entry].
diff --git
a/docs/user-manual/en/faq/why-does-ftp-component-not-download-any-files.adoc
b/docs/user-manual/en/faq/why-does-ftp-component-not-download-any-files.adoc
new file mode 100644
index 00000000000..a5430a19119
--- /dev/null
+++ b/docs/user-manual/en/faq/why-does-ftp-component-not-download-any-files.adoc
@@ -0,0 +1,8 @@
+[[WhydoesFTPcomponentnotdownloadanyfiles-WhydoesFTPcomponentnotdownloadanyfiles]]
+=== Why does FTP component not download any files?
+
+The <<ftp-component,FTP>> component has many options. So make sure you
+have configured it properly.
+Also a common issue is that you have to use either active or passive
+mode. So you may have to set `passiveMode=true` on the endpoint
+configuration.
diff --git
a/docs/user-manual/en/faq/why-does-my-file-consumer-not-pick-up-the-file-and-how-do-i-let-the-file-consumer-use-the-camel-error-handler.adoc
b/docs/user-manual/en/faq/why-does-my-file-consumer-not-pick-up-the-file-and-how-do-i-let-the-file-consumer-use-the-camel-error-handler.adoc
new file mode 100644
index 00000000000..b1f44d4479b
--- /dev/null
+++
b/docs/user-manual/en/faq/why-does-my-file-consumer-not-pick-up-the-file-and-how-do-i-let-the-file-consumer-use-the-camel-error-handler.adoc
@@ -0,0 +1,51 @@
+[[WhydoesmyfileconsumernotpickupthefileandhowdoIletthefileconsumerusetheCamelerrorhandler-WhydoesmyfileconsumernotpickupthefileandhowdoIletthefileconsumerusetheCamelerrorhandler]]
+=== Why does my file consumer not pick up the file, and how do I let the file
consumer use the Camel error handler?
+
+There could be several reasons why the <<file-component,File>> consumer is
+not picking up files. For example it may not run at all, or it cannot
+acquire a read lock on the file.
+link:../faq.adoc#logging-questions[Check the logs] for any exceptions or other
+informative messages. You can
+link:how-do-i-enable-debug-logging.adoc[turn on DEBUG logging] at
+`org.apache.camel.component.file` to see more detail.
+
+[[WhydoesmyfileconsumernotpickupthefileandhowdoIletthefileconsumerusetheCamelerrorhandler-HowtouseCamelsroutingerrorhandlerswiththefileconsumer]]
+==== How to use Camel's routing error handlers with the file consumer
+
+Well, this is really a
+http://en.wikipedia.org/wiki/Chicken_or_the_egg["chicken or the egg"]
+question. The Camel link:../error-handling-in-camel.adoc[error handler]
+(e.g., in the routes) only applies when a message is being routed by the
+routing engine.
+Before this happens, a consumer must successfully receive a message,
+create a Camel link:../exchange.adoc[Exchange], populate the
+link:../exchange.adoc[Exchange] with message details (e.g., body and
+headers), and then pass the link:../exchange.adoc[Exchange] to the routing
+engine. Only at this point can the routing error handler deal with
+exceptions occurring. Before this point, any error handling is really
+link:../component.adoc[component]-specific.
+
+[NOTE]
+====
+**Bridge with error handler**
+
+From Camel 2.10 onwards the file and ftp consumers can now bridge to the
+Camel routing engine's error handler. See more details at the
+`consumer.bridgeErrorHandler` option on the <<file-component,File>>
+documentation.
+====
+
+If the component consumer extends the
+https://github.com/apache/camel/blob/master/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumer.java[`DefaultConsumer`]
+from Camel, then it offers an
+https://github.com/apache/camel/blob/master/camel-core/src/main/java/org/apache/camel/spi/ExceptionHandler.java[`org.apache.camel.spi.ExceptionHandler`]
+hook for end users to plug-in a custom strategy. The default
+implementation from Camel is
+https://github.com/apache/camel/blob/master/camel-core/src/main/java/org/apache/camel/impl/LoggingExceptionHandler.java[`LoggingExceptionHandler`]
+that will log the exception at `ERROR`/`WARN` level, and then ignore the
+exception.
+
+See the <<file-component,File>> page in the bottom for an example how to
+use a custom `ExceptionHandler` that sends a new message to the Camel
+routing engine, which then allows the routing engine to trigger its own
+error handling to deal with the exception.
diff --git
a/docs/user-manual/en/faq/why-does-useoriginalmessage-with-error-handler-not-work-as-expected.adoc
b/docs/user-manual/en/faq/why-does-useoriginalmessage-with-error-handler-not-work-as-expected.adoc
new file mode 100644
index 00000000000..d8a94dd00de
--- /dev/null
+++
b/docs/user-manual/en/faq/why-does-useoriginalmessage-with-error-handler-not-work-as-expected.adoc
@@ -0,0 +1,16 @@
+[[WhydoesuseOriginalMessagewitherrorhandlernotworkasexpected-WhydoesuseOriginalMessagewitherrorhandlernotworkasexpected]]
+=== Why does useOriginalMessage with error handler not work as expected?
+
+If you use the link:../exception-clause.adoc[useOriginalMessage] option
+from the Camel link:../exception-clause.adoc[Error Handler] then it matters
+if you use this with link:../enterprise-integration-patterns.adoc[EIP]s such
as:
+
+* <<recipientList-eip,Recipient List>>
+* <<split-eip,Splitter>>
+* <<multicast-eip,Multicast>>
+
+Then the option `shareUnitOfWork` on these
link:../enterprise-integration-patterns.adoc[EIP]s
+influence the message in use by the `useOriginalMessage` option.
+
+See more details at <<split-eip,Splitter>> and further below with
+the examples explaining this in more detail.
diff --git a/docs/user-manual/en/faq/why-is-my-message-body-empty.adoc
b/docs/user-manual/en/faq/why-is-my-message-body-empty.adoc
new file mode 100644
index 00000000000..719f8f3a0a6
--- /dev/null
+++ b/docs/user-manual/en/faq/why-is-my-message-body-empty.adoc
@@ -0,0 +1,19 @@
+[[Whyismymessagebodyempty-Whyismymessageempty]]
+=== Why is my message empty?
+
+In Camel the message body can be of any types. Some types are safely
+readable multiple times, and therefore do not 'suffer' from becoming
+'empty'.
+So when you message body suddenly is empty, then that is often related
+to using a message type that is no re-readable; in other words, the
+message
+body can only be read once. On subsequent reads the body is now empty.
+This happens with types that are streaming based, such as
+`java.util.InputStream`, etc.
+
+A number of Camel components supports and use streaming types out of the
+box. For example the HTTP related components, CXF, etc.
+
+Camel offers a functionality link:stream-caching.adoc[Stream caching];
+that caches the stream, so it can be re-readable. By enabling this
+cache, the message body would no longer be empty.
diff --git
a/docs/user-manual/en/faq/why-is-my-processor-not-showing-up-in-jconsole.adoc
b/docs/user-manual/en/faq/why-is-my-processor-not-showing-up-in-jconsole.adoc
new file mode 100644
index 00000000000..6a682c3aaf7
--- /dev/null
+++
b/docs/user-manual/en/faq/why-is-my-processor-not-showing-up-in-jconsole.adoc
@@ -0,0 +1,35 @@
+[[WhyismyprocessornotshowingupinJConsole-WhyismyprocessornotshowingupinJConsole]]
+=== Why is my processor not showing up in JConsole?
+
+Not every processor is managed, and thus not all are visible in
+JConsole.
+
+A processor must implement the `org.apache.camel.Service` to be managed.
+Most EIP processors do this.
+For example, the minor ones such as `setHeader` do not and thus are not
+visible in JConsole.
+
+From *Camel 2.6* onwards your custom `Processor` should use the Spring
+JMX annotations (for *Camel 2.9* onwards see the tip box below). Just
+add `@ManagedResource` to the class, and the other annotations for the
+attributes and operations. Then Camel will automatically use those when
+the processor is being registered in JMX.
+
+\{snippet:id=e1|lang=java|title=Custom
+processor|url=camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedCustomProcessorTest.java}
+
+The same applies when using beans in your routes.
+
+\{snippet:id=e1|lang=java|title=Custom
+bean|url=camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedCustomBeanTest.java}
+Camel 2.9 onwards provides Camel's own JMX annotations
+
+Notice that from Camel 2.9 onwards its encouraged to use the
+`@ManagedResource`, `@ManagedAttribute` and `@ManagedOperation` from the
+`org.apache.camel.api.management` package. This allows your custom code
+to not depend on Spring JARs anymore.
+
+[[WhyismyprocessornotshowingupinJConsole-Seealso]]
+==== See also
+
+* link:camel-jmx.adoc[Camel JMX]
diff --git
a/docs/user-manual/en/faq/why-is-the-exception-null-when-i-use-onexception.adoc
b/docs/user-manual/en/faq/why-is-the-exception-null-when-i-use-onexception.adoc
new file mode 100644
index 00000000000..c63ae9ceb39
--- /dev/null
+++
b/docs/user-manual/en/faq/why-is-the-exception-null-when-i-use-onexception.adoc
@@ -0,0 +1,37 @@
+[[WhyistheexceptionnullwhenIuseonException-WhyistheexceptionnullwhenIuseonException]]
+=== Why is the exception null when I use onException?
+
+If you use `onException` to handle exceptions, such as shown below:
+
+[source,java]
+----
+.onException(Exception.class).handled(true)
+ .process(new Processor() {
+ @Override
+ public void process(Exchange exchange) throws Exception {
+ Exception cause = exchange.getException());
+ // why cause exception is null ???
+ }
+ })
+.end()
+----
+
+Then make notice that because you use `handled(true)`, then the caused
+exception is no longer available from `exchange.getException()`, because
+we told Camel that we will handle the exception.
+
+Instead you can access the caused exception from a property on the
+exchange with the key `Exchange.EXCEPTION_CAUGHT`, as shown below:
+
+[source,java]
+----
+.onException(Exception.class).handled(true)
+ .process(new Processor() {
+ @Override
+ public void process(Exchange exchange) throws Exception {
+ Exception cause = exchange.getProperty(Exchange.EXCEPTION_CAUGHT,
Exception.class);
+ // we now have the caused exception
+ }
+ })
+.end()
+----
diff --git a/docs/user-manual/en/faq/why-use-multiple-camelcontext.adoc
b/docs/user-manual/en/faq/why-use-multiple-camelcontext.adoc
new file mode 100644
index 00000000000..ae97442af83
--- /dev/null
+++ b/docs/user-manual/en/faq/why-use-multiple-camelcontext.adoc
@@ -0,0 +1,16 @@
+[[WhyusemultipleCamelContext-WhyusemultipleCamelContext]]
+=== Why use multiple CamelContext?
+
+In general, you don't tend to want multiple camel contexts in your
+application, if you're running Camel as a standalone Java instance.
+However, if you're deploying Camel routes as OSGi bundles, or WARs in an
+application server, then you can end up having multiple routes being
+deployed, each in it's own, isolated camel context, in the same JVM.
+This makes sense: you want each Camel application to be deployable in
+isolation, in it's own Application Context, and not affected by the
+other Camel applications.
+
+If you want the endpoints or producers in different camel contexts to
+communicate with another, there are a number of solutions. You can use
+the ServiceMix NMR, or you can use <<jms-component,JMS>>, or
+you can use Camel's <<vm-component,VM>> transport.
diff --git a/docs/user-manual/en/getting-started.adoc
b/docs/user-manual/en/getting-started.adoc
index 70e8ad2be54..8a105cfc34d 100644
--- a/docs/user-manual/en/getting-started.adoc
+++ b/docs/user-manual/en/getting-started.adoc
@@ -28,7 +28,7 @@ To get started with Camel:
endpoints].
3. Add whatever routing rules you wish using the DSL and
RouteBuilder or using
-Xml Configuration.
+XML Configuration.
4. Start the context.
When your application is closing you may wish to
diff --git a/docs/user-manual/en/graceful-shutdown.adoc
b/docs/user-manual/en/graceful-shutdown.adoc
index 05ed9cc92a4..2047fc1f4be 100644
--- a/docs/user-manual/en/graceful-shutdown.adoc
+++ b/docs/user-manual/en/graceful-shutdown.adoc
@@ -69,8 +69,8 @@ processed before it can shutdown.
If a graceful shutdown could not shutdown cleanly within the given
timeout period, then Camel performs a more aggressive shutdown by
forcing routes and thread pools etc to shutdown. And as well the routing
-engine will reject continue processing link:exchange.html[Exchange]s. If
-this happens you may see WARN logs about link:exchange.html[Exchange]s
+engine will reject continue processing link:exchange.adoc[Exchange]s. If
+this happens you may see WARN logs about link:exchange.adoc[Exchange]s
being rejected and other failures due the forced shutdown.
If you do not want to see these logs, you can suppress this by setting
diff --git a/docs/user-manual/en/languages.adoc
b/docs/user-manual/en/languages.adoc
index bfd351c69cf..c8281088b12 100644
--- a/docs/user-manual/en/languages.adoc
+++ b/docs/user-manual/en/languages.adoc
@@ -45,7 +45,7 @@ The following is the list of currently supported languages:
* <<tokenizer-language,Tokenizer>>
* <<xpath-language,XPath>>
* <<xquery-language,XQuery>>
-* link:vtd-xml.adoc[VTD-XML]
+*
https://github.com/camel-extra/camel-extra/blob/master/components/camel-vtdxml/src/main/docs/vtdxml-component.adoc[VTD-XML]
Most of these languages are also supported used as
link:annotation-based-expression-language.html[Annotation Based
diff --git a/docs/user-manual/en/predicate.adoc
b/docs/user-manual/en/predicate.adoc
index cdc2be00a6f..103b9369c05 100644
--- a/docs/user-manual/en/predicate.adoc
+++ b/docs/user-manual/en/predicate.adoc
@@ -176,7 +176,7 @@ out of the box
* link:tokenizer.adoc[Tokenizer]
* link:xpath.adoc[XPath]
* link:xquery.adoc[XQuery]
-* link:vtd-xml.adoc[VTD-XML]
+*
https://github.com/camel-extra/camel-extra/blob/master/components/camel-vtdxml/src/main/docs/vtdxml-component.adoc[VTD-XML]
Most of these languages is also supported used as
link:annotation-based-expression-language.adoc[Annotation Based
diff --git a/docs/user-manual/en/processor.adoc
b/docs/user-manual/en/processor.adoc
index deee573ae2f..c5e7c93701e 100644
--- a/docs/user-manual/en/processor.adoc
+++ b/docs/user-manual/en/processor.adoc
@@ -4,7 +4,7 @@
The
http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Processor.html[Processor]
interface is used to implement consumers of message exchanges or to
-implement a <<MessageTranslator-MessageTranslator,Message Translator>>.
+implement a <<messageTranslator-eip,Message Translator>>.
[[Processor-Usingaprocessorinaroute]]
==== Using a processor in a route
@@ -94,6 +94,6 @@ link:writing-components.adoc[Writing Components]
[[Processor-SeeAlso]]
==== See Also
-* <<MessageTranslator-MessageTranslator,Message Translator>>
+* <<messageTranslator-eip,Message Translator>>
* <<enrich-eip,Content Enricher>>
* <<ContentFilter-eip,Content Filter>>
diff --git a/docs/user-manual/en/release-notes/camel-2170-release.adoc
b/docs/user-manual/en/release-notes/camel-2170-release.adoc
index 109efc51fd4..c0a9b978de1 100644
--- a/docs/user-manual/en/release-notes/camel-2170-release.adoc
+++ b/docs/user-manual/en/release-notes/camel-2170-release.adoc
@@ -28,7 +28,7 @@ and link:ftp.html[FTP] endpoints is now case in-sensitive out
of the
box.
* Resource based component such
as link:xslt.html[XSLT], link:velocity.html[Velocity] etc can load the
-resource file from the link:registry.adoc[Registry] by using `ref:` as
+resource file from the link:../registry.adoc[Registry] by using `ref:` as
prefix.
* Upgraded camel-amqp to the latest qpid-jms-client (also AMQP < 1.0 is
not supported anymore).
@@ -44,9 +44,9 @@ MultiGet operation
performant and use a rolling window for time periods which gives a
better flow.
* The `setHeader` and `setExchangeProperty` allows to use a dynamic
-header key using the link:simple.html[Simple] language if the name of
-the key is a link:simple.html[Simple] language expression.
-* Add collate function to link:simple.html[Simple] language to make it
+header key using the <<simple-language,Simple>> language if the name of
+the key is a <<simple-language,Simple>> language expression.
+* Add collate function to <<simple-language,Simple>> language to make it
easier to split a message body into sub lists of a specified size. The
function is similar to the collate function from Groovy.
* The link:camel-run-maven-goal.html[Camel Run Maven Goal] is able to
@@ -59,7 +59,7 @@ Multisearch and exists operation
Main class/JVM also, as it does when hitting ctrl + c.
* Added option to skipFirst to the link:tokenizer.html[Tokenizer]
language to make it easy to skip the very first element, when for
-example splitting a CSV file using the link:splitter.html[Splitter] EIP.
+example splitting a CSV file using the <<split-eip,Splitter>> EIP.
* The link:rest-dsl.html[Rest DSL] now supports default values for query
parameters
* The link:rest-dsl.html[Rest DSL] now only binds from POJO to JSon/XML
@@ -72,7 +72,7 @@ bodies.
* Camel link:error-handler.html[Error Handler] no longer log message
body/header details when logging the link:message-history.html[Message
History]. This avoids logging any sensitive details from message bodies.
-* Camel link:exception-clause.html[Exception Clause]
+* Camel link:../exception-clause.adoc[Exception Clause]
and link:error-handler.html[Error Handler] now supports using a
custom `Processor` to be invoked right after an exception was thrown
using the new *onExceptionOccurred* option.
@@ -94,7 +94,7 @@ scheduled interval.
* The <<http-component,HTTP>> and link:http4.html[HTTP4] producers now
support the `disableStreamCache` option to allow to use the raw response
stream as the message body instead of wrapping
-using link:stream-caching.html[Stream caching]
+using link:stream-caching.adoc[Stream caching]
* The link:cdi.html[Camel CDI] component has been improved to better fit
into the CDI programming model, cover a larger set of containers, and
provide these new features:
@@ -189,7 +189,7 @@ trailing slash if provided in uri when calling remote HTTP
service.
exception stored as property on the `Exchange` which allows to access
that information to know if there was an exception during routing.
* Fixed an issue with <<bean-component,Bean>> component
-or link:simple.html[Simple] language with OGNL method call, would pick
+or <<simple-language,Simple>> language with OGNL method call, would pick
method with java.lang.Object type over a better suited method, when the
method is overloaded.
* Fixed `camel-blueprint` to wait for the bundles with the component and
@@ -207,10 +207,10 @@ should let Camel handle the lifecycle of these resources.
* Fixed link:cxfrs.html[CXFRS] using simple binding mode would use the
content-length header from the incoming message in the response, instead
of calculating the length based on the output message body.
-* Fixed an issue with link:simple.html[Simple] if starting the
+* Fixed an issue with <<simple-language,Simple>> if starting the
expression with `file:` could fail with an error.
* Fixed link:spring-boot.html[Spring Boot] may report spring type
-converter errors if link:stream-caching.html[Stream caching] is enabled.
+converter errors if link:stream-caching.adoc[Stream caching] is enabled.
* Fixed link:idempotent-consumer.html[Idempotent Consumer] would not
propagate exception thrown from `IdempotentRepository` to
Camel's link:error-handler.html[Error Handler] such as `onException```
diff --git a/docs/user-manual/en/release-notes/camel-2180-release.adoc
b/docs/user-manual/en/release-notes/camel-2180-release.adoc
index 429b8ef0d1a..b9a35369a15 100644
--- a/docs/user-manual/en/release-notes/camel-2180-release.adoc
+++ b/docs/user-manual/en/release-notes/camel-2180-release.adoc
@@ -18,7 +18,7 @@ are now also documented (before it was only <routes> and
<rests>). The
XSD schema now also documents the default values of all the options.
* Introduced `FluentProducerTemplate` using fluent builder style as a
alternative to link:producertemplate.html[ProducerTemplate]
-* All Camel link:component.adoc[Components] that has options to be
+* All Camel link:../component.adoc[Components] that has options to be
configured now supports and include link:spring-boot.html[Spring
Boot] auto configuration for those options, so they can easily be
configured in your application.yaml file when using Spring Boot with
@@ -50,7 +50,7 @@ then that is used.
* Spring-DM for OSGi moved out of camel-spring into a separate
camel-spring-dm module. +
* Improved the <<bean-component,Bean>> component to better match method
-parameter types when using link:simple.html[Simple] language as
+parameter types when using <<simple-language,Simple>> language as
parameter values.
* Added `BindyConverter` that allows to implement custom data converters
for <<bindy-dataformat,Bindy>>
@@ -58,7 +58,7 @@ for <<bindy-dataformat,Bindy>>
no longer in use - its not part of swagger specification anymore.
* link:nats.html[Camel-NATS] now uses JNATS client instead of the
deprecated Java_nats one.
-* During startup of link:camelcontext.adoc[CamelContext] the services
+* During startup of link:../camelcontext.adoc[CamelContext] the services
that are used as part of routes are now deferred being started to the
end of the startup process. Some IoC frameworks like Spring can
otherwise causes a circular dependency issue if services are started too
@@ -72,9 +72,9 @@ helps prevent Spring initialization errors about circular
dependencies
issues.
* Added PATCH to link:rest-dsl.html[Rest DSL]
* Added "starts with" and "ends with" operator to the
-link:simple.html[Simple] language.
+<<simple-language,Simple>> language.
* Added `BeanIOSplitter` to <<beanio-dataformat,BeanIO>> that can be used
-with the link:splitter.html[Splitter] EIP to split big payloads in
+with the <<split-eip,Splitter>> EIP to split big payloads in
streaming mode without reading the entire content into memory.
* Some of the link:aws.html[AWS] components allows to specify ARN in the
endpoint configuration.
@@ -88,7 +88,7 @@ identifier rules, and also if parameter syntax has an ending
parenthesis.
* You can now use `@RunWith(CamelSpringBootJUnit4ClassRunner.class)` to
test Camel link:spring-boot.html[Spring Boot] applications and use the
-Camel test annotations from link:spring-testing.html[Spring Testing]
+Camel test annotations from link:../spring-testing.adoc[Spring Testing]
such as `@MockEndpoints`.
* To turn on logging exhausted message body with the message history you
can configure this easily on the CamelContext level
@@ -99,7 +99,7 @@ InfinispanRemoteAggregationRepository
* The link:sql-component.html[SQL Component] and
link:elsql.html[ElSql] now supports `outputType=StreamList` to use an
iterator for the output of the SQL query that allows to process the data
-in a streaming fashion such as with the link:splitter.html[Splitter] EIP
+in a streaming fashion such as with the <<split-eip,Splitter>> EIP
to process the data row by row, and load data from the database as
needed.
* <<jpa-component,JPA>> now includes a `JpaPollingConsumer` implementation
@@ -107,10 +107,10 @@ that better supports link:content-enricher.html[Content
Enricher]
using `pollEnrich` to do a on-demand poll that returns either none, one
or a list of entities as the result.
* Calling <<bean-component,Bean>> with method parameters defined
-using link:simple.html[Simple] parameters, now avoids an intermediate
+using <<simple-language,Simple>> parameters, now avoids an intermediate
conversion of the parameters to a String value. This ensures the passed
in values when calling the bean method is using the parameter type as-is
-from link:simple.html[Simple].
+from <<simple-language,Simple>>.
* link:cdi.html[Camel CDI] now supports importing Camel XML
configuration files
* link:cdi.html[Camel CDI] does not deploy an empty Camel context bean
@@ -124,11 +124,11 @@ custom BeanReaderErrorHandler implementation in his
configuration
ConfigMap feature
* The link:tokenizer.html[Tokenizer]
and link:xmltokenizer.html[XMLTokenizer] language now supports using
-link:simple.html[Simple] expressions as the token / xml tag names so
+<<simple-language,Simple>> expressions as the token / xml tag names so
they can be dynamic values.
* Added `filterDirectory` and `filterFile` options
to link:file2.html[File2] so filtering can be done
-using link:simple.html[Simple] language or predicates.
+using <<simple-language,Simple>> language or predicates.
* Optimize Camel to only enable AllowUseOriginalMessage if in use by
error handler or link:oncompletion.html[OnCompletion]. End user who
manually access the original message using the Java API must
@@ -167,7 +167,7 @@ headers.
* Improved link:bean.html[bean method call] to validate if method name
with parameters has valid number of parenthesis in the syntax.
* The link:jsonpath.html[JSonPath] now supports
-inlined link:simple.html[Simple] language expressions to allow more
+inlined <<simple-language,Simple>> language expressions to allow more
dynamic expressions.
* Improved Netty4 producer to be fully asynchronous when connecting to
remote server.
@@ -194,7 +194,7 @@ allowed.
* Fixed link:swagger-java.html[Swagger Java] when using property
placeholders in link:rest-dsl.html[Rest DSL] could cause invalid
parameters to be included that was from the placeholder.
-* The `threads` EIP now lets link:error-handling-in-camel.adoc[Error
+* The `threads` EIP now lets link:../error-handling-in-camel.adoc[Error
handling in Camel] perform redeliveries if the thread pool would
otherwise reject accepting the task. This allows the error handler to
perform redeliveries to attempt to put the task on the thread pool
@@ -205,7 +205,7 @@ non required query parameter that has no default value
assigned.
forever.
* Fixed a NPE in link:zookeeper.html[Zookeeper] consumer if no zookeeper
node path was set
-* When using continued with link:exception-clause.html[onException] then
+* When using continued with link:../exception-clause.adoc[onException] then
dead letter channel endpooint should not be invoked.
* Fixed link:error-handler.html[Error Handler] to not log exceptions
when using `continued(true)` by default.
@@ -226,7 +226,7 @@ files when using OSGi.
over <<jms-component,JMS>> and requests are timing out concurrently and
continued routing the exchanges are calling another <<jms-component,JMS>>
endpoint that is also doing request/reply which also timeout.
-* Fixed link:load-balancer.html[Load Balancer] EIPs to support
+* Fixed <<loadBalance-eip,Load Balancer>> EIPs to support
using _any_ link:using-propertyplaceholder.html[property placeholder]
using the *prop:* prefix.
* Fixed context scoped link:oncompletion.html[OnCompletion] would not
@@ -309,7 +309,7 @@ recommend using blueprint)
camel-spring-dm module. If using Spring XML with Spring-DM then you need
to install camel-spring-dm feature in Karaf/ServiceMix.
* The deprecated `@LazyLoadTypeConverter` has been removed from
-all link:camel-test.html[Camel Test] modules
+all <<test-component,Camel Test>> modules
* camel-gae has been removed (was not working anyway)
* The access in the link:rest-dsl.html[Rest DSL] has been deprecated and
no longer in use - its not part of swagger specification anymore.
diff --git a/docs/user-manual/en/release-notes/camel-2190-release.adoc
b/docs/user-manual/en/release-notes/camel-2190-release.adoc
index 5a0d840bc73..6b765ef8f0d 100644
--- a/docs/user-manual/en/release-notes/camel-2190-release.adoc
+++ b/docs/user-manual/en/release-notes/camel-2190-release.adoc
@@ -62,7 +62,7 @@ The
https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=13979[bean
component will when calling a method that returned an instance of
`Callable` now call that callable to obtain the chained result. This
allows to call Groovy functions/closures etc.
-* Failover link:load-balancer.html[Load Balancer] with
+* Failover <<loadBalance-eip,Load Balancer>> with
inheritErrorHandler=false, now allows
Camel's link:error-handler.html[Error Handler] to react after the load
balancer is exhausted.
@@ -74,7 +74,7 @@ now include namespaces which will be associated on xpath
expressions.
* Added `RouteIdFactory` which can auto assign route ids based on the
consumer endpoints to use more sensitible names, instead of route1,
route2, etc.
-* Add `skip` function to link:simple.html[Simple] language
+* Add `skip` function to <<simple-language,Simple>> language
* Upgraded to Jetty 9.3 (Jetty 9.2 still supported for Karaf 4.0.x
users)
* `RouteBuilder` auto-configuration can now be disabled
@@ -147,7 +147,7 @@ only succesful started routes are added.
* Adding or removing routes that starts
from link:undertow.html[Undertow] no longer restart the entire HTTP
server
-* link:vm.html[VM] endpoint should prepare exchange with the
+* <<vm-component,VM>> endpoint should prepare exchange with the
CamelContext from the consumer and not from cached endpoint which can be
different
* Fixed a bug when using link:rest-dsl.html[Rest DSL]
@@ -156,7 +156,7 @@ Stream closed exception when using <<bean-component,Bean>>
in the route.
* Fixed an issue when using `pipeline` in Java DSL not setting up the
EIP correctly which could lead to runtime route not as intended.
* Fixed link:dropbox.html[Dropbox] to
-use link:stream-caching.html[Stream caching] to avoid reading entire
+use link:stream-caching.adoc[Stream caching] to avoid reading entire
file into memory so Camel can process big files
* Fixed `toD` issue with splitting uris when RAW values had + sign
* Fixed adviceWith may behave differently when using multiple advices in
@@ -166,7 +166,7 @@ work with Camel XML
* Fixed link:ftp2.html[FTP2] readLock=changed not working (when
fastFileExists=false) if no sub folder was specified as starting
directory.
-* Fixed link:simple.html[Simple] language when using indexing with a
+* Fixed <<simple-language,Simple>> language when using indexing with a
nested function
* Fixed issue with `@Consume` not having `CamelContext` injected and its
lifecycle managed by `CamelContext`
diff --git a/docs/user-manual/en/release-notes/camel-2200-release.adoc
b/docs/user-manual/en/release-notes/camel-2200-release.adoc
index 4bba4d6eb61..c328d4b5fcd 100644
--- a/docs/user-manual/en/release-notes/camel-2200-release.adoc
+++ b/docs/user-manual/en/release-notes/camel-2200-release.adoc
@@ -50,7 +50,7 @@ started last - when all resources should be available, and
stopped first
- while all resources are still available
* The link:sql-stored-procedure.html[SQL Stored Procedure] now supports
specifying custom types as FQN classnames and scale in numeric values.
-* Using Camel with link:spring.adoc[Spring] now supports calling
+* Using Camel with link:../spring.adoc[Spring] now supports calling
<<bean-component,Bean>> by their FQN name and let Spring instantiate the
bean using auto-wired constructor's as opposed to only supporting a
no-arg constructor.
@@ -60,14 +60,14 @@ include or exclude class names, which can be configured
using Spring
configuration properties.
* The link:wire-tap.html[Wire Tap] EIP can now be configured to use
static endpoint uri instead of being dynamic evaluated via the
-link:simple.html[Simple] language.
+<<simple-language,Simple>> language.
* The link:wire-tap.html[Wire Tap] EIP will now complete any inflight
wire tapped exchanges while shutting down to give them time to complete
graceful.
* The link:jsonpath.html[JSonPath] can now split and write each row as a
string value (JSon format) instead of using a Map/POJO type with the new
writeAsString option.
-* The link:pojo-consuming.html[POJO Consuming] Consume annotation on
+* The link:pojo-consuming.adoc[POJO Consuming] Consume annotation on
POJO classes now support a predicate (using simple language) to filter
the message. See the camel-example-spring-boot-pojo for more.
* The internal JSon parser that is used by camel-catalog and runtime
@@ -113,7 +113,7 @@ failure and react accordingly to run in half-open mode as
well.
* Fixed link:mdc-logging.html[MDC logging] loosing route id after
calling a direct route from within a transacted route
* Fixed a regression with <<bean-component,Bean>>
-and link:simple.html[Simple] OGNL expressions causing ambiguous method
+and <<simple-language,Simple>> OGNL expressions causing ambiguous method
call exception when calling method implemented by super class when
method is defined by interface and abstract class
* Fixed link:rest-dsl.html[Rest DSL] (server side) not returning
@@ -121,7 +121,7 @@ response on all valid uri paths when clients call using a
HTTP OPTIONS
request
* Fixed link:rest.html[Rest] producer not using HTTP method (verb such
as PUT) from the endpoint uri when calling a remote REST service
-* Fixed link:timer.html[Timer] routes to shutdown more graceful and
+* Fixed <<timer-component,Timer>> routes to shutdown more graceful and
allow pending tasks to complete while they are in-flight.
* Fixed configuring link:rest-dsl.html[Rest DSL] via
application.properties|yaml in link:spring-boot.html[Spring Boot] not
diff --git a/docs/user-manual/en/release-notes/camel-2210-release.adoc
b/docs/user-manual/en/release-notes/camel-2210-release.adoc
index 112806989da..85e95a0fa4a 100644
--- a/docs/user-manual/en/release-notes/camel-2210-release.adoc
+++ b/docs/user-manual/en/release-notes/camel-2210-release.adoc
@@ -38,7 +38,7 @@ FTP server (which can be slow if the FTP server has many
files in the
LIST results)
* Camel link:../json.adoc[JSON] with camel-jackson will now automatic use
shared ObjectMapper instance if there is only one instance in
-the link:registry.adoc[Registry]. For example users with Spring Boot
+the link:../registry.adoc[Registry]. For example users with Spring Boot
then allows Camel to easily use the default mapper from Spring Boot.
* Added `ExtendedStartupListener` that allows a callback just after the
CamelContext has been fully started.
@@ -102,7 +102,7 @@ The following issues has been fixed
later and after CamelContext has been fully started.
* Fixed an issue testing with @UseAdviceWith and Camel on Spring Boot.
* Fixed link:oncompletion.html[OnCompletion] would not be triggered from
-a route using link:splitter.html[Splitter] and an exception was thrown
+a route using <<split-eip,Splitter>> and an exception was thrown
during splitting.
* Fixed link:kafka.html[Kafka] consumer stops consuming messages when
exception occurs during offset commit.
diff --git a/docs/user-manual/en/route-policy.adoc
b/docs/user-manual/en/route-policy.adoc
index c65c73ff580..ba326a1fb10 100644
--- a/docs/user-manual/en/route-policy.adoc
+++ b/docs/user-manual/en/route-policy.adoc
@@ -61,8 +61,8 @@ operations as it support fallback for regular
==== `ThrottlingInflightRoutePolicy`
The *`ThrottlingInflightRoutePolicy`* is triggered when an
-link:exchange.html[Exchange] is complete, which means that it requires
-at least one link:exchange.html[Exchange] to be complete before it
+link:exchange.adoc[Exchange] is complete, which means that it requires
+at least one link:exchange.adoc[Exchange] to be complete before it
_works_.
The throttling inflight route policy has the following options:
diff --git a/docs/user-manual/en/scripting-languages.adoc
b/docs/user-manual/en/scripting-languages.adoc
index a1f3a2fbc6f..5552ed40ed1 100644
--- a/docs/user-manual/en/scripting-languages.adoc
+++ b/docs/user-manual/en/scripting-languages.adoc
@@ -171,5 +171,5 @@ See Also
* Languages
* link:dsl.adoc[DSL]
-* Xml Configuration
+* XML Configuration
diff --git a/docs/user-manual/en/spring-testing.adoc
b/docs/user-manual/en/spring-testing.adoc
index a38278bb693..620c0e79698 100644
--- a/docs/user-manual/en/spring-testing.adoc
+++ b/docs/user-manual/en/spring-testing.adoc
@@ -257,7 +257,7 @@ details on the registration of the mock endpoints. |Not
enabled |All endpoints a
|org.apache.camel.test.spring.MockEndpointsAndSkip |Class |Triggers the
auto-mocking of endpoints whose URIs match the provided
filter. The default filter is "*", which matches all endpoints.
- See
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToMockEndpointStrategy.java?view=markup[org.apache.camel.impl.InterceptSendToMockEndpointStrategy]
for more
+ See
https://github.com/apache/camel/blob/master/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToMockEndpointStrategy.java[org.apache.camel.impl.InterceptSendToMockEndpointStrategy]
for more
details on the registration of the mock endpoints. This annotation will
also skip sending the message to matched endpoints as well. |Not enabled |All
endpoints are sniffed and recorded in a mock endpoint. The original
endpoint is not invoked.
diff --git a/docs/user-manual/en/spring.adoc b/docs/user-manual/en/spring.adoc
index df995377740..0d86765bf06 100644
--- a/docs/user-manual/en/spring.adoc
+++ b/docs/user-manual/en/spring.adoc
@@ -4,7 +4,7 @@
Apache Camel is designed to work nicely with the Spring Framework in a number
of ways.
* Camel uses Spring Transactions as the default transaction handling in
components like JMS and JPA
-* Camel works with Spring 2 XML processing with the Xml Configuration
+* Camel works with Spring 2 XML processing with the XML Configuration
* Camel Spring XML Schema's is defined at Xml Reference
* Camel supports a powerful version of Spring Remoting which can use powerful
routing between the client and server side along with using all of the
available Components for the transport
* Camel provides powerful Bean Integration with any bean defined in a Spring
ApplicationContext.
@@ -228,7 +228,7 @@ protected Class[] excludeRoutes() {
Using Spring XML
~~~~~~~~~~~~~~~~
-You can use Spring 2.0 XML configuration to specify your Xml Configuration for
link:routes.adoc[Routes] such as in the following
http://svn.apache.org/repos/asf/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/routingUsingCamelContextFactory.xml[example].
+You can use Spring 2.0 XML configuration to specify your XML Configuration for
link:routes.adoc[Routes] such as in the following
http://svn.apache.org/repos/asf/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/routingUsingCamelContextFactory.xml[example].
[source,xml]
--------------------------------------------------------------------------------------------------------------
<camelContext id="camel-A" xmlns="http://camel.apache.org/schema/spring">
diff --git a/docs/user-manual/en/vtd-xml.adoc b/docs/user-manual/en/vtd-xml.adoc
deleted file mode 100644
index aae8e5083f5..00000000000
--- a/docs/user-manual/en/vtd-xml.adoc
+++ /dev/null
@@ -1,51 +0,0 @@
-[[VTD-XML-VTD-XML]]
-=== VTD-XML
-
-*Available as of Camel 2.10*
-
-The VTD-XML component supports the
-http://vtd-xml.sourceforge.net/[VTD-XML Library] for very fast and
-efficient <<xpath-language,XPath>> processing. The *camel-vtdxml* library
-is provided by the https://github.com/camel-extra/camel-extra[Camel Extra]
-project which hosts all *GPL* related components for Camel.
-
-[[VTD-XML-Using]]
-==== Using
-
-The VTD-XML is implemented as a Camel <<language-component,Language>> which
-allows you to easily use it in the Camel routes. This component is particular
efficient for splitting files or other big
-payloads.
-
-For example to split a big file containing many persons, you could do:
-
-[source,java]
-----
-from("file:inbox")
- .split().vtdxml("/persons/person").streaming()
- .to("activemq:queue:person")
- .end()
-----
-
-And in XML DSL:
-
-[source,xml]
-----
-<route>
- <from uri="file:inbox"/>
- <split streaming="true">
- <vtdxml>/persons/person</vtdxml>
- <to uri="activemq:queue:person"/>
- </split>
-</route>
-----
-
-This will run the <<split-eip,Splitter>> in streaming mode using
-the *vtdxml* language.
-
-[[VTD-XML-SeeAlso]]
-==== See Also
-
-* link:configuring-camel.adoc[Configuring Camel]
-* link:component.adoc[Component]
-* link:endpoint.adoc[Endpoint]
-* link:getting-started.adoc[Getting Started]
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
> Migrate the rest of the Confluence content
> ------------------------------------------
>
> Key: CAMEL-11497
> URL: https://issues.apache.org/jira/browse/CAMEL-11497
> Project: Camel
> Issue Type: Sub-task
> Components: website
> Reporter: Zoran Regvart
> Assignee: Önder Sezgin
> Priority: Major
> Fix For: Future
>
>
> There are still pages in the Confluence that are not migrated to Asciidoctor
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)