You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (Jira)" <ji...@apache.org> on 2026/10/14 19:22:00 UTC

[jira] [Commented] (CAMEL-25585) camel-chunk - message body and header values are expanded as Chunk template code instead of printed literally

    [ https://issues.apache.org/jira/browse/CAMEL-25585?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18127236#comment-18127236 ] 

Claus Ibsen commented on CAMEL-25585:
-------------------------------------

Merged to main in https://github.com/apache/camel/pull/27721

_Claude Code on behalf of davsclaus_

> camel-chunk - message body and header values are expanded as Chunk template code instead of printed literally
> -------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-25585
>                 URL: https://issues.apache.org/jira/browse/CAMEL-25585
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-chunk
>            Reporter: Andrea Cosentino
>            Assignee: Andrea Cosentino
>            Priority: Minor
>             Fix For: 4.24.0
>
>
> h3. Description
> When camel-chunk renders a template that outputs a message value, the Chunk engine re-parses that value as template source and expands any Chunk tags contained in it, instead of printing the value literally. For example a template that prints the body:
> {noformat}
> This is the body {$body}
> {noformat}
> will, if the body itself contains Chunk markup, expand that markup rather than output it verbatim.
> The cause is that ChunkEndpoint populates the engine with Chunk.putAll(...) in ChunkEndpoint.onExchange (components/camel-chunk/src/main/java/org/apache/camel/component/chunk/ChunkEndpoint.java, around line 123). In the Chunk API a value set this way is parsed for tags and expanded; only Chunk.setLiteral(...) keeps a value literal. Camel never calls setLiteral.
> h3. Why this matters
> This is inconsistent with Camel's other template components (camel-freemarker, camel-velocity, camel-mustache), which substitute message data inertly: a body or header whose content happens to look like template markup is printed verbatim. In camel-chunk the same data is interpreted as template code.
> h3. Steps to reproduce
> Template themes/nested.chtml:
> {noformat}
> This is the body {$body}
> {noformat}
> Route:
> {noformat}
> from("direct:a").to("chunk://nested");
> {noformat}
> Send a message with header name=World and body:
> {noformat}
> {$headers.name}
> {noformat}
> h3. Expected
> {noformat}
> This is the body {$headers.name}
> {noformat}
> (the body printed literally)
> h3. Actual
> {noformat}
> This is the body World
> {noformat}
> (the body is re-parsed and the inner tag expanded)
> h3. Proposed fix
> Bind message data into the Chunk engine so values are treated literally (for example, use setLiteral for String values), so that only the route author's template file is parsed as template code. Add a regression test. While in this code, review the reuse of a single cached Chunk instance across exchanges.
> h3. Affected
> components/camel-chunk - main, camel-4.22.x, camel-4.18.x.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)