Skip to content

Commit

Permalink
Support changing system default ProxySelector
Browse files Browse the repository at this point in the history
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`.

git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1758106 13f79535-47bb-0310-9956-ffa450edef68
  • Loading branch information
ok2c committed Aug 28, 2016
1 parent a24b592 commit f779a4b
Showing 1 changed file with 16 additions and 2 deletions.
Expand Up @@ -54,13 +54,19 @@ public class SystemDefaultRoutePlanner extends DefaultRoutePlanner {

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);
}
Expand All @@ -76,7 +82,15 @@ protected HttpHost determineProxy(
} 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) {
Expand Down

0 comments on commit f779a4b

Please sign in to comment.