Author: bvahdat
Date: Fri Jun 8 16:09:21 2012
New Revision: 1348138
URL: http://svn.apache.org/viewvc?rev=1348138&view=rev
Log:
CAMEL-5234: SpringWebServiceProducer should make use of IN for the response if
the exchange is not OUT capable. Thanks to Claus Ibsen for reviewing the
provided patch.
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=1348138&r1=1348137&r2=1348138&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
Fri Jun 8 16:09:21 2012
@@ -83,6 +83,8 @@ public class SpringWebserviceProducer ex
if (ExchangeHelper.isOutCapable(exchange)) {
exchange.getOut().copyFrom(exchange.getIn());
exchange.getOut().setBody(body);
+ } else {
+ exchange.getIn().setBody(body);
}
}
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=1348138&r1=1348137&r2=1348138&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
Fri Jun 8 16:09:21 2012
@@ -19,6 +19,8 @@ package org.apache.camel.component.sprin
import javax.xml.transform.Source;
import org.apache.camel.EndpointInject;
+import org.apache.camel.ExchangePattern;
+import org.apache.camel.Message;
import org.apache.camel.Produce;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.StringSource;
@@ -26,6 +28,7 @@ import org.apache.camel.component.mock.M
import org.junit.Test;
import org.springframework.test.context.ContextConfiguration;
import
org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
@@ -41,6 +44,9 @@ public class ProducerLocalRouteTest exte
@EndpointInject(uri = "mock:result")
private MockEndpoint resultEndpoint;
+ @EndpointInject(uri = "mock:inOnly")
+ private MockEndpoint inOnlyEndpoint;
+
@Test
public void consumeStockQuoteWebserviceWithDefaultTemplate() throws
Exception {
Object result =
template.requestBody("direct:stockQuoteWebserviceWithDefaultTemplate",
xmlRequestForGoogleStockQuote);
@@ -103,4 +109,25 @@ public class ProducerLocalRouteTest exte
String resultMessage = (String) result;
assertTrue(resultMessage.contains("Google Inc."));
}
+
+ @Test
+ public void consumeStockQuoteWebserviceInOnly() throws Exception {
+ inOnlyEndpoint.expectedExchangePattern(ExchangePattern.InOnly);
+ inOnlyEndpoint.expectedMessageCount(1);
+
+ template.sendBodyAndHeader("direct:stockQuoteWebserviceInOnly",
xmlRequestForGoogleStockQuote, "foo", "bar");
+
+ inOnlyEndpoint.assertIsSatisfied();
+
+ Message in = inOnlyEndpoint.getReceivedExchanges().get(0).getIn();
+
+ Object result = in.getBody();
+ assertNotNull(result);
+ assertTrue(result instanceof String);
+ String resultMessage = (String) result;
+ assertTrue(resultMessage.contains("Google Inc."));
+
+ Object bar = in.getHeader("foo");
+ assertEquals("The header value should have been preserved", "bar",
bar);
+ }
}
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=1348138&r1=1348137&r2=1348138&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
Fri Jun 8 16:09:21 2012
@@ -52,6 +52,13 @@
<to
uri="spring-ws:http://dummy?webServiceTemplate=#webServiceTemplate&soapAction=http://www.stockquotes.edu/GetQuote"/>
<convertBodyTo type="java.lang.String"/>
</route>
+ <route>
+ <from uri="direct:stockQuoteWebserviceInOnly"/>
+ <setExchangePattern pattern="InOnly"/>
+ <to
uri="spring-ws:http://localhost?webServiceTemplate=#webServiceTemplate&soapAction=http://www.stockquotes.edu/GetQuote"/>
+ <convertBodyTo type="java.lang.String"/>
+ <to uri="mock:inOnly" />
+ </route>
<!-- consumer route (providing the actual web service) -->
<route>
<from
uri="spring-ws:soapaction:http://www.stockquotes.edu/GetQuote?endpointMapping=#endpointMapping"/>