CAMEL-10449 - Set CXF SoapAction header correctly
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/bb1803c8 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/bb1803c8 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/bb1803c8 Branch: refs/heads/camel-2.18.x Commit: bb1803c8b799713d24169b642bdf756f3479aa8c Parents: 7530b37 Author: jpoth <poth.j...@gmail.com> Authored: Mon Nov 7 15:30:54 2016 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Mon Nov 7 20:24:58 2016 +0100 ---------------------------------------------------------------------- .../camel/component/cxf/DefaultCxfBinding.java | 1 + .../component/cxf/DefaultCxfBindingTest.java | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/bb1803c8/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java ---------------------------------------------------------------------- diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java index de771da..89acf0f 100644 --- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java +++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java @@ -728,6 +728,7 @@ public class DefaultCxfBinding implements CxfBinding, HeaderFilterStrategyAware // from the previous request or response propagated with the invocation context cxfContext.remove(Message.PROTOCOL_HEADERS); } + cxfContext.put(SoapBindingConstants.SOAP_ACTION, camelHeaders.get(SoapBindingConstants.SOAP_ACTION)); } protected static Object getContentFromCxf(Message message, DataFormat dataFormat, String encoding) { http://git-wip-us.apache.org/repos/asf/camel/blob/bb1803c8/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/DefaultCxfBindingTest.java ---------------------------------------------------------------------- diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/DefaultCxfBindingTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/DefaultCxfBindingTest.java index a700832..2ef1fd8 100644 --- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/DefaultCxfBindingTest.java +++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/DefaultCxfBindingTest.java @@ -45,6 +45,7 @@ import org.apache.camel.spi.HeaderFilterStrategy; import org.apache.camel.util.IOHelper; import org.apache.cxf.attachment.AttachmentImpl; import org.apache.cxf.binding.Binding; +import org.apache.cxf.binding.soap.SoapBindingConstants; import org.apache.cxf.endpoint.Client; import org.apache.cxf.endpoint.Endpoint; import org.apache.cxf.helpers.CastUtils; @@ -184,6 +185,23 @@ public class DefaultCxfBindingTest extends Assert { assertEquals("att-1", att.getId()); assertEquals("value 1", att.getHeader("attachment-header")); } + + @Test + public void testPopulateCxfSoapHeaderRequestFromExchange() { + DefaultCxfBinding cxfBinding = new DefaultCxfBinding(); + cxfBinding.setHeaderFilterStrategy(new DefaultHeaderFilterStrategy()); + Exchange exchange = new DefaultExchange(context); + org.apache.cxf.message.Exchange cxfExchange = new org.apache.cxf.message.ExchangeImpl(); + Map<String, Object> requestContext = new HashMap<>(); + + String expectedSoapActionHeader = "urn:hello:world"; + exchange.getIn().setHeader("soapAction", expectedSoapActionHeader); + + cxfBinding.populateCxfRequestFromExchange(cxfExchange, exchange, requestContext); + + String actualSoapActionHeader = (String)requestContext.get(SoapBindingConstants.SOAP_ACTION); + assertEquals(expectedSoapActionHeader,actualSoapActionHeader); + } @Test public void testPopupalteExchangeFromCxfResponse() {