[ 
https://issues.apache.org/jira/browse/CAMEL-24792?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andrea Cosentino reassigned CAMEL-24792:
----------------------------------------

    Assignee: Andrea Cosentino

> camel-aws2-ddb: setHeaderIfNotPresent in Ddb2JsonDataTypeTransformer always 
> overwrites the header
> -------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-24792
>                 URL: https://issues.apache.org/jira/browse/CAMEL-24792
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-aws2
>            Reporter: Andrea Cosentino
>            Assignee: Andrea Cosentino
>            Priority: Major
>
> h3. Summary
> {{Ddb2JsonDataTypeTransformer.setHeaderIfNotPresent(String, Object, 
> Message)}} does not do what its name says - the body is an unconditional 
> {{message.setHeader(headerName, value)}} with no presence check:
> {code:java}
> private void setHeaderIfNotPresent(String headerName, Object value, Message 
> message) {
>     message.setHeader(headerName, value);
> }
> {code}
> It has been this way since the method was introduced in 2023.
> h3. Effect
> The three call sites all pass {{Ddb2Constants.RETURN_VALUES}}, so a 
> {{CamelAwsDdbReturnValues}} header set by the route before the transformer 
> runs is silently replaced by the transformer default ({{ALL_OLD}} for 
> {{PutItem}}/{{DeleteItem}}, {{ALL_NEW}} for {{UpdateItem}}). There is 
> currently no way to choose a different {{ReturnValue}} through the 
> transformer.
> h3. Proposal
> Add the missing presence check so an explicitly set header wins, matching the 
> method name and the evident intent. Add a unit test covering both branches 
> (header absent -> default applied; header present -> preserved), and note the 
> behaviour change in the 4.23 upgrade guide.



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

Reply via email to