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`. git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/branches/4.5.x@1758107 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
7870698373
commit
8b5642ae92
|
@ -54,13 +54,19 @@ public class SystemDefaultRoutePlanner extends DefaultRoutePlanner {
|
||||||
|
|
||||||
private final ProxySelector proxySelector;
|
private final ProxySelector proxySelector;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param proxySelector the proxy selector, or {@code null} for the system default
|
||||||
|
*/
|
||||||
public SystemDefaultRoutePlanner(
|
public SystemDefaultRoutePlanner(
|
||||||
final SchemePortResolver schemePortResolver,
|
final SchemePortResolver schemePortResolver,
|
||||||
final ProxySelector proxySelector) {
|
final ProxySelector proxySelector) {
|
||||||
super(schemePortResolver);
|
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) {
|
public SystemDefaultRoutePlanner(final ProxySelector proxySelector) {
|
||||||
this(null, proxySelector);
|
this(null, proxySelector);
|
||||||
}
|
}
|
||||||
|
@ -76,7 +82,15 @@ public class SystemDefaultRoutePlanner extends DefaultRoutePlanner {
|
||||||
} catch (final URISyntaxException ex) {
|
} catch (final URISyntaxException ex) {
|
||||||
throw new HttpException("Cannot convert host to URI: " + target, 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);
|
final Proxy p = chooseProxy(proxies);
|
||||||
HttpHost result = null;
|
HttpHost result = null;
|
||||||
if (p.type() == Proxy.Type.HTTP) {
|
if (p.type() == Proxy.Type.HTTP) {
|
||||||
|
|
Loading…
Reference in New Issue