You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Federico Mariani (Jira)" <ji...@apache.org> on 2026/07/16 13:21:00 UTC
[jira] [Updated] (CAMEL-24180) camel-cxf - CxfMessageHelper fallback drops non-InputStream message bodies (sets null)
[ https://issues.apache.org/jira/browse/CAMEL-24180?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Federico Mariani updated CAMEL-24180:
-------------------------------------
Attachment: CxfMessageHelperPojoBodyReproducerTest.java
> camel-cxf - CxfMessageHelper fallback drops non-InputStream message bodies (sets null)
> --------------------------------------------------------------------------------------
>
> Key: CAMEL-24180
> URL: https://issues.apache.org/jira/browse/CAMEL-24180
> Project: Camel
> Issue Type: Bug
> Components: camel-cxf
> Reporter: Federico Mariani
> Assignee: Federico Mariani
> Priority: Major
> Attachments: CxfMessageHelperPojoBodyReproducerTest.java
>
>
> *Severity:* High *[reproducer attached]*
> h3. Problem
> In the {{camel://}} transport, {{CxfMessageHelper.getCxfInMessage}} sets the CXF message content from the Camel body:
> {code:java}
> InputStream body = message.getBody(InputStream.class);
> if (body != null) {
> answer.setContent(InputStream.class, body);
> } else if (message.getBody() != null) {
> // fallback and set the body as what it is
> answer.setContent(Object.class, body); // body is provably null in this branch
> }
> {code}
> In the {{else if}} branch {{body}} is by definition {{null}} (that is the only way to reach it), so the "fallback and set the body as what it is" comment is not honoured - the intended value is {{message.getBody()}}. A copy-paste defect dormant since the 2010 module split; the existing {{CxfMessageHelperTest}} only covers String/DOMSource/File bodies (all InputStream-convertible), so the branch is untested.
> h3. Impact
> A Camel body with no registered {{InputStream}} type converter (e.g. a POJO) sent into a {{camel://}} destination, or returned to a {{camel://}} conduit, produces a CXF message with *no content*; downstream CXF interceptors see an empty message and fail with an unrelated parse/empty-envelope error.
> h3. Location
> {{components/camel-cxf/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/transport/message/CxfMessageHelper.java}} ~61-63.
> h3. Fix
> {code:java}
> answer.setContent(Object.class, message.getBody());
> {code}
> h3. Reproducer
> {{CxfMessageHelperPojoBodyReproducerTest}} (attached): a non-Serializable POJO body yields null CXF content. Fails on current {{main}}.
> ----
> _Filed by Claude Code (Claude Fable) on behalf of Federico Mariani (GitHub: Croway). Findings from an AI-assisted code review of the camel-cxf component family; each item was verified against the current source and git history. Items marked *[reproducer attached]* include a failing JUnit test that demonstrates the defect._
--
This message was sent by Atlassian Jira
(v8.20.10#820010)