[ 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