You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by dv...@apache.org on 2012/04/20 05:13:52 UTC

svn commit: r1328185 - in /camel/trunk/components/camel-spring-ws/src: main/java/org/apache/camel/component/spring/ws/ test/java/org/apache/camel/component/spring/ws/ test/resources/org/apache/camel/component/spring/ws/

Author: dvaleri
Date: Fri Apr 20 03:13:51 2012
New Revision: 1328185

URL: http://svn.apache.org/viewvc?rev=1328185&view=rev
Log:
[CAMEL-4297] Moved message sender initialization to producer initialization, corrected problematic WebServiceTemplate sharing in tests, and fixed issue with setting timeout on certain message sender implementations.

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/ProducerRemoteRouteTest.java
    camel/trunk/components/camel-spring-ws/src/test/java/org/apache/camel/component/spring/ws/ProducerRemoteRouteTimeOutTest.java
    camel/trunk/components/camel-spring-ws/src/test/resources/org/apache/camel/component/spring/ws/ProducerRemoteRouteTimeOutTest-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=1328185&r1=1328184&r2=1328185&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 Apr 20 03:13:51 2012
@@ -56,6 +56,7 @@ public class SpringWebserviceProducer ex
 
     public SpringWebserviceProducer(Endpoint endpoint) {
         super(endpoint);
+        prepareMessageSenders(getEndpoint().getConfiguration());
     }
 
     @Override
@@ -72,9 +73,6 @@ public class SpringWebserviceProducer ex
         String soapAction = exchange.getIn().getHeader(SpringWebserviceConstants.SPRING_WS_SOAP_ACTION, String.class);
         URI wsAddressingAction = exchange.getIn().getHeader(SpringWebserviceConstants.SPRING_WS_ADDRESSING_ACTION, URI.class);
 
-        // Populate the given (read) timeout if any
-        prepareMessageSenders(getEndpoint().getConfiguration());
-
         WebServiceMessageCallback callback = new DefaultWebserviceMessageCallback(soapAction, wsAddressingAction, getEndpoint().getConfiguration());
         Object body = null;
         if (endpointUri != null) {
@@ -88,7 +86,7 @@ public class SpringWebserviceProducer ex
         }
     }
 
-    private static void prepareMessageSenders(SpringWebserviceConfiguration configuration) throws Exception {
+    private static void prepareMessageSenders(SpringWebserviceConfiguration configuration) {
         // Skip this whole thing if none of the relevant config options are set.
         if (!(configuration.getTimeout() > -1) && configuration.getSslContextParameters() == null) {
             return;
@@ -108,7 +106,13 @@ public class SpringWebserviceProducer ex
                 }
                 
                 if (configuration.getTimeout() > -1) {
-                    ((CommonsHttpMessageSender)messageSender).setReadTimeout(configuration.getTimeout());
+                    if (messageSender.getClass().equals(CommonsHttpMessageSender.class)) {
+                        ((CommonsHttpMessageSender)messageSender).setReadTimeout(configuration.getTimeout());
+                    } else {
+                        LOG.warn("Not applying timeout configuration to CommonsHttpMessageSender based implementation.  "
+                                + "You are using what appears to be a custom MessageSender, which you are not doing by default. "
+                                + "You will need configure timeout on your own.");
+                    }
                 }
             } else if (messageSender.getClass().equals(HttpUrlConnectionMessageSender.class)) {
                 // Only if exact match denoting likely use of default configuration.  We don't want to get

Modified: camel/trunk/components/camel-spring-ws/src/test/java/org/apache/camel/component/spring/ws/ProducerRemoteRouteTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring-ws/src/test/java/org/apache/camel/component/spring/ws/ProducerRemoteRouteTest.java?rev=1328185&r1=1328184&r2=1328185&view=diff
==============================================================================
--- camel/trunk/components/camel-spring-ws/src/test/java/org/apache/camel/component/spring/ws/ProducerRemoteRouteTest.java (original)
+++ camel/trunk/components/camel-spring-ws/src/test/java/org/apache/camel/component/spring/ws/ProducerRemoteRouteTest.java Fri Apr 20 03:13:51 2012
@@ -28,7 +28,7 @@ import org.springframework.test.context.
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
-
+@Ignore("Run manually, makes connection to external webservice")
 @ContextConfiguration
 public class ProducerRemoteRouteTest extends AbstractJUnit4SpringContextTests {
 
@@ -38,7 +38,6 @@ public class ProducerRemoteRouteTest ext
     @Produce
     private ProducerTemplate template;
 
-    @Ignore("Run manually, makes connection to external webservice")
     @Test(timeout = 5000)
     public void consumeStockQuoteWebserviceWithDefaultTemplate() throws Exception {
         Object result = template.requestBody("direct:stockQuoteWebserviceWithDefaultTemplate", xmlRequestForGoogleStockQuote);
@@ -47,7 +46,6 @@ public class ProducerRemoteRouteTest ext
         assertTrue(result instanceof Source);
     }
 
-    @Ignore("Run manually, makes connection to external webservice")
     @Test(timeout = 5000)
     public void consumeStockQuoteWebservice() throws Exception {
         Object result = template.requestBody("direct:stockQuoteWebservice", xmlRequestForGoogleStockQuote);
@@ -56,7 +54,6 @@ public class ProducerRemoteRouteTest ext
         assertTrue(result instanceof Source);
     }
 
-    @Ignore("Run manually, makes connection to external webservice")
     @Test(timeout = 5000)
     public void consumeStockQuoteWebserviceWithCamelStringSourceInput() throws Exception {
         Object result = template.requestBody("direct:stockQuoteWebservice", new StringSource(xmlRequestForGoogleStockQuote));
@@ -65,7 +62,6 @@ public class ProducerRemoteRouteTest ext
         assertTrue(result instanceof Source);
     }
 
-    @Ignore("Run manually, makes connection to external webservice")
     @Test(timeout = 5000)
     public void consumeStockQuoteWebserviceWithNonDefaultMessageFactory() throws Exception {
         Object result = template.requestBody("direct:stockQuoteWebserviceWithNonDefaultMessageFactory", xmlRequestForGoogleStockQuote);
@@ -74,7 +70,6 @@ public class ProducerRemoteRouteTest ext
         assertTrue(result instanceof Source);
     }
 
-    @Ignore("Run manually, makes connection to external webservice")
     @Test(timeout = 5000)
     public void consumeStockQuoteWebserviceAndConvertResult() throws Exception {
         Object result = template.requestBody("direct:stockQuoteWebserviceAsString", xmlRequestForGoogleStockQuote);
@@ -85,7 +80,6 @@ public class ProducerRemoteRouteTest ext
         assertTrue(resultMessage.contains("Google Inc."));
     }
 
-    @Ignore("Run manually, makes connection to external webservice")
     @Test(timeout = 5000)
     public void consumeStockQuoteWebserviceAndProvideEndpointUriByHeader() throws Exception {
         Object result = template.requestBodyAndHeader("direct:stockQuoteWebserviceWithoutDefaultUri", xmlRequestForGoogleStockQuote,

Modified: camel/trunk/components/camel-spring-ws/src/test/java/org/apache/camel/component/spring/ws/ProducerRemoteRouteTimeOutTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring-ws/src/test/java/org/apache/camel/component/spring/ws/ProducerRemoteRouteTimeOutTest.java?rev=1328185&r1=1328184&r2=1328185&view=diff
==============================================================================
--- camel/trunk/components/camel-spring-ws/src/test/java/org/apache/camel/component/spring/ws/ProducerRemoteRouteTimeOutTest.java (original)
+++ camel/trunk/components/camel-spring-ws/src/test/java/org/apache/camel/component/spring/ws/ProducerRemoteRouteTimeOutTest.java Fri Apr 20 03:13:51 2012
@@ -32,6 +32,7 @@ import static org.junit.Assert.assertNot
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
+@Ignore("Run manually, makes connection to external webservice")
 @ContextConfiguration
 public class ProducerRemoteRouteTimeOutTest extends AbstractJUnit4SpringContextTests {
 
@@ -40,9 +41,8 @@ public class ProducerRemoteRouteTimeOutT
     @Produce
     private ProducerTemplate template;
 
-    @Ignore("Run manually, makes connection to external webservice")
     @Test
-    public void callStockQuoteWebserviceCommonsHttpWith3MillSecondsTimeout() throws Exception {
+    public void callStockQuoteWebserviceCosmmonsHttpWith3MillSecondsTimeout() throws Exception {
         try {
             template.requestBody("direct:stockQuoteWebserviceCommonsHttpWith3MillSecondsTimeout", xmlRequestForGoogleStockQuote);
             fail("Miss the expected exception in chain");
@@ -50,8 +50,7 @@ public class ProducerRemoteRouteTimeOutT
             assertTrue(hasThrowableInChain(cee, SocketTimeoutException.class));
         }
     }
-
-    @Ignore("Run manually, makes connection to external webservice")
+    
     @Test
     public void callStockQuoteWebserviceCommonsHttpWith5000MillSecondsTimeout() throws Exception {
         Object result = template.requestBody("direct:stockQuoteWebserviceCommonsHttpWith5000MillSecondsTimeout", xmlRequestForGoogleStockQuote);
@@ -61,8 +60,7 @@ public class ProducerRemoteRouteTimeOutT
         String resultMessage = (String) result;
         assertTrue(resultMessage.contains("Google Inc."));
     }
-
-    @Ignore("Run manually, makes connection to external webservice")
+    
     @Test
     public void callStockQuoteWebserviceJDKWith3MillSecondsTimeout() throws Exception {
         try {
@@ -73,7 +71,6 @@ public class ProducerRemoteRouteTimeOutT
         }
     }
 
-    @Ignore("Run manually, makes connection to external webservice")
     @Test
     public void callStockQuoteWebserviceJDKWith5000MillSecondsTimeout() throws Exception {
         Object result = template.requestBody("direct:stockQuoteWebserviceJDKWith5000MillSecondsTimeout", xmlRequestForGoogleStockQuote);

Modified: camel/trunk/components/camel-spring-ws/src/test/resources/org/apache/camel/component/spring/ws/ProducerRemoteRouteTimeOutTest-context.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring-ws/src/test/resources/org/apache/camel/component/spring/ws/ProducerRemoteRouteTimeOutTest-context.xml?rev=1328185&r1=1328184&r2=1328185&view=diff
==============================================================================
--- camel/trunk/components/camel-spring-ws/src/test/resources/org/apache/camel/component/spring/ws/ProducerRemoteRouteTimeOutTest-context.xml (original)
+++ camel/trunk/components/camel-spring-ws/src/test/resources/org/apache/camel/component/spring/ws/ProducerRemoteRouteTimeOutTest-context.xml Fri Apr 20 03:13:51 2012
@@ -23,40 +23,44 @@
 
 	<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory" />
 
-	<bean id="commonsHttpWebServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate">
+	<bean id="commonsHttpWebServiceTemplate1" class="org.springframework.ws.client.core.WebServiceTemplate">
 		<constructor-arg ref="messageFactory" />
 		<property name="messageSender">
 			<bean
 				class="org.springframework.ws.transport.http.CommonsHttpMessageSender" />
 		</property>
 	</bean>
-
-	<bean id="jdkHttpWebServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate">
-		<constructor-arg ref="messageFactory" />
-	</bean>
+  
+    <bean id="commonsHttpWebServiceTemplate2" class="org.springframework.ws.client.core.WebServiceTemplate">
+        <constructor-arg ref="messageFactory" />
+        <property name="messageSender">
+            <bean
+                class="org.springframework.ws.transport.http.CommonsHttpMessageSender" />
+        </property>
+    </bean>
 
 	<camelContext xmlns="http://camel.apache.org/schema/spring">
 		<route>
 			<from uri="direct:stockQuoteWebserviceCommonsHttpWith3MillSecondsTimeout" />
-			<to uri="spring-ws:http://www.webservicex.net/stockquote.asmx?timeout=3&amp;webServiceTemplate=#commonsHttpWebServiceTemplate&amp;soapAction=http://www.webserviceX.NET/GetQuote" />
+			<to uri="spring-ws:http://www.webservicex.net/stockquote.asmx?timeout=3&amp;webServiceTemplate=#commonsHttpWebServiceTemplate1&amp;soapAction=http://www.webserviceX.NET/GetQuote" />
 			<convertBodyTo type="java.lang.String"/>
 		</route>
 
 		<route>
 			<from uri="direct:stockQuoteWebserviceCommonsHttpWith5000MillSecondsTimeout" />
-			<to uri="spring-ws:http://www.webservicex.net/stockquote.asmx?timeout=5000&amp;webServiceTemplate=#commonsHttpWebServiceTemplate&amp;soapAction=http://www.webserviceX.NET/GetQuote" />
+			<to uri="spring-ws:http://www.webservicex.net/stockquote.asmx?timeout=5000&amp;webServiceTemplate=#commonsHttpWebServiceTemplate2&amp;soapAction=http://www.webserviceX.NET/GetQuote" />
 			<convertBodyTo type="java.lang.String"/>
 		</route>
 
 		<route>
 			<from uri="direct:stockQuoteWebserviceJDKWith3MillSecondsTimeout" />
-			<to uri="spring-ws:http://www.webservicex.net/stockquote.asmx?timeout=3&amp;webServiceTemplate=#jdkHttpWebServiceTemplate&amp;soapAction=http://www.webserviceX.NET/GetQuote" />
+			<to uri="spring-ws:http://www.webservicex.net/stockquote.asmx?timeout=3&amp;soapAction=http://www.webserviceX.NET/GetQuote" />
 			<convertBodyTo type="java.lang.String"/>
 		</route>
 
 		<route>
 			<from uri="direct:stockQuoteWebserviceJDKWith5000MillSecondsTimeout" />
-			<to uri="spring-ws:http://www.webservicex.net/stockquote.asmx?timeout=5000&amp;webServiceTemplate=#jdkHttpWebServiceTemplate&amp;soapAction=http://www.webserviceX.NET/GetQuote" />
+			<to uri="spring-ws:http://www.webservicex.net/stockquote.asmx?timeout=5000&amp;soapAction=http://www.webserviceX.NET/GetQuote" />
 			<convertBodyTo type="java.lang.String"/>
 		</route>
 	</camelContext>