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>


Reply via email to