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)) {