[jboss-svn-commits] JBL Code SVN: r32826 - labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/routing/http.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue May 11 13:12:44 EDT 2010


Author: dward
Date: 2010-05-11 13:12:44 -0400 (Tue, 11 May 2010)
New Revision: 32826

Modified:
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/routing/http/AbstractHttpMethodFactory.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/routing/http/GETHttpMethodFactory.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/routing/http/POSTHttpMethodFactory.java
Log:
Fix for JBESB-3172 ( https://jira.jboss.org/jira/browse/JBESB-3172 ).


Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/routing/http/AbstractHttpMethodFactory.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/routing/http/AbstractHttpMethodFactory.java	2010-05-11 16:28:41 UTC (rev 32825)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/routing/http/AbstractHttpMethodFactory.java	2010-05-11 17:12:44 UTC (rev 32826)
@@ -19,8 +19,14 @@
  */
 package org.jboss.soa.esb.actions.routing.http;
 
+import java.io.IOException;
+import java.net.SocketException;
 import java.net.URL;
 
+import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
+import org.apache.commons.httpclient.HttpMethod;
+import org.apache.commons.httpclient.HttpMethodRetryHandler;
+import org.apache.commons.httpclient.params.HttpMethodParams;
 import org.jboss.soa.esb.ConfigurationException;
 import org.jboss.soa.esb.helpers.ConfigTree;
 
@@ -54,5 +60,28 @@
     }
     
     public void setConfiguration(ConfigTree config) throws ConfigurationException {}
-
+    
+    protected void wrapRetryHandler(HttpMethod method) {
+    	HttpMethodParams params = method.getParams();
+    	HttpMethodRetryHandler other = (HttpMethodRetryHandler)params.getParameter(HttpMethodParams.RETRY_HANDLER);
+    	params.setParameter(HttpMethodParams.RETRY_HANDLER, new HttpMethodRetryHandlerWrapper(other));
+    }
+    
+    private static class HttpMethodRetryHandlerWrapper implements HttpMethodRetryHandler {
+    	
+    	private HttpMethodRetryHandler other;
+    	
+    	private HttpMethodRetryHandlerWrapper(HttpMethodRetryHandler other) {
+    		this.other = (other != null ? other : new DefaultHttpMethodRetryHandler());
+    	}
+    	
+    	public boolean retryMethod(HttpMethod method, IOException exception, int executionCount) {
+    		boolean retry = other.retryMethod(method, exception, executionCount);
+    		if (retry && exception instanceof SocketException) {
+    			retry = false;
+    		}
+    		return retry;
+    	}
+    	
+    }
 }

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/routing/http/GETHttpMethodFactory.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/routing/http/GETHttpMethodFactory.java	2010-05-11 16:28:41 UTC (rev 32825)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/routing/http/GETHttpMethodFactory.java	2010-05-11 17:12:44 UTC (rev 32826)
@@ -33,6 +33,8 @@
 public class GETHttpMethodFactory extends AbstractHttpMethodFactory {
 
     public HttpMethodBase getInstance(Message message) throws IOException {
-        return new GetMethod( getEndpointPathAndQuery() );
+    	GetMethod method = new GetMethod( getEndpointPathAndQuery() );
+    	wrapRetryHandler(method);
+    	return method;
     }
 }
\ No newline at end of file

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/routing/http/POSTHttpMethodFactory.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/routing/http/POSTHttpMethodFactory.java	2010-05-11 16:28:41 UTC (rev 32825)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/routing/http/POSTHttpMethodFactory.java	2010-05-11 17:12:44 UTC (rev 32826)
@@ -83,6 +83,7 @@
         }
 
         method.setRequestEntity(entity);
+        wrapRetryHandler(method);
         return method;
     }
 }
\ No newline at end of file



More information about the jboss-svn-commits mailing list