[
https://issues.apache.org/jira/browse/CAMEL-3806?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen updated CAMEL-3806:
-------------------------------
Fix Version/s: 2.8.0
Btw which client put quotes in the value? I actually wonder if that's really
best practice, and allowed to do?
> SOAPAction HTTP header value not copied correctly to from CXF message to
> Camel message header
> ---------------------------------------------------------------------------------------------
>
> Key: CAMEL-3806
> URL: https://issues.apache.org/jira/browse/CAMEL-3806
> Project: Camel
> Issue Type: Bug
> Components: camel-cxf
> Affects Versions: 2.6.0
> Environment: camel-cxf, CXF consumer endpoint with PAYLOAD data
> format
> Reporter: Torsten Mielke
> Assignee: Willem Jiang
> Labels: CXF, HTTP, SOAPAction, header
> Fix For: 2.8.0
>
> Attachments: testcase.zip
>
>
> When using camel-cxf consumer endpoint with PAYLOAD data format, the
> SoapActionInInterceptor correctly strips off any double quotes surrounding
> the SOAPAction header value, e.g:
> {code}
> SOAPAction: "http://apache.org/hello_world_soap_http/greetMe"
> {code}
> and then sets this header on the message again:
> {code:title=SoapActionInInterceptor.java}
> public void handleMessage(SoapMessage message) throws Fault {
> String action = getSoapAction(message);
> if (!StringUtils.isEmpty(action)) {
> getAndSetOperation(message, action);
> }
> }
> {code}
> After the execution of getAndSetOperation(message, action), there are two
> SOAPAction headers set on the message. The original SOAPAction header value
> (with surrounding quotes) is part of the
> org.apache.cxf.message.Message.PROTOCOL_HEADERS. In addition the
> getAndSetOperation() method also adds
> SOAPAction=http://apache.org/hello_world_soap_http/greetMe header (without
> surrounding quotes).
> Later in
> org.apache.camel.component.cxf.DefaultCxfBinding.propagateHeadersFromCxfToCamel(),
> when the CXF message headers get copied to the Camel message, it only
> retrieves the org.apache.cxf.message.Message.PROTOCOL_HEADERS:
> {code}
> Map<String, List<String>> cxfHeaders =
> (Map)cxfMessage.get(Message.PROTOCOL_HEADERS);
> {code}
> The SOAPAction header in PROTOCOL_HEADERS wasn't changed by the
> SoapActionInInterceptor and hence still has enclosed double quotes. These
> headers then get copied to the Camel In message headers. The header that was
> set by the SoapActionInInterceptor
> SOAPAction=http://apache.org/hello_world_soap_http/greetMe does not get
> copied!
> If later in a Camel route a custom Camel Processor tries to resolve this
> SOAPAction header, it gets the the value with surrounding double quotes, but
> these should actually have been stripped off.
> This behavior is a bug.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira