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&amp;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&amp;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"/>


Reply via email to