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 2017/11/17 17:25:47 UTC

httpcomponents-client git commit: Moved route local address configuration from RequestConfig to DefaultRoutePlanner

Repository: httpcomponents-client
Updated Branches:
  refs/heads/master f182b73e4 -> 47dfbfa22


Moved route local address configuration from RequestConfig to DefaultRoutePlanner


Project: http://git-wip-us.apache.org/repos/asf/httpcomponents-client/repo
Commit: http://git-wip-us.apache.org/repos/asf/httpcomponents-client/commit/47dfbfa2
Tree: http://git-wip-us.apache.org/repos/asf/httpcomponents-client/tree/47dfbfa2
Diff: http://git-wip-us.apache.org/repos/asf/httpcomponents-client/diff/47dfbfa2

Branch: refs/heads/master
Commit: 47dfbfa221f09db7e84bb241e5f60b97a52e71e9
Parents: f182b73
Author: Oleg Kalnichevski <ol...@apache.org>
Authored: Fri Nov 17 18:23:31 2017 +0100
Committer: Oleg Kalnichevski <ol...@apache.org>
Committed: Fri Nov 17 18:23:53 2017 +0100

----------------------------------------------------------------------
 .../hc/client5/http/config/RequestConfig.java   | 30 +-------------------
 .../client5/http/impl/classic/ProxyClient.java  |  2 +-
 .../http/impl/routing/DefaultRoutePlanner.java  | 20 +++++++++----
 .../client5/http/config/TestRequestConfig.java  |  4 ---
 4 files changed, 17 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/47dfbfa2/httpclient5/src/main/java/org/apache/hc/client5/http/config/RequestConfig.java
----------------------------------------------------------------------
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/config/RequestConfig.java b/httpclient5/src/main/java/org/apache/hc/client5/http/config/RequestConfig.java
index 80f3458..7b9e8b9 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/config/RequestConfig.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/config/RequestConfig.java
@@ -27,7 +27,6 @@
 
 package org.apache.hc.client5.http.config;
 
-import java.net.InetAddress;
 import java.util.Collection;
 import java.util.concurrent.TimeUnit;
 
@@ -50,7 +49,6 @@ public class RequestConfig implements Cloneable {
 
     private final boolean expectContinueEnabled;
     private final HttpHost proxy;
-    private final InetAddress localAddress;
     private final String cookieSpec;
     private final boolean redirectsEnabled;
     private final boolean circularRedirectsAllowed;
@@ -67,14 +65,13 @@ public class RequestConfig implements Cloneable {
      * Intended for CDI compatibility
     */
     protected RequestConfig() {
-        this(false, null, null, null, false, false, 0, false, null, null,
+        this(false, null, null, false, false, 0, false, null, null,
                 DEFAULT_CONNECTION_REQUEST_TIMEOUT, DEFAULT_CONNECT_TIMEOUT, DEFAULT_SOCKET_TIMEOUT, false);
     }
 
     RequestConfig(
             final boolean expectContinueEnabled,
             final HttpHost proxy,
-            final InetAddress localAddress,
             final String cookieSpec,
             final boolean redirectsEnabled,
             final boolean circularRedirectsAllowed,
@@ -89,7 +86,6 @@ public class RequestConfig implements Cloneable {
         super();
         this.expectContinueEnabled = expectContinueEnabled;
         this.proxy = proxy;
-        this.localAddress = localAddress;
         this.cookieSpec = cookieSpec;
         this.redirectsEnabled = redirectsEnabled;
         this.circularRedirectsAllowed = circularRedirectsAllowed;
@@ -140,21 +136,6 @@ public class RequestConfig implements Cloneable {
     }
 
     /**
-     * Returns local address to be used for request execution.
-     * <p>
-     * On machines with multiple network interfaces, this parameter
-     * can be used to select the network interface from which the
-     * connection originates.
-     * </p>
-     * <p>
-     * Default: {@code null}
-     * </p>
-     */
-    public InetAddress getLocalAddress() {
-        return localAddress;
-    }
-
-    /**
      * Determines the name of the cookie specification to be used for HTTP state
      * management.
      * <p>
@@ -300,7 +281,6 @@ public class RequestConfig implements Cloneable {
         builder.append("[");
         builder.append("expectContinueEnabled=").append(expectContinueEnabled);
         builder.append(", proxy=").append(proxy);
-        builder.append(", localAddress=").append(localAddress);
         builder.append(", cookieSpec=").append(cookieSpec);
         builder.append(", redirectsEnabled=").append(redirectsEnabled);
         builder.append(", maxRedirects=").append(maxRedirects);
@@ -324,7 +304,6 @@ public class RequestConfig implements Cloneable {
         return new Builder()
             .setExpectContinueEnabled(config.isExpectContinueEnabled())
             .setProxy(config.getProxy())
-            .setLocalAddress(config.getLocalAddress())
             .setCookieSpec(config.getCookieSpec())
             .setRedirectsEnabled(config.isRedirectsEnabled())
             .setCircularRedirectsAllowed(config.isCircularRedirectsAllowed())
@@ -342,7 +321,6 @@ public class RequestConfig implements Cloneable {
 
         private boolean expectContinueEnabled;
         private HttpHost proxy;
-        private InetAddress localAddress;
         private String cookieSpec;
         private boolean redirectsEnabled;
         private boolean circularRedirectsAllowed;
@@ -376,11 +354,6 @@ public class RequestConfig implements Cloneable {
             return this;
         }
 
-        public Builder setLocalAddress(final InetAddress localAddress) {
-            this.localAddress = localAddress;
-            return this;
-        }
-
         public Builder setCookieSpec(final String cookieSpec) {
             this.cookieSpec = cookieSpec;
             return this;
@@ -455,7 +428,6 @@ public class RequestConfig implements Cloneable {
             return new RequestConfig(
                     expectContinueEnabled,
                     proxy,
-                    localAddress,
                     cookieSpec,
                     redirectsEnabled,
                     circularRedirectsAllowed,

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/47dfbfa2/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/ProxyClient.java
----------------------------------------------------------------------
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/ProxyClient.java b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/ProxyClient.java
index d415bc6..c68ee4a 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/ProxyClient.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/ProxyClient.java
@@ -148,7 +148,7 @@ public class ProxyClient {
         }
         final HttpRoute route = new HttpRoute(
                 host,
-                this.requestConfig.getLocalAddress(),
+                null,
                 proxy, false, TunnelType.TUNNELLED, LayerType.PLAIN);
 
         final ManagedHttpClientConnection conn = this.connFactory.createConnection(null);

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/47dfbfa2/httpclient5/src/main/java/org/apache/hc/client5/http/impl/routing/DefaultRoutePlanner.java
----------------------------------------------------------------------
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/routing/DefaultRoutePlanner.java b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/routing/DefaultRoutePlanner.java
index 2505bbe..02cc5ab 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/routing/DefaultRoutePlanner.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/routing/DefaultRoutePlanner.java
@@ -63,13 +63,12 @@ public class DefaultRoutePlanner implements HttpRoutePlanner {
     }
 
     @Override
-    public HttpRoute determineRoute(final HttpHost host, final HttpContext context) throws HttpException {
+    public final HttpRoute determineRoute(final HttpHost host, final HttpContext context) throws HttpException {
         if (host == null) {
             throw new ProtocolException("Target host is not specified");
         }
         final HttpClientContext clientContext = HttpClientContext.adapt(context);
         final RequestConfig config = clientContext.getRequestConfig();
-        final InetAddress local = config.getLocalAddress();
         HttpHost proxy = config.getProxy();
         if (proxy == null) {
             proxy = determineProxy(host, context);
@@ -90,14 +89,14 @@ public class DefaultRoutePlanner implements HttpRoutePlanner {
         }
         final boolean secure = target.getSchemeName().equalsIgnoreCase("https");
         if (proxy == null) {
-            return new HttpRoute(target, local, secure);
+            return new HttpRoute(target, determineLocalAddress(target, context), secure);
         } else {
-            return new HttpRoute(target, local, proxy, secure);
+            return new HttpRoute(target, determineLocalAddress(proxy, context), proxy, secure);
         }
     }
 
     @Override
-    public HttpHost determineTargetHost(final HttpRequest request, final HttpContext context) throws HttpException {
+    public final HttpHost determineTargetHost(final HttpRequest request, final HttpContext context) throws HttpException {
         final URIAuthority authority = request.getAuthority();
         if (authority != null) {
             final String scheme = request.getScheme();
@@ -121,4 +120,15 @@ public class DefaultRoutePlanner implements HttpRoutePlanner {
         return null;
     }
 
+    /**
+     * This implementation returns null.
+     *
+     * @throws HttpException may be thrown if overridden
+     */
+    protected InetAddress determineLocalAddress(
+            final HttpHost firstHop,
+            final HttpContext context) throws HttpException {
+        return null;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/47dfbfa2/httpclient5/src/test/java/org/apache/hc/client5/http/config/TestRequestConfig.java
----------------------------------------------------------------------
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/config/TestRequestConfig.java b/httpclient5/src/test/java/org/apache/hc/client5/http/config/TestRequestConfig.java
index 36a8558..487b385 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/config/TestRequestConfig.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/config/TestRequestConfig.java
@@ -27,7 +27,6 @@
 
 package org.apache.hc.client5.http.config;
 
-import java.net.InetAddress;
 import java.util.Arrays;
 import java.util.concurrent.TimeUnit;
 
@@ -57,7 +56,6 @@ public class TestRequestConfig {
         Assert.assertEquals(false, config.isCircularRedirectsAllowed());
         Assert.assertEquals(50, config.getMaxRedirects());
         Assert.assertEquals(null, config.getCookieSpec());
-        Assert.assertEquals(null, config.getLocalAddress());
         Assert.assertEquals(null, config.getProxy());
         Assert.assertEquals(null, config.getTargetPreferredAuthSchemes());
         Assert.assertEquals(null, config.getProxyPreferredAuthSchemes());
@@ -76,7 +74,6 @@ public class TestRequestConfig {
                 .setCircularRedirectsAllowed(true)
                 .setMaxRedirects(100)
                 .setCookieSpec(CookieSpecs.STANDARD)
-                .setLocalAddress(InetAddress.getLocalHost())
                 .setProxy(new HttpHost("someproxy"))
                 .setTargetPreferredAuthSchemes(Arrays.asList(AuthSchemes.NTLM))
                 .setProxyPreferredAuthSchemes(Arrays.asList(AuthSchemes.DIGEST))
@@ -92,7 +89,6 @@ public class TestRequestConfig {
         Assert.assertEquals(true, config.isCircularRedirectsAllowed());
         Assert.assertEquals(100, config.getMaxRedirects());
         Assert.assertEquals(CookieSpecs.STANDARD, config.getCookieSpec());
-        Assert.assertEquals(InetAddress.getLocalHost(), config.getLocalAddress());
         Assert.assertEquals(new HttpHost("someproxy"), config.getProxy());
         Assert.assertEquals(Arrays.asList(AuthSchemes.NTLM), config.getTargetPreferredAuthSchemes());
         Assert.assertEquals(Arrays.asList(AuthSchemes.DIGEST), config.getProxyPreferredAuthSchemes());