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 2013/01/07 19:22:36 UTC

svn commit: r1429930 - in /httpcomponents/httpclient/trunk/httpclient/src: examples/org/apache/http/examples/client/ main/java/org/apache/http/client/config/ main/java/org/apache/http/client/params/ main/java/org/apache/http/impl/client/ main/java/org/...

Author: olegk
Date: Mon Jan  7 18:22:35 2013
New Revision: 1429930

URL: http://svn.apache.org/viewvc?rev=1429930&view=rev
Log:
Reworked proxy configuration; more test cases

Added:
    httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultProxyRoutePlanner.java   (with props)
    httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/conn/TestDefaultProxyRoutePlanner.java
      - copied, changed from r1429593, httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/conn/TestDefaultRoutePlanner.java
Modified:
    httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientConfiguration.java
    httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientExecuteProxy.java
    httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientProxyAuthentication.java
    httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/config/RequestConfig.java
    httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/params/HttpClientParamConfig.java
    httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/HttpClientBuilder.java
    httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/MinimalHttpClient.java
    httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultRoutePlanner.java
    httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/conn/TestDefaultRoutePlanner.java

Modified: httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientConfiguration.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientConfiguration.java?rev=1429930&r1=1429929&r2=1429930&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientConfiguration.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientConfiguration.java Mon Jan  7 18:22:35 2013
@@ -167,7 +167,6 @@ public class ClientConfiguration {
             .setStaleConnectionCheckEnabled(true)
             .setTargetPreferredAuthSchemes(Arrays.asList(AuthSchemes.NTLM, AuthSchemes.DIGEST))
             .setProxyPreferredAuthSchemes(Arrays.asList(AuthSchemes.BASIC))
-            .setDefaultProxy(new HttpHost("myproxy", 8080))
             .build();
 
         // Create an HttpClient with the given custom dependencies and configuration.
@@ -175,6 +174,7 @@ public class ClientConfiguration {
             .setConnectionManager(connManager)
             .setCookieStore(cookieStore)
             .setCredentialsProvider(credentialsProvider)
+            .setProxy(new HttpHost("myproxy", 8080))
             .setDefaultRequestConfig(defaultRequestConfig)
             .build();
 
@@ -186,6 +186,7 @@ public class ClientConfiguration {
                 .setSocketTimeout(5000)
                 .setConnectTimeout(5000)
                 .setConnectionRequestTimeout(5000)
+                .setProxy(new HttpHost("myotherproxy", 8080))
                 .build();
             httpget.setConfig(requestConfig);
 

Modified: httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientExecuteProxy.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientExecuteProxy.java?rev=1429930&r1=1429929&r2=1429930&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientExecuteProxy.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientExecuteProxy.java Mon Jan  7 18:22:35 2013
@@ -51,7 +51,7 @@ public class ClientExecuteProxy {
             HttpHost target = new HttpHost("issues.apache.org", 443, "https");
             HttpHost proxy = new HttpHost("127.0.0.1", 8080, "http");
 
-            RequestConfig config = RequestConfig.custom().setDefaultProxy(proxy).build();
+            RequestConfig config = RequestConfig.custom().setProxy(proxy).build();
             HttpGet request = new HttpGet("/");
             request.setConfig(config);
 

Modified: httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientProxyAuthentication.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientProxyAuthentication.java?rev=1429930&r1=1429929&r2=1429930&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientProxyAuthentication.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientProxyAuthentication.java Mon Jan  7 18:22:35 2013
@@ -56,7 +56,9 @@ public class ClientProxyAuthentication {
             HttpHost targetHost = new HttpHost("www.verisign.com", 443, "https");
             HttpHost proxy = new HttpHost("localhost", 8080);
 
-            RequestConfig config = RequestConfig.custom().setDefaultProxy(proxy).build();
+            RequestConfig config = RequestConfig.custom()
+                .setProxy(proxy)
+                .build();
             HttpGet httpget = new HttpGet("/");
             httpget.setConfig(config);
 

Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/config/RequestConfig.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/config/RequestConfig.java?rev=1429930&r1=1429929&r2=1429930&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/config/RequestConfig.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/config/RequestConfig.java Mon Jan  7 18:22:35 2013
@@ -37,7 +37,7 @@ public class RequestConfig implements Cl
     public static final RequestConfig DEFAULT = new Builder().build();
 
     private final boolean expectContinueEnabled;
-    private final HttpHost defaultProxy;
+    private final HttpHost proxy;
     private final InetAddress localAddress;
     private final boolean staleConnectionCheckEnabled;
     private final String cookieSpec;
@@ -54,7 +54,7 @@ public class RequestConfig implements Cl
 
     RequestConfig(
             final boolean expectContinueEnabled,
-            final HttpHost defaultProxy,
+            final HttpHost proxy,
             final InetAddress localAddress,
             final boolean staleConnectionCheckEnabled,
             final String cookieSpec,
@@ -70,7 +70,7 @@ public class RequestConfig implements Cl
             final int socketTimeout) {
         super();
         this.expectContinueEnabled = expectContinueEnabled;
-        this.defaultProxy = defaultProxy;
+        this.proxy = proxy;
         this.localAddress = localAddress;
         this.staleConnectionCheckEnabled = staleConnectionCheckEnabled;
         this.cookieSpec = cookieSpec;
@@ -90,8 +90,8 @@ public class RequestConfig implements Cl
         return expectContinueEnabled;
     }
 
-    public HttpHost getDefaultProxy() {
-        return defaultProxy;
+    public HttpHost getProxy() {
+        return proxy;
     }
 
     public InetAddress getLocalAddress() {
@@ -155,7 +155,7 @@ public class RequestConfig implements Cl
     public String toString() {
         StringBuilder builder = new StringBuilder();
         builder.append(", expectContinueEnabled=").append(expectContinueEnabled);
-        builder.append(", defaultProxy=").append(defaultProxy);
+        builder.append(", proxy=").append(proxy);
         builder.append(", localAddress=").append(localAddress);
         builder.append(", staleConnectionCheckEnabled=").append(staleConnectionCheckEnabled);
         builder.append(", cookieSpec=").append(cookieSpec);
@@ -180,7 +180,7 @@ public class RequestConfig implements Cl
     public static RequestConfig.Builder copy(final RequestConfig config) {
         return new Builder()
             .setExpectContinueEnabled(config.isExpectContinueEnabled())
-            .setDefaultProxy(config.getDefaultProxy())
+            .setProxy(config.getProxy())
             .setLocalAddress(config.getLocalAddress())
             .setStaleConnectionCheckEnabled(config.isStaleConnectionCheckEnabled())
             .setCookieSpec(config.getCookieSpec())
@@ -199,7 +199,7 @@ public class RequestConfig implements Cl
     public static class Builder {
 
         private boolean expectContinueEnabled;
-        private HttpHost defaultProxy;
+        private HttpHost proxy;
         private InetAddress localAddress;
         private boolean staleConnectionCheckEnabled;
         private String cookieSpec;
@@ -231,8 +231,8 @@ public class RequestConfig implements Cl
             return this;
         }
 
-        public Builder setDefaultProxy(final HttpHost defaultProxy) {
-            this.defaultProxy = defaultProxy;
+        public Builder setProxy(final HttpHost proxy) {
+            this.proxy = proxy;
             return this;
         }
 
@@ -304,7 +304,7 @@ public class RequestConfig implements Cl
         public RequestConfig build() {
             return new RequestConfig(
                     expectContinueEnabled,
-                    defaultProxy,
+                    proxy,
                     localAddress,
                     staleConnectionCheckEnabled,
                     cookieSpec,

Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/params/HttpClientParamConfig.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/params/HttpClientParamConfig.java?rev=1429930&r1=1429929&r2=1429930&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/params/HttpClientParamConfig.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/params/HttpClientParamConfig.java Mon Jan  7 18:22:35 2013
@@ -55,7 +55,7 @@ public final class HttpClientParamConfig
                 .setConnectionRequestTimeout((int) HttpClientParams.getConnectionManagerTimeout(params))
                 .setConnectTimeout(HttpConnectionParams.getConnectionTimeout(params))
                 .setCookieSpec(HttpClientParams.getCookiePolicy(params))
-                .setDefaultProxy(ConnRouteParams.getDefaultProxy(params))
+                .setProxy(ConnRouteParams.getDefaultProxy(params))
                 .setExpectContinueEnabled(HttpProtocolParams.useExpectContinue(params))
                 .setLocalAddress(ConnRouteParams.getLocalAddress(params))
                 .setMaxRedirects(params.getIntParameter(ClientPNames.MAX_REDIRECTS, 50))

Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/HttpClientBuilder.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/HttpClientBuilder.java?rev=1429930&r1=1429929&r2=1429930&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/HttpClientBuilder.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/HttpClientBuilder.java Mon Jan  7 18:22:35 2013
@@ -38,6 +38,7 @@ import java.util.Map;
 
 import org.apache.http.ConnectionReuseStrategy;
 import org.apache.http.Header;
+import org.apache.http.HttpHost;
 import org.apache.http.HttpRequestInterceptor;
 import org.apache.http.HttpResponseInterceptor;
 import org.apache.http.annotation.NotThreadSafe;
@@ -90,6 +91,7 @@ import org.apache.http.impl.client.execc
 import org.apache.http.impl.client.execchain.RedirectExec;
 import org.apache.http.impl.client.execchain.RetryExec;
 import org.apache.http.impl.client.execchain.ServiceUnavailableRetryExec;
+import org.apache.http.impl.conn.DefaultProxyRoutePlanner;
 import org.apache.http.impl.conn.DefaultRoutePlanner;
 import org.apache.http.impl.conn.DefaultSchemePortResolver;
 import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
@@ -168,6 +170,7 @@ public class HttpClientBuilder {
     private CookieStore cookieStore;
     private CredentialsProvider credentialsProvider;
     private String userAgent;
+    private HttpHost proxy;
     private Collection<? extends Header> defaultHeaders;
     private SocketConfig defaultSocketConfig;
     private ConnectionConfig defaultConnectionConfig;
@@ -383,6 +386,11 @@ public class HttpClientBuilder {
         return this;
     }
 
+    public final HttpClientBuilder setProxy(final HttpHost proxy) {
+        this.proxy = proxy;
+        return this;
+    }
+
     public final HttpClientBuilder setDefaultHeaders(final Collection<? extends Header> defaultHeaders) {
         this.defaultHeaders = defaultHeaders;
         return this;
@@ -617,7 +625,9 @@ public class HttpClientBuilder {
         // Add redirect executor, if not disabled
         HttpRoutePlanner routePlanner = this.routePlanner;
         if (routePlanner == null) {
-            if (systemProperties) {
+            if (proxy != null) {
+                routePlanner = new DefaultProxyRoutePlanner(proxy, schemePortResolver);
+            } else if (systemProperties) {
                 routePlanner = new SystemDefaultRoutePlanner(
                         schemePortResolver, ProxySelector.getDefault());
             } else {

Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/MinimalHttpClient.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/MinimalHttpClient.java?rev=1429930&r1=1429929&r2=1429930&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/MinimalHttpClient.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/MinimalHttpClient.java Mon Jan  7 18:22:35 2013
@@ -107,7 +107,7 @@ class MinimalHttpClient extends Closeabl
             if (config == null) {
                 config = RequestConfig.DEFAULT;
             }
-            if (config.getDefaultProxy() != null) {
+            if (config.getProxy() != null) {
                 throw new ClientProtocolException("Minimal HttpClient does not support" +
                 " request execution via proxy");
             }

Added: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultProxyRoutePlanner.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultProxyRoutePlanner.java?rev=1429930&view=auto
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultProxyRoutePlanner.java (added)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultProxyRoutePlanner.java Mon Jan  7 18:22:35 2013
@@ -0,0 +1,63 @@
+/*
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.http.impl.conn;
+
+import org.apache.http.HttpException;
+import org.apache.http.HttpHost;
+import org.apache.http.HttpRequest;
+import org.apache.http.annotation.Immutable;
+import org.apache.http.conn.SchemePortResolver;
+import org.apache.http.conn.routing.HttpRoutePlanner;
+import org.apache.http.protocol.HttpContext;
+import org.apache.http.util.Args;
+
+/**
+ * Implementation of an {@link HttpRoutePlanner} that routes requests through
+ * a default proxy.
+ *
+ * @since 4.3
+ */
+@Immutable
+public class DefaultProxyRoutePlanner extends DefaultRoutePlanner {
+
+    private final HttpHost proxy;
+
+    public DefaultProxyRoutePlanner(final HttpHost proxy, final SchemePortResolver schemePortResolver) {
+        super(schemePortResolver);
+        this.proxy = Args.notNull(proxy, "Proxy host");
+    }
+
+    @Override
+    protected HttpHost determineProxy(
+        final HttpHost target,
+        final HttpRequest request,
+        final HttpContext context) throws HttpException {
+        return proxy;
+    }
+
+}

Propchange: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultProxyRoutePlanner.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultProxyRoutePlanner.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultProxyRoutePlanner.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultRoutePlanner.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultRoutePlanner.java?rev=1429930&r1=1429929&r2=1429930&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultRoutePlanner.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultRoutePlanner.java Mon Jan  7 18:22:35 2013
@@ -36,22 +36,18 @@ import org.apache.http.annotation.Immuta
 import org.apache.http.client.config.RequestConfig;
 import org.apache.http.client.protocol.HttpClientContext;
 import org.apache.http.conn.SchemePortResolver;
-import org.apache.http.conn.params.ConnRouteParams;
 import org.apache.http.conn.routing.HttpRoute;
 import org.apache.http.conn.routing.HttpRoutePlanner;
 import org.apache.http.protocol.HttpContext;
 import org.apache.http.util.Args;
 
 /**
- * Default implementation of an {@link HttpRoutePlanner}. This implementation
- * is based on {@link org.apache.http.conn.params.ConnRoutePNames parameters}.
- * It will not make use of any Java system properties, nor of system or
- * browser proxy settings.
+ * Default implementation of an {@link HttpRoutePlanner}. It will not make use of
+ * any Java system properties, nor of system or browser proxy settings.
  *
  * @since 4.3
  */
 @Immutable
-@SuppressWarnings("deprecation")
 public class DefaultRoutePlanner implements HttpRoutePlanner {
 
     private final SchemePortResolver schemePortResolver;
@@ -68,19 +64,12 @@ public class DefaultRoutePlanner impleme
             final HttpContext context) throws HttpException {
         Args.notNull(host, "Target host");
         Args.notNull(request, "Request");
-
-        // If we have a forced route, we can do without a target.
-        HttpRoute route = ConnRouteParams.getForcedRoute(request.getParams());
-        if (route != null) {
-            return route;
-        }
-
         HttpClientContext clientContext = HttpClientContext.adapt(context);
         RequestConfig config = clientContext.getRequestConfig();
         InetAddress local = config.getLocalAddress();
-        HttpHost proxy = determineProxy(host, request, context);
+        HttpHost proxy = config.getProxy();
         if (proxy == null) {
-            proxy = config.getDefaultProxy();
+            proxy = determineProxy(host, request, context);
         }
 
         HttpHost target;

Copied: httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/conn/TestDefaultProxyRoutePlanner.java (from r1429593, httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/conn/TestDefaultRoutePlanner.java)
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/conn/TestDefaultProxyRoutePlanner.java?p2=httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/conn/TestDefaultProxyRoutePlanner.java&p1=httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/conn/TestDefaultRoutePlanner.java&r1=1429593&r2=1429930&rev=1429930&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/conn/TestDefaultRoutePlanner.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/conn/TestDefaultProxyRoutePlanner.java Mon Jan  7 18:22:35 2013
@@ -30,6 +30,8 @@ package org.apache.http.impl.conn;
 import org.apache.http.HttpHost;
 import org.apache.http.HttpRequest;
 import org.apache.http.HttpVersion;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.protocol.HttpClientContext;
 import org.apache.http.conn.SchemePortResolver;
 import org.apache.http.conn.routing.HttpRoute;
 import org.apache.http.message.BasicHttpRequest;
@@ -41,21 +43,24 @@ import org.junit.Test;
 import org.mockito.Mockito;
 
 /**
- * Tests for {@link DefaultRoutePlanner}.
+ * Tests for {@link DefaultProxyRoutePlanner}.
  */
-public class TestDefaultRoutePlanner {
+public class TestDefaultProxyRoutePlanner {
 
+    private HttpHost defaultProxy;
     private SchemePortResolver schemePortResolver;
-    private DefaultRoutePlanner routePlanner;
+    private DefaultProxyRoutePlanner routePlanner;
 
     @Before
     public void setup() {
+        defaultProxy = new HttpHost("default.proxy.host", 8888);
         schemePortResolver = Mockito.mock(SchemePortResolver.class);
-        routePlanner = new DefaultRoutePlanner(schemePortResolver);
+        routePlanner = new DefaultProxyRoutePlanner(defaultProxy,
+            schemePortResolver);
     }
 
     @Test
-    public void testDirect() throws Exception {
+    public void testDefaultProxyDirect() throws Exception {
         HttpHost target = new HttpHost("somehost", 80, "http");
         HttpRequest request = new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1);
 
@@ -63,23 +68,25 @@ public class TestDefaultRoutePlanner {
         HttpRoute route = routePlanner.determineRoute(target, request, context);
 
         Assert.assertEquals(target, route.getTargetHost());
-        Assert.assertEquals(1, route.getHopCount());
+        Assert.assertEquals(defaultProxy, route.getProxyHost());
+        Assert.assertEquals(2, route.getHopCount());
         Assert.assertFalse(route.isSecure());
-        Mockito.verify(schemePortResolver, Mockito.never()).resolve(Mockito.<HttpHost>any());
     }
 
     @Test
-    public void testDirectDefaultPort() throws Exception {
-        HttpHost target = new HttpHost("somehost", -1, "https");
-        Mockito.when(schemePortResolver.resolve(target)).thenReturn(443);
+    public void testViaProxy() throws Exception {
+        HttpHost target = new HttpHost("somehost", 80, "http");
+        HttpHost proxy = new HttpHost("custom.proxy.host", 8080);
         HttpRequest request = new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1);
 
-        HttpContext context = new BasicHttpContext();
+        HttpClientContext context = HttpClientContext.create();
+        context.setRequestConfig(RequestConfig.custom().setProxy(proxy).build());
         HttpRoute route = routePlanner.determineRoute(target, request, context);
 
-        Assert.assertEquals(new HttpHost("somehost", 443, "https"), route.getTargetHost());
-        Assert.assertEquals(1, route.getHopCount());
-        Assert.assertTrue(route.isSecure());
+        Assert.assertEquals(target, route.getTargetHost());
+        Assert.assertEquals(proxy, route.getProxyHost());
+        Assert.assertEquals(2, route.getHopCount());
+        Assert.assertFalse(route.isSecure());
     }
 
 }

Modified: httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/conn/TestDefaultRoutePlanner.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/conn/TestDefaultRoutePlanner.java?rev=1429930&r1=1429929&r2=1429930&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/conn/TestDefaultRoutePlanner.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/conn/TestDefaultRoutePlanner.java Mon Jan  7 18:22:35 2013
@@ -30,6 +30,8 @@ package org.apache.http.impl.conn;
 import org.apache.http.HttpHost;
 import org.apache.http.HttpRequest;
 import org.apache.http.HttpVersion;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.protocol.HttpClientContext;
 import org.apache.http.conn.SchemePortResolver;
 import org.apache.http.conn.routing.HttpRoute;
 import org.apache.http.message.BasicHttpRequest;
@@ -82,4 +84,21 @@ public class TestDefaultRoutePlanner {
         Assert.assertTrue(route.isSecure());
     }
 
+    @Test
+    public void testViaProxy() throws Exception {
+        HttpHost target = new HttpHost("somehost", 80, "http");
+        HttpHost proxy = new HttpHost("proxy", 8080);
+        HttpRequest request = new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1);
+
+        HttpClientContext context = HttpClientContext.create();
+        context.setRequestConfig(RequestConfig.custom().setProxy(proxy).build());
+        HttpRoute route = routePlanner.determineRoute(target, request, context);
+
+        Assert.assertEquals(target, route.getTargetHost());
+        Assert.assertEquals(proxy, route.getProxyHost());
+        Assert.assertEquals(2, route.getHopCount());
+        Assert.assertFalse(route.isSecure());
+        Mockito.verify(schemePortResolver, Mockito.never()).resolve(Mockito.<HttpHost>any());
+    }
+
 }