Author: lryan
Date: Fri May 29 21:26:27 2009
New Revision: 780112

URL: http://svn.apache.org/viewvc?rev=780112&view=rev
Log:
Support proxy configuration via system properties. SHINDIG-1029

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=780112&r1=780111&r2=780112&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 May 29 21:26:27 2009
@@ -31,22 +31,22 @@
 import org.apache.commons.lang.ArrayUtils;
 import org.apache.commons.lang.StringUtils;
 
+import com.google.common.collect.Maps;
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.InetSocketAddress;
 import java.net.Proxy;
-import java.net.Socket;
+import java.net.ProxySelector;
 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;
-import com.google.inject.Singleton;
-
 /**
  * A very primitive HTTP fetcher implementation. Not recommended for 
production deployments until
  * the following issues are addressed:
@@ -60,7 +60,6 @@
   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;
 
   /**
@@ -85,14 +84,6 @@
     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
-  // when running shindig behind a proxy as guice still injects a proxy 
provider even though optional is set to true.
-  // See issue http://code.google.com/p/google-guice/issues/detail?id=107 for 
more details.
-  // @Inject(optional=true)
-  public void setProxyProvider(Provider<Proxy> proxyProvider) {
-    this.proxyProvider = proxyProvider;
-  }
-
   /**
    * Change the connection timeout for fetches.
    *
@@ -163,9 +154,12 @@
     String methodType = request.getMethod();
     String requestUri = request.getUri().toString();
 
-    if (proxyProvider != null) {
-      Socket proxySocket = new Socket(proxyProvider.get());
-      
httpClient.getHostConfiguration().setLocalAddress(proxySocket.getLocalAddress());
+    // Select a proxy based on the URI. May be Proxy.NO_PROXY
+    Proxy proxy = 
ProxySelector.getDefault().select(request.getUri().toJavaUri()).get(0);
+
+    if (proxy != Proxy.NO_PROXY) {
+      InetSocketAddress address = (InetSocketAddress) proxy.address();
+      httpClient.getHostConfiguration().setProxy(address.getHostName(), 
address.getPort());
     }
 
     if ("POST".equals(methodType) || "PUT".equals(methodType)) {


Reply via email to