You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by si...@apache.org on 2017/06/30 10:55:58 UTC

camel git commit: CAMEL-11486: NullPointerException for invalid payload with session handling enabled

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 <st...@sap.com>
Authored: Fri Jun 30 12:52:39 2017 +0200
Committer: Stephan Siano <st...@sap.com>
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");
             }
         };
     }