You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by aw...@apache.org on 2009/04/18 00:17:56 UTC

svn commit: r766167 - /incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpFetcher.java

Author: awiner
Date: Fri Apr 17 22:17:55 2009
New Revision: 766167

URL: http://svn.apache.org/viewvc?rev=766167&view=rev
Log:
SHINDIG-1018: BasicHttpFetcher hard-codes the connection timeout
- Adds a setConnectionTimeoutMs() method
- Patch from Jordan Zimmerman

Modified:
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpFetcher.java

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpFetcher.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpFetcher.java?rev=766167&r1=766166&r2=766167&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpFetcher.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpFetcher.java Fri Apr 17 22:17:55 2009
@@ -17,17 +17,6 @@
  */
 package org.apache.shindig.gadgets.http;
 
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.Proxy;
-import java.net.Socket;
-import java.util.List;
-import java.util.Map;
-import java.util.zip.GZIPInputStream;
-import java.util.zip.Inflater;
-import java.util.zip.InflaterInputStream;
-
 import org.apache.commons.httpclient.Header;
 import org.apache.commons.httpclient.HttpClient;
 import org.apache.commons.httpclient.HttpMethod;
@@ -42,6 +31,17 @@
 import org.apache.commons.lang.ArrayUtils;
 import org.apache.commons.lang.StringUtils;
 
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.Proxy;
+import java.net.Socket;
+import java.util.List;
+import java.util.Map;
+import java.util.zip.GZIPInputStream;
+import java.util.zip.Inflater;
+import java.util.zip.InflaterInputStream;
+
 import com.google.common.collect.Maps;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
@@ -57,10 +57,11 @@
  */
 @Singleton
 public class BasicHttpFetcher implements HttpFetcher {
-  private static final int CONNECT_TIMEOUT_MS = 5000;
+  private static final int DEFAULT_CONNECT_TIMEOUT_MS = 5000;
   private static final int DEFAULT_MAX_OBJECT_SIZE = 1024 * 1024;
 
   private Provider<Proxy> proxyProvider;
+  private volatile int connectionTimeoutMs;
 
   /**
    * Creates a new fetcher for fetching HTTP objects.  Not really suitable
@@ -70,8 +71,10 @@
    *
    * @param maxObjSize Maximum size, in bytes, of object to fetch.  Except this
    * isn't actually implemented.
+   * @param connectionTimeoutMs timeout, in milliseconds, for requests.
    */
-  public BasicHttpFetcher(int maxObjSize) {
+  public BasicHttpFetcher(int maxObjSize, int connectionTimeoutMs) {
+	  this.connectionTimeoutMs = connectionTimeoutMs;
   }
 
   /**
@@ -79,7 +82,7 @@
    */
   @Inject
   public BasicHttpFetcher() {
-    this(DEFAULT_MAX_OBJECT_SIZE);
+    this(DEFAULT_MAX_OBJECT_SIZE, DEFAULT_CONNECT_TIMEOUT_MS);
   }
 
   // TODO Re-add Inject annotation once shindig is upgraded to guice 2.0, because at the moment this causes problems
@@ -91,6 +94,15 @@
   }
 
   /**
+   * Change the connection timeout for fetches.
+   *
+   * @param connectionTimeoutMs new connection timeout in milliseconds
+   */
+  public void setConnectionTimeoutMs(int connectionTimeoutMs) {
+    this.connectionTimeoutMs = connectionTimeoutMs;
+  }
+
+  /**
    * @param httpMethod
    * @param responseCode
    * @return A HttpResponse object made by consuming the response of the
@@ -173,7 +185,7 @@
     }
 
     httpMethod.setFollowRedirects(false);
-    httpMethod.getParams().setSoTimeout(CONNECT_TIMEOUT_MS);
+    httpMethod.getParams().setSoTimeout(connectionTimeoutMs);
     httpMethod.setRequestHeader("Content-Length", String.valueOf(request.getPostBodyLength()));
     httpMethod.setRequestHeader("Accept-Encoding", "gzip, deflate");