[ 
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)

Reply via email to