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.",
