Repository: camel Updated Branches: refs/heads/master 1c86ed716 -> f2e425e6a
CAMEL-11486: NullPointerException for invalid payload with session handling enabled Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/f2e425e6 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/f2e425e6 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/f2e425e6 Branch: refs/heads/master Commit: f2e425e6a15035d3393310f232bcc3689a70eed1 Parents: 1c86ed7 Author: Stephan Siano <[email protected]> Authored: Fri Jun 30 12:52:39 2017 +0200 Committer: Stephan Siano <[email protected]> Committed: Fri Jun 30 12:55:21 2017 +0200 ---------------------------------------------------------------------- .../org/apache/camel/component/cxf/CxfProducer.java | 7 +++++-- .../camel/component/cxf/CxfProducerSessionTest.java | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/f2e425e6/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java ---------------------------------------------------------------------- diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java index dcd92d8..cf0e37b 100644 --- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java +++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java @@ -176,8 +176,11 @@ public class CxfProducer extends DefaultProducer implements AsyncProcessor { // add cookies to the cookie store if (endpoint.getCookieHandler() != null) { try { - Map<String, List<String>> cxfHeaders = CastUtils.cast((Map<?, ?>)cxfExchange.getInMessage().get(Message.PROTOCOL_HEADERS)); - endpoint.getCookieHandler().storeCookies(camelExchange, endpoint.getRequestUri(camelExchange), cxfHeaders); + Message inMessage = cxfExchange.getInMessage(); + if (inMessage != null) { + Map<String, List<String>> cxfHeaders = CastUtils.cast((Map<?, ?>)inMessage.get(Message.PROTOCOL_HEADERS)); + endpoint.getCookieHandler().storeCookies(camelExchange, endpoint.getRequestUri(camelExchange), cxfHeaders); + } } catch (IOException e) { LOG.error("Cannot store cookies", e); } http://git-wip-us.apache.org/repos/asf/camel/blob/f2e425e6/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerSessionTest.java ---------------------------------------------------------------------- diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerSessionTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerSessionTest.java index 86ecd2f..104194b 100644 --- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerSessionTest.java +++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerSessionTest.java @@ -19,6 +19,7 @@ package org.apache.camel.component.cxf; import java.util.Collections; import java.util.Map; +import org.apache.camel.CamelExecutionException; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.http.common.cookie.ExchangeCookieHandler; import org.apache.camel.http.common.cookie.InstanceCookieHandler; @@ -101,6 +102,18 @@ public class CxfProducerSessionTest extends CamelTestSupport { assertMockEndpointsSatisfied(); } + @Test(expected = IllegalArgumentException.class) + public void testSessionWithInvalidPayload() throws Throwable { + try { + template.requestBody("direct:invalid", "World", String.class); + } catch (CamelExecutionException e) { + if (e.getCause() != null) { + throw e.getCause(); + } + throw e; + } + } + protected RouteBuilder createRouteBuilder() { return new RouteBuilder() { public void configure() { @@ -128,6 +141,8 @@ public class CxfProducerSessionTest extends CamelTestSupport { .to(url + "&cookieHandler=#exchangeCookieHandler") .setBody().xpath(PARAMETER_XPATH, String.class, NAMESPACES) .to("mock:result"); + from("direct:invalid") + .to(url + "&cookieHandler=#exchangeCookieHandler"); } }; }
