Author: rickette
Date: Sun May 29 22:14:20 2011
New Revision: 1128970
URL: http://svn.apache.org/viewvc?rev=1128970&view=rev
Log:
CAMEL-3974: Spring-WS producer now propagates headers. Thanks to Doug Douglass
for providing a patch, I've polished it a bit.
Modified:
camel/trunk/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceProducer.java
camel/trunk/components/camel-spring-ws/src/test/java/org/apache/camel/component/spring/ws/ProducerLocalRouteTest.java
camel/trunk/components/camel-spring-ws/src/test/resources/org/apache/camel/component/spring/ws/ProducerLocalRouteTest-context.xml
Modified:
camel/trunk/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceProducer.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceProducer.java?rev=1128970&r1=1128969&r2=1128970&view=diff
==============================================================================
---
camel/trunk/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceProducer.java
(original)
+++
camel/trunk/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceProducer.java
Sun May 29 22:14:20 2011
@@ -25,6 +25,7 @@ import org.apache.camel.Endpoint;
import org.apache.camel.Exchange;
import org.apache.camel.TypeConverter;
import org.apache.camel.impl.DefaultProducer;
+import org.apache.camel.util.ExchangeHelper;
import org.springframework.ws.WebServiceMessage;
import org.springframework.ws.client.core.SourceExtractor;
import org.springframework.ws.client.core.WebServiceMessageCallback;
@@ -57,7 +58,10 @@ public class SpringWebserviceProducer ex
} else {
body =
endpoint.getConfiguration().getWebServiceTemplate().sendSourceAndReceive(sourcePayload,
callback, SOURCE_EXTRACTOR);
}
- exchange.getOut().setBody(body);
+ if (ExchangeHelper.isOutCapable(exchange)) {
+ exchange.getOut().copyFrom(exchange.getIn());
+ exchange.getOut().setBody(body);
+ }
}
protected class DefaultWebserviceMessageCallback implements
WebServiceMessageCallback {
Modified:
camel/trunk/components/camel-spring-ws/src/test/java/org/apache/camel/component/spring/ws/ProducerLocalRouteTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring-ws/src/test/java/org/apache/camel/component/spring/ws/ProducerLocalRouteTest.java?rev=1128970&r1=1128969&r2=1128970&view=diff
==============================================================================
---
camel/trunk/components/camel-spring-ws/src/test/java/org/apache/camel/component/spring/ws/ProducerLocalRouteTest.java
(original)
+++
camel/trunk/components/camel-spring-ws/src/test/java/org/apache/camel/component/spring/ws/ProducerLocalRouteTest.java
Sun May 29 22:14:20 2011
@@ -18,8 +18,10 @@ package org.apache.camel.component.sprin
import javax.xml.transform.Source;
+import org.apache.camel.EndpointInject;
import org.apache.camel.Produce;
import org.apache.camel.ProducerTemplate;
+import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.converter.jaxp.StringSource;
import org.junit.Test;
import org.springframework.test.context.ContextConfiguration;
@@ -37,6 +39,9 @@ public class ProducerLocalRouteTest exte
@Produce
private ProducerTemplate template;
+ @EndpointInject(uri = "mock:result")
+ private MockEndpoint resultEndpoint;
+
@Test()
public void consumeStockQuoteWebserviceWithDefaultTemplate() throws
Exception {
Object result =
template.requestBody("direct:stockQuoteWebserviceWithDefaultTemplate",
xmlRequestForGoogleStockQuote);
@@ -46,6 +51,16 @@ public class ProducerLocalRouteTest exte
}
@Test()
+ public void consumeStockQuoteWebserviceAndPreserveHeaders() throws
Exception {
+ resultEndpoint.expectedHeaderReceived("helloHeader", "hello world!");
+
+ Object result =
template.requestBodyAndHeader("direct:stockQuoteWebserviceMock",
xmlRequestForGoogleStockQuote, "helloHeader", "hello world!");
+
+ assertNotNull(result);
+ resultEndpoint.assertIsSatisfied();
+ }
+
+ @Test()
public void consumeStockQuoteWebservice() throws Exception {
Object result = template.requestBody("direct:stockQuoteWebservice",
xmlRequestForGoogleStockQuote);
Modified:
camel/trunk/components/camel-spring-ws/src/test/resources/org/apache/camel/component/spring/ws/ProducerLocalRouteTest-context.xml
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring-ws/src/test/resources/org/apache/camel/component/spring/ws/ProducerLocalRouteTest-context.xml?rev=1128970&r1=1128969&r2=1128970&view=diff
==============================================================================
---
camel/trunk/components/camel-spring-ws/src/test/resources/org/apache/camel/component/spring/ws/ProducerLocalRouteTest-context.xml
(original)
+++
camel/trunk/components/camel-spring-ws/src/test/resources/org/apache/camel/component/spring/ws/ProducerLocalRouteTest-context.xml
Sun May 29 22:14:20 2011
@@ -28,6 +28,13 @@
<to
uri="spring-ws:http://localhost?webServiceTemplate=#webServiceTemplate&soapAction=http://www.stockquotes.edu/GetQuote"/>
</route>
<route>
+ <from uri="direct:stockQuoteWebserviceMock"/>
+ <pipeline>
+ <to
uri="spring-ws:http://localhost?webServiceTemplate=#webServiceTemplate&soapAction=http://www.stockquotes.edu/GetQuote"/>
+ <to uri="mock:result" />
+ </pipeline>
+ </route>
+ <route>
<from uri="direct:stockQuoteWebserviceAsString"/>
<to
uri="spring-ws:http://localhost?webServiceTemplate=#webServiceTemplate&soapAction=http://www.stockquotes.edu/GetQuote"/>
<convertBodyTo type="java.lang.String"/>