This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch faq4
in repository https://gitbox.apache.org/repos/asf/camel.git

commit db43c1e22d15b70af1b357fc87e44aa72d274dad
Author: Claus Ibsen <[email protected]>
AuthorDate: Sun Mar 8 12:50:33 2026 +0100

    CAMEL-16861: Cleanup docs
---
 .../camel-http/src/main/docs/http-component.adoc   |  62 ++++++++
 .../src/main/docs/xslt-saxon-component.adoc        |   3 +-
 .../camel-xslt/src/main/docs/xslt-component.adoc   |   3 +-
 .../src/main/java/org/apache/camel/Exchange.java   |   9 --
 .../src/main/docs/modules/eips/pages/log-eip.adoc  |   2 +-
 .../src/main/docs/modules/eips/pages/to-eip.adoc   | 170 +++++++++++++++++++++
 .../modules/ROOT/pages/stream-caching.adoc         |  16 ++
 docs/user-manual/modules/faq/nav.adoc              |  11 +-
 ...http-protocol-headers-in-the-camel-message.adoc |  41 -----
 .../faq/pages/how-to-use-a-dynamic-uri-in-to.adoc  |  52 -------
 docs/user-manual/modules/faq/pages/index.adoc      |   9 --
 .../using-getin-or-getout-methods-on-exchange.adoc | 130 ----------------
 .../faq/pages/why-is-my-message-body-empty.adoc    |  18 ---
 .../dsl/jbang/core/commands/mcp/DiagnoseTools.java |   3 +-
 14 files changed, 255 insertions(+), 274 deletions(-)

diff --git a/components/camel-http/src/main/docs/http-component.adoc 
b/components/camel-http/src/main/docs/http-component.adoc
index f8a628ca668b..9a45aad4f75e 100644
--- a/components/camel-http/src/main/docs/http-component.adoc
+++ b/components/camel-http/src/main/docs/http-component.adoc
@@ -582,5 +582,67 @@ property.
 </bean>
 ----------------------------------------------------------------------------
 
+== Removing 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-cxf, etc.
+
+If you are using these component, you may pay attention to the HTTP protocol 
headers:
+
+[source,text]
+----
+  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 using xref:eips:removeHeaders-eip.adoc[Remove Headers] 
EIP as follows:
+
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("jetty://http://myhost:9000/myservice/";)
+  .removeHeaders("CamelHttp*")
+  .to("otherEndpoint");
+----
+
+XML::
++
+[source,xml]
+----
+<route>
+  <from uri="jetty://http://myhost:9000/myservice/"/>
+  <removeHeaders pattern="CamelHttp*" />
+  <to uri="otherEndpoint"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+    from:
+      uri: jetty://http://myhost:9000/myservice/
+      steps:
+        - removeHeaders:
+            pattern: "CamelHttp*"
+        - to:
+            uri: otherEndpoint
+----
+
+====
 
 include::spring-boot:partial$starter.adoc[]
diff --git 
a/components/camel-xslt-saxon/src/main/docs/xslt-saxon-component.adoc 
b/components/camel-xslt-saxon/src/main/docs/xslt-saxon-component.adoc
index 98601b1a3320..a550affe41e7 100644
--- a/components/camel-xslt-saxon/src/main/docs/xslt-saxon-component.adoc
+++ b/components/camel-xslt-saxon/src/main/docs/xslt-saxon-component.adoc
@@ -201,8 +201,7 @@ With Spring XML:
 
 To provide a dynamic stylesheet at runtime, you can either:
 
-- Define a dynamic URI. See 
xref:manual:faq:how-to-use-a-dynamic-uri-in-to.adoc[How to use a dynamic URI in
-`to()`] for more information.
+- Define a dynamic URI. See xref:eips:toD-eip.adoc[toD] EIP.
 - Use header with the stylesheet.
 
 When using a header for dynamic stylesheet, then you can either refer to the 
stylesheet as a `file` or `classpath`
diff --git a/components/camel-xslt/src/main/docs/xslt-component.adoc 
b/components/camel-xslt/src/main/docs/xslt-component.adoc
index 1c953c00997b..85cfc8f6f17b 100644
--- a/components/camel-xslt/src/main/docs/xslt-component.adoc
+++ b/components/camel-xslt/src/main/docs/xslt-component.adoc
@@ -160,8 +160,7 @@ You can explicitly specify `file:` or `classpath:` loading. 
The two loading type
 
 To provide a dynamic stylesheet at runtime, you can either:
 
-- Define a dynamic URI. See 
xref:manual:faq:how-to-use-a-dynamic-uri-in-to.adoc[How to use a dynamic URI in
-to()] for more information.
+- Define a dynamic URI. See xref:eips:toD-eip.adoc[toD] EIP.
 - Use header with the stylesheet.
 
 When using a header for dynamic stylesheet, then you can either refer to the 
stylesheet as a `file` or `classpath`
diff --git a/core/camel-api/src/main/java/org/apache/camel/Exchange.java 
b/core/camel-api/src/main/java/org/apache/camel/Exchange.java
index fc54ffd4cdad..690521064693 100644
--- a/core/camel-api/src/main/java/org/apache/camel/Exchange.java
+++ b/core/camel-api/src/main/java/org/apache/camel/Exchange.java
@@ -60,9 +60,6 @@ import org.apache.camel.spi.annotations.ConstantProvider;
  * {@link Message} are not automatically copied to the out by Camel, and 
you'll have to set the headers and attachments
  * you need yourself. If your {@link Processor} is not producing a different 
{@link Message} but only needs to slightly
  * modify the in, you can simply update the in {@link Message} returned by 
{@link #getIn()}.
- * <p/>
- * See this <a 
href="http://camel.apache.org/using-getin-or-getout-methods-on-exchange.html";>FAQ
 entry</a> for more
- * details.
  */
 @ConstantProvider("org.apache.camel.ExchangeConstantProvider")
 public interface Exchange extends VariableAware {
@@ -588,9 +585,6 @@ public interface Exchange extends VariableAware {
      * <p/>
      * <br/>
      * If you want to test whether an OUT message has been set or not, use the 
{@link #hasOut()} method.
-     * <p/>
-     * See also the class Javadoc for this {@link Exchange} for more details 
and this
-     * <a 
href="http://camel.apache.org/using-getin-or-getout-methods-on-exchange.html";>FAQ
 entry</a>.
      *
      * @return     the response
      * @see        #getIn()
@@ -608,9 +602,6 @@ public interface Exchange extends VariableAware {
      * <p/>
      * <br/>
      * If you want to test whether an OUT message has been set or not, use the 
{@link #hasOut()} method.
-     * <p/>
-     * See also the class Javadoc for this {@link Exchange} for more details 
and this
-     * <a 
href="http://camel.apache.org/using-getin-or-getout-methods-on-exchange.html";>FAQ
 entry</a>.
      *
      * @param      type the given type
      * @return          the message as the given type or <tt>null</tt> if not 
possible to covert to given type
diff --git 
a/core/camel-core-engine/src/main/docs/modules/eips/pages/log-eip.adoc 
b/core/camel-core-engine/src/main/docs/modules/eips/pages/log-eip.adoc
index 2cfb9e696539..3af2f959b90d 100644
--- a/core/camel-core-engine/src/main/docs/modules/eips/pages/log-eip.adoc
+++ b/core/camel-core-engine/src/main/docs/modules/eips/pages/log-eip.adoc
@@ -127,7 +127,7 @@ to construct the `String` containing the message to be 
logged.
 
 === Logging message body with streaming
 
-If the message body is stream based, then logging the message body may cause 
the message body to be empty afterward. See this 
xref:manual:faq:why-is-my-message-body-empty.adoc[FAQ]. For streamed messages, 
you can use Stream caching to allow logging the message body and be able to 
read the message body afterward again.
+If the message body is stream based, then logging the message body may cause 
the message body to be empty afterward. For streamed messages, you can use 
xref:manual::stream-caching.adoc[Stream caching] to allow logging the message 
body and be able to read the message body afterward again.
 
 [tabs]
 ====
diff --git 
a/core/camel-core-engine/src/main/docs/modules/eips/pages/to-eip.adoc 
b/core/camel-core-engine/src/main/docs/modules/eips/pages/to-eip.adoc
index 7b0e544c1d00..bb3ba9be0cc0 100644
--- a/core/camel-core-engine/src/main/docs/modules/eips/pages/to-eip.adoc
+++ b/core/camel-core-engine/src/main/docs/modules/eips/pages/to-eip.adoc
@@ -84,3 +84,173 @@ YAML::
             uri: jms:queue:foo
 ----
 ====
+
+== 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.
+
+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.
+====
+
+[tabs]
+====
+Java::
++
+[source,java]
+----
+from("file:messages/foo")
+    .to("freemarker://templateHome/${body.templateName}.ftl")
+    .to("jms:queue:foo");
+----
+
+XML::
++
+[source,xml]
+----
+<route>
+    <from uri="file:messages/foo"/>
+    <to uri="freemarker://templateHome/${body.templateName}.ftl"/>
+    <to uri="jms:queue:foo"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+    from:
+      uri: file:messages/foo
+      steps:
+        - to:
+            uri: "freemarker://templateHome/${body.templateName}.ftl"
+        - to:
+            uri: jms:queue:foo
+----
+====
+
+In this case, you must use an EIP (Enterprise Integration Pattern) that
+is capable of computing a dynamic URI using
+an xref:manual::expression.adoc[Expression], such as
+the xref:components:eips:toD-eip.adoc[toD] or 
xref:components:eips:recipientList-eip.adoc[Recipient List] EIP pattern.
+
+[TIP]
+====
+*This is valid code*
+
+This snippet is valid code.
+====
+
+To fix the above problem we can use either toD or recipientList.
+Using toD is easier as shown below:
+
+[tabs]
+====
+Java::
++
+Use `toD` for dynamic URIs
++
+[source,java]
+----
+from("file:messages/foo")
+    .toD("freemarker://templateHome/${body.templateName}.ftl")
+    .to("jms:queue:foo");
+----
+
+XML::
++
+Use `<toD>` for dynamic URIs
++
+[source,xml]
+----
+<route>
+    <from uri="file:messages/foo"/>
+    <toD uri="freemarker://templateHome/${body.templateName}.ftl"/>
+    <to uri="jms:queue:foo"/>
+</route>
+----
+
+YAML::
++
+Use `- toD:` for dynamic URIs
++
+[source,yaml]
+----
+- route:
+    from:
+      uri: file:messages/foo
+      steps:
+        - toD:
+            uri: "freemarker://templateHome/${body.templateName}.ftl"
+        - to:
+            uri: jms:queue:foo
+----
+====
+
+When using recipient list:
+
+[source,java]
+----
+.recipientList(simple("freemarker://templateHome/${body.templateName}.ftl"))
+----
+
+[tabs]
+====
+Java::
++
+Use `recipientList` for more flexible and dynamic URIs
++
+[source,java]
+----
+from("file:messages/foo")
+    
.recipientList(simple("freemarker://templateHome/${body.templateName}.ftl"))
+    .to("jms:queue:foo");
+----
+
+XML::
++
+Use `<recipientList>` for more flexible and dynamic URIs
++
+[source,xml]
+----
+<route>
+    <from uri="file:messages/foo"/>
+    <recipientList>
+        <simple>freemarker://templateHome/${body.templateName}.ftl</simple>
+    </recipientList>
+    <to uri="jms:queue:foo"/>
+</route>
+----
+
+YAML::
++
+Use `- recipientList:` for more flexible and dynamic URIs
++
+[source,yaml]
+----
+- route:
+    from:
+      uri: file:messages/foo
+      steps:
+        - recipientList:
+            expression:
+              simple:
+                expression: 
"freemarker://templateHome/${body.templateName}.ftl"
+        - to:
+            uri: jms:queue:foo
+----
+====
+
+
+
+
diff --git a/docs/user-manual/modules/ROOT/pages/stream-caching.adoc 
b/docs/user-manual/modules/ROOT/pages/stream-caching.adoc
index cacd2bf15244..c3e331d2a88a 100644
--- a/docs/user-manual/modules/ROOT/pages/stream-caching.adoc
+++ b/docs/user-manual/modules/ROOT/pages/stream-caching.adoc
@@ -6,6 +6,22 @@ Streams are cached in memory. However, for large stream 
messages, you can set `s
 and then large message (over 128 KB) will be cached in a temporary file 
instead.
 Camel itself will handle deleting the temporary file once the cached stream is 
no longer necessary.
 
+== 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 comes with Stream Caching that caches the stream, so it can be 
re-readable.
+
 [IMPORTANT]
 ====
 *StreamCache - Affecting the message payload*
diff --git a/docs/user-manual/modules/faq/nav.adoc 
b/docs/user-manual/modules/faq/nav.adoc
index ce01dab121e3..84ff14197567 100644
--- a/docs/user-manual/modules/faq/nav.adoc
+++ b/docs/user-manual/modules/faq/nav.adoc
@@ -1,13 +1,8 @@
 * xref:index.adoc[FAQ]
-** xref:can-i-get-commercial-support.adoc[Can I get commercial support?]
+** xref:what-is-camel.adoc[What is Camel?]
 ** link:/community/support/[How can I get help?]
+** xref:can-i-get-commercial-support.adoc[Can I get commercial support?]
 ** xref:how-can-i-get-the-source-code.adoc[How can I get the source code?]
+** xref:how-do-i-edit-the-website.adoc[How do I edit the documentation?]
 ** xref:how-do-i-become-a-committer.adoc[How do I become a committer?]
-** xref:how-do-i-edit-the-website.adoc[How do I edit the website?]
-** xref:what-is-camel.adoc[What is Camel?]
-** xref:ROOT:languages.adoc[What languages are supported?]
 ** xref:why-the-name-camel.adoc[Why the name Camel?]
-** xref:how-to-remove-the-http-protocol-headers-in-the-camel-message.adoc[How 
to remove the http protocol headers in the camel message?]
-** xref:how-to-use-a-dynamic-uri-in-to.adoc[How to use a dynamic URI in to()?]
-** xref:using-getin-or-getout-methods-on-exchange.adoc[Using getIn or getOut 
methods on Exchange]
-** xref:why-is-my-message-body-empty.adoc[Why is my message body empty?]
diff --git 
a/docs/user-manual/modules/faq/pages/how-to-remove-the-http-protocol-headers-in-the-camel-message.adoc
 
b/docs/user-manual/modules/faq/pages/how-to-remove-the-http-protocol-headers-in-the-camel-message.adoc
deleted file mode 100644
index a4e48645f7e5..000000000000
--- 
a/docs/user-manual/modules/faq/pages/how-to-remove-the-http-protocol-headers-in-the-camel-message.adoc
+++ /dev/null
@@ -1,41 +0,0 @@
-= 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-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/";)
-    .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/modules/faq/pages/how-to-use-a-dynamic-uri-in-to.adoc 
b/docs/user-manual/modules/faq/pages/how-to-use-a-dynamic-uri-in-to.adoc
deleted file mode 100644
index a2b91b31d62d..000000000000
--- a/docs/user-manual/modules/faq/pages/how-to-use-a-dynamic-uri-in-to.adoc
+++ /dev/null
@@ -1,52 +0,0 @@
-= 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.
-
-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 xref:ROOT:expression.adoc[Expression], such as
-the xref:components:eips:toD-eip.adoc[ToD] or 
xref:components:eips:recipientList-eip.adoc[Recipient List] EIP pattern.
-
-[TIP]
-====
-*This is valid code*
-
-This snippet is valid code.
-====
-
-To fix the above problem we can use either toD or recipientList.
-Using toD is easier as shown below:
-
-[source,java]
-----
-.toD("freemarker://templateHome/${body.templateName}.ftl")
-----
-
-When using recipient list:
-[source,java]
-----
-.recipientList(simple("freemarker://templateHome/${body.templateName}.ftl"))
-----
-
-
-
-
-
diff --git a/docs/user-manual/modules/faq/pages/index.adoc 
b/docs/user-manual/modules/faq/pages/index.adoc
index a90c274e152c..6436c33302ed 100644
--- a/docs/user-manual/modules/faq/pages/index.adoc
+++ b/docs/user-manual/modules/faq/pages/index.adoc
@@ -22,13 +22,4 @@ General questions about Camel
 * xref:ROOT:languages.adoc[What languages are supported?]
 * xref:why-the-name-camel.adoc[Why the name Camel?]
 
-[[FAQ-UsingCamelQuestions]]
-== Using Camel Questions
-
-Questions on using Apache Camel
-
-* xref:how-to-remove-the-http-protocol-headers-in-the-camel-message.adoc[How 
to remove the http protocol headers in the camel message?]
-* xref:how-to-use-a-dynamic-uri-in-to.adoc[How to use a dynamic URI in to()?]
-* xref:using-getin-or-getout-methods-on-exchange.adoc[Using getIn or getOut 
methods on Exchange]
-* xref:why-is-my-message-body-empty.adoc[Why is my message body empty?]
 
diff --git 
a/docs/user-manual/modules/faq/pages/using-getin-or-getout-methods-on-exchange.adoc
 
b/docs/user-manual/modules/faq/pages/using-getin-or-getout-methods-on-exchange.adoc
deleted file mode 100644
index f34a45b10984..000000000000
--- 
a/docs/user-manual/modules/faq/pages/using-getin-or-getout-methods-on-exchange.adoc
+++ /dev/null
@@ -1,130 +0,0 @@
-= 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
-(xref:components:eips:event-message.adoc[InOnly]) or request-reply
-(xref:components:eips:requestReply-eip.adoc[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 xref:ROOT: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::using-getin-or-getout-methods-on-exchange/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 xref:ROOT: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 xref:ROOT:processor.adoc[Processor].
-However there is an big issue -- the `getOut` method will create a new
-xref:components:eips:message.adoc[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 xref:components:eips:message.adoc[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 xref:ROOT:exchange.adoc[Exchange] has no OUT
-message and therefore use the IN message instead.
-
-[[UsinggetInorgetOutmethodsonExchange-AboutMessageExchangePatternandgetOut]]
-== About Message Exchange Pattern and getOut
-
-If the xref:ROOT:exchange.adoc[Exchange] is using `InOnly` as the MEP, then
-you may think that the xref:ROOT:exchange.adoc[Exchange] has no OUT
-message. But you can still invoke the `getOut` method on
-xref:ROOT: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 xref:ROOT:exchange.adoc[Exchange] which the Consumer and
-Producer adhere to.
-You can change the MEP on the xref:ROOT:exchange.adoc[Exchange] using the
-`setPattern` method. And likewise there is DSL to change it as well.
diff --git 
a/docs/user-manual/modules/faq/pages/why-is-my-message-body-empty.adoc 
b/docs/user-manual/modules/faq/pages/why-is-my-message-body-empty.adoc
deleted file mode 100644
index 8795a1813885..000000000000
--- a/docs/user-manual/modules/faq/pages/why-is-my-message-body-empty.adoc
+++ /dev/null
@@ -1,18 +0,0 @@
-= 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 xref:ROOT: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/dsl/camel-jbang/camel-jbang-mcp/src/main/java/org/apache/camel/dsl/jbang/core/commands/mcp/DiagnoseTools.java
 
b/dsl/camel-jbang/camel-jbang-mcp/src/main/java/org/apache/camel/dsl/jbang/core/commands/mcp/DiagnoseTools.java
index 261370e549e8..879063c6e283 100644
--- 
a/dsl/camel-jbang/camel-jbang-mcp/src/main/java/org/apache/camel/dsl/jbang/core/commands/mcp/DiagnoseTools.java
+++ 
b/dsl/camel-jbang/camel-jbang-mcp/src/main/java/org/apache/camel/dsl/jbang/core/commands/mcp/DiagnoseTools.java
@@ -275,8 +275,7 @@ public class DiagnoseTools {
                         "Check available components with 'camel-catalog' or 
the Camel documentation",
                         "Ensure the component JAR is on the classpath"),
                 Arrays.asList(
-                        CAMEL_MANUAL_DOC + "component.html",
-                        CAMEL_MANUAL_DOC + 
"faq/why-is-my-message-body-empty.html")));
+                        CAMEL_MANUAL_DOC + "component.html")));
 
         exceptions.put("ResolveEndpointFailedException", new ExceptionInfo(
                 "Failed to resolve or create an endpoint from the given URI. 
The URI syntax may be invalid or required options may be missing.",

Reply via email to