You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2016/08/28 13:03:02 UTC
svn commit: r1758107 -
/httpcomponents/httpclient/branches/4.5.x/httpclient/src/main/java/org/apache/http/impl/conn/SystemDefaultRoutePlanner.java
Author: olegk
Date: Sun Aug 28 13:03:02 2016
New Revision: 1758107
URL: http://svn.apache.org/viewvc?rev=1758107&view=rev
Log:
Support changing system default ProxySelector
Contributed by Robin Stevens <stevensro at gmail.com>
The `ProxySelectorRoutePlanner` class which got deprecated in favor of the `SystemDefaultRoutePlanner` could deal with:
- `null` as default `ProxySelector`
- a change in the default `ProxySelector`
This change ports that behavior to the `SystemDefaultRoutePlanner`.
Modified:
httpcomponents/httpclient/branches/4.5.x/httpclient/src/main/java/org/apache/http/impl/conn/SystemDefaultRoutePlanner.java
Modified: httpcomponents/httpclient/branches/4.5.x/httpclient/src/main/java/org/apache/http/impl/conn/SystemDefaultRoutePlanner.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/branches/4.5.x/httpclient/src/main/java/org/apache/http/impl/conn/SystemDefaultRoutePlanner.java?rev=1758107&r1=1758106&r2=1758107&view=diff
==============================================================================
--- httpcomponents/httpclient/branches/4.5.x/httpclient/src/main/java/org/apache/http/impl/conn/SystemDefaultRoutePlanner.java (original)
+++ httpcomponents/httpclient/branches/4.5.x/httpclient/src/main/java/org/apache/http/impl/conn/SystemDefaultRoutePlanner.java Sun Aug 28 13:03:02 2016
@@ -54,13 +54,19 @@ public class SystemDefaultRoutePlanner e
private final ProxySelector proxySelector;
+ /**
+ * @param proxySelector the proxy selector, or {@code null} for the system default
+ */
public SystemDefaultRoutePlanner(
final SchemePortResolver schemePortResolver,
final ProxySelector proxySelector) {
super(schemePortResolver);
- this.proxySelector = proxySelector != null ? proxySelector : ProxySelector.getDefault();
+ this.proxySelector = proxySelector;
}
+ /**
+ * @param proxySelector the proxy selector, or {@code null} for the system default
+ */
public SystemDefaultRoutePlanner(final ProxySelector proxySelector) {
this(null, proxySelector);
}
@@ -76,7 +82,15 @@ public class SystemDefaultRoutePlanner e
} catch (final URISyntaxException ex) {
throw new HttpException("Cannot convert host to URI: " + target, ex);
}
- final List<Proxy> proxies = this.proxySelector.select(targetURI);
+ ProxySelector proxySelectorInstance = this.proxySelector;
+ if (proxySelectorInstance == null) {
+ proxySelectorInstance = ProxySelector.getDefault();
+ }
+ if (proxySelectorInstance == null) {
+ //The proxy selector can be "unset", so we must be able to deal with a null selector
+ return null;
+ }
+ final List<Proxy> proxies = proxySelectorInstance.select(targetURI);
final Proxy p = chooseProxy(proxies);
HttpHost result = null;
if (p.type() == Proxy.Type.HTTP) {