Repository: camel
Updated Branches:
  refs/heads/camel-2.19.x d05005750 -> 7f87a25b2


CAMEL-11892 - breadcrumbId class cast failure if other than SAAJ used as 
WebServiceMessage impl


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/7f87a25b
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/7f87a25b
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/7f87a25b

Branch: refs/heads/camel-2.19.x
Commit: 7f87a25b2d5259f26b07bb5dc648ef8f7e8b4d3a
Parents: d050057
Author: onders86 <ondersezgin+git...@gmail.com>
Authored: Thu Oct 12 10:19:33 2017 +0300
Committer: onders86 <ondersezgin+git...@gmail.com>
Committed: Thu Oct 12 16:44:42 2017 +0300

----------------------------------------------------------------------
 components/camel-spring-ws/pom.xml              |  6 ++++++
 .../spring/ws/SpringWebserviceConsumer.java     | 20 +++++++++++++++++++-
 2 files changed, 25 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/7f87a25b/components/camel-spring-ws/pom.xml
----------------------------------------------------------------------
diff --git a/components/camel-spring-ws/pom.xml 
b/components/camel-spring-ws/pom.xml
index d3c5fa3..9e657ed 100644
--- a/components/camel-spring-ws/pom.xml
+++ b/components/camel-spring-ws/pom.xml
@@ -49,6 +49,12 @@
       <groupId>org.apache.camel</groupId>
       <artifactId>camel-spring</artifactId>
     </dependency>
+    <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>javax.servlet-api</artifactId>
+      <version>${javax.servlet-api-version}</version>
+      <scope>provided</scope>
+    </dependency>
 
     <!-- spring -->
     <dependency>

http://git-wip-us.apache.org/repos/asf/camel/blob/7f87a25b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConsumer.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConsumer.java
 
b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConsumer.java
index 19f40fc..fe32dac 100644
--- 
a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConsumer.java
+++ 
b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConsumer.java
@@ -18,6 +18,8 @@ package org.apache.camel.component.spring.ws;
 
 import java.util.Iterator;
 import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
 import javax.xml.namespace.QName;
 import javax.xml.soap.MimeHeaders;
 import javax.xml.soap.SOAPMessage;
@@ -82,7 +84,15 @@ public class SpringWebserviceConsumer extends 
DefaultConsumer implements Message
     }
     
     private void 
populateExchangeWithBreadcrumbFromMessageContext(MessageContext messageContext, 
Exchange exchange) {
-        SaajSoapMessage saajSoap = (SaajSoapMessage) 
messageContext.getRequest();
+        if (messageContext.getRequest() instanceof SaajSoapMessage) {
+            SaajSoapMessage saajSoap = (SaajSoapMessage) 
messageContext.getRequest();
+            populateExchangeWithBreadcrumbFromSaajMessage(exchange, saajSoap);
+        } else {
+            populateExchangeWithBreadcrumbFromMessageContext(exchange, 
messageContext);
+        }
+    }
+
+    private void populateExchangeWithBreadcrumbFromSaajMessage(Exchange 
exchange, SaajSoapMessage saajSoap) {
         SOAPMessage soapMessageRequest = null;
         if (saajSoap != null) {
             soapMessageRequest = saajSoap.getSaajMessage();
@@ -102,6 +112,14 @@ public class SpringWebserviceConsumer extends 
DefaultConsumer implements Message
         }
     }
 
+    private void populateExchangeWithBreadcrumbFromMessageContext(Exchange 
exchange, MessageContext messageContext) {
+        if (messageContext != null) {
+            HttpServletRequest obj = (HttpServletRequest) 
messageContext.getProperty("transport.http.servletRequest");
+            String breadcrumbId = (String) 
obj.getHeader(Exchange.BREADCRUMB_ID);
+            exchange.getIn().setHeader(Exchange.BREADCRUMB_ID, breadcrumbId);
+        }
+    }
+
     private void populateExchangeFromMessageContext(MessageContext 
messageContext, Exchange exchange) {
         populateExchangeWithPropertiesFromMessageContext(messageContext, 
exchange);
 

Reply via email to