You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2017/03/06 08:52:07 UTC
[2/4] camel git commit: CAMEL-8351 - simple implementation for
breadcrumbId to be set as camel exhange's header
CAMEL-8351 - simple implementation for breadcrumbId to be set as camel exhange's header
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/a5b5deb1
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/a5b5deb1
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/a5b5deb1
Branch: refs/heads/master
Commit: a5b5deb1643dfc640ea8dd99fd9232927cb9516a
Parents: 54d932a
Author: onders86 <on...@gmail.com>
Authored: Wed Mar 1 22:22:23 2017 +0300
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Mar 6 09:50:14 2017 +0100
----------------------------------------------------------------------
.../spring/ws/SpringWebserviceConsumer.java | 29 +++++++++++++++++++-
1 file changed, 28 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/a5b5deb1/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 3398216..e66ab63 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
@@ -19,6 +19,8 @@ package org.apache.camel.component.spring.ws;
import java.util.Iterator;
import java.util.Map;
import javax.xml.namespace.QName;
+import javax.xml.soap.MimeHeaders;
+import javax.xml.soap.SOAPMessage;
import javax.xml.transform.Source;
import org.apache.camel.Endpoint;
@@ -36,6 +38,7 @@ import org.springframework.ws.server.endpoint.MessageEndpoint;
import org.springframework.ws.soap.SoapHeader;
import org.springframework.ws.soap.SoapHeaderElement;
import org.springframework.ws.soap.SoapMessage;
+import org.springframework.ws.soap.saaj.SaajSoapMessage;
public class SpringWebserviceConsumer extends DefaultConsumer implements MessageEndpoint {
@@ -54,7 +57,10 @@ public class SpringWebserviceConsumer extends DefaultConsumer implements Message
public void invoke(MessageContext messageContext) throws Exception {
Exchange exchange = getEndpoint().createExchange(ExchangePattern.InOptionalOut);
populateExchangeFromMessageContext(messageContext, exchange);
-
+
+ // populate camel exchange with breadcrumb from transport header
+ populateExchangeWithBreadcrumbFromMessageContext(messageContext, exchange);
+
// start message processing
getProcessor().process(exchange);
@@ -74,6 +80,27 @@ public class SpringWebserviceConsumer extends DefaultConsumer implements Message
}
}
+
+ private void populateExchangeWithBreadcrumbFromMessageContext(MessageContext messageContext, Exchange exchange) {
+ SaajSoapMessage saajSoap = (SaajSoapMessage) messageContext.getRequest();
+ SOAPMessage soapMesssageRequest = null;
+ if (saajSoap != null) {
+ soapMesssageRequest = saajSoap.getSaajMessage();
+ if (soapMesssageRequest != null) {
+ MimeHeaders mimeHeaders = soapMesssageRequest.getMimeHeaders();
+ if (mimeHeaders != null) {
+ String[] breadcrumbIdHeaderValues = mimeHeaders.getHeader(Exchange.BREADCRUMB_ID);
+ // expected to get one token
+ // if more than one token expected,
+ // presumably breadcrumb generation strategy
+ // may be required to implement
+ if (breadcrumbIdHeaderValues != null && breadcrumbIdHeaderValues.length >= 1) {
+ exchange.getIn().setHeader(Exchange.BREADCRUMB_ID, breadcrumbIdHeaderValues[0]);
+ }
+ }
+ }
+ }
+ }
private void populateExchangeFromMessageContext(MessageContext messageContext, Exchange exchange) {
populateExchangeWithPropertiesFromMessageContext(messageContext, exchange);