Return-Path: X-Original-To: apmail-hc-commits-archive@www.apache.org Delivered-To: apmail-hc-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id F361B10B30 for ; Thu, 6 Jun 2013 12:17:18 +0000 (UTC) Received: (qmail 25809 invoked by uid 500); 6 Jun 2013 12:17:18 -0000 Delivered-To: apmail-hc-commits-archive@hc.apache.org Received: (qmail 25758 invoked by uid 500); 6 Jun 2013 12:17:17 -0000 Mailing-List: contact commits-help@hc.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "HttpComponents Project" Delivered-To: mailing list commits@hc.apache.org Received: (qmail 25751 invoked by uid 99); 6 Jun 2013 12:17:17 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 06 Jun 2013 12:17:17 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 06 Jun 2013 12:17:14 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id D1A9423888E3 for ; Thu, 6 Jun 2013 12:16:53 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1490251 - in /httpcomponents/httpclient/trunk/httpclient/src: main/java/org/apache/http/conn/ main/java/org/apache/http/impl/client/ main/java/org/apache/http/impl/conn/ test/java/org/apache/http/impl/client/integration/ Date: Thu, 06 Jun 2013 12:16:53 -0000 To: commits@hc.apache.org From: olegk@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20130606121653.D1A9423888E3@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: olegk Date: Thu Jun 6 12:16:53 2013 New Revision: 1490251 URL: http://svn.apache.org/r1490251 Log: SchemePortResolver to throw UnsupportedSchemeException in case of an unknown protocol scheme Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/conn/SchemePortResolver.java httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/BasicAuthCache.java httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultRoutePlanner.java httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultSchemePortResolver.java httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/client/integration/TestRedirects.java Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/conn/SchemePortResolver.java URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/conn/SchemePortResolver.java?rev=1490251&r1=1490250&r2=1490251&view=diff ============================================================================== --- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/conn/SchemePortResolver.java (original) +++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/conn/SchemePortResolver.java Thu Jun 6 12:16:53 2013 @@ -38,6 +38,6 @@ public interface SchemePortResolver { /** * Returns the actual port for the host based on the protocol scheme. */ - int resolve(HttpHost host); + int resolve(HttpHost host) throws UnsupportedSchemeException; } Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/BasicAuthCache.java URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/BasicAuthCache.java?rev=1490251&r1=1490250&r2=1490251&view=diff ============================================================================== --- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/BasicAuthCache.java (original) +++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/BasicAuthCache.java Thu Jun 6 12:16:53 2013 @@ -33,6 +33,7 @@ import org.apache.http.annotation.NotThr import org.apache.http.auth.AuthScheme; import org.apache.http.client.AuthCache; import org.apache.http.conn.SchemePortResolver; +import org.apache.http.conn.UnsupportedSchemeException; import org.apache.http.impl.conn.DefaultSchemePortResolver; import org.apache.http.util.Args; @@ -65,7 +66,12 @@ public class BasicAuthCache implements A protected HttpHost getKey(final HttpHost host) { if (host.getPort() <= 0) { - final int port = schemePortResolver.resolve(host); + final int port; + try { + port = schemePortResolver.resolve(host); + } catch (final UnsupportedSchemeException ignore) { + return host; + } return new HttpHost(host.getHostName(), port, host.getSchemeName()); } else { return host; 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=1490251&r1=1490250&r2=1490251&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 Thu Jun 6 12:16:53 2013 @@ -36,6 +36,7 @@ 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.UnsupportedSchemeException; import org.apache.http.conn.routing.HttpRoute; import org.apache.http.conn.routing.HttpRoutePlanner; import org.apache.http.protocol.HttpContext; @@ -74,10 +75,14 @@ public class DefaultRoutePlanner impleme HttpHost target; if (host.getPort() <= 0) { - target = new HttpHost( - host.getHostName(), - this.schemePortResolver.resolve(host), - host.getSchemeName()); + try { + target = new HttpHost( + host.getHostName(), + this.schemePortResolver.resolve(host), + host.getSchemeName()); + } catch (final UnsupportedSchemeException ex) { + throw new HttpException(ex.getMessage()); + } } else { target = host; } Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultSchemePortResolver.java URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultSchemePortResolver.java?rev=1490251&r1=1490250&r2=1490251&view=diff ============================================================================== --- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultSchemePortResolver.java (original) +++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultSchemePortResolver.java Thu Jun 6 12:16:53 2013 @@ -28,6 +28,7 @@ package org.apache.http.impl.conn; import org.apache.http.HttpHost; import org.apache.http.conn.SchemePortResolver; +import org.apache.http.conn.UnsupportedSchemeException; import org.apache.http.util.Args; /** @@ -39,16 +40,19 @@ public class DefaultSchemePortResolver i public static final DefaultSchemePortResolver INSTANCE = new DefaultSchemePortResolver(); - public int resolve(final HttpHost host) { + public int resolve(final HttpHost host) throws UnsupportedSchemeException { Args.notNull(host, "HTTP host"); final int port = host.getPort(); if (port > 0) { return port; } else { - if ("https".equalsIgnoreCase(host.getSchemeName())) { + final String name = host.getSchemeName(); + if (name.equalsIgnoreCase("http")) { + return 80; + } else if (name.equalsIgnoreCase("https")) { return 443; } else { - return 80; + throw new UnsupportedSchemeException(name + " protocol is not supported"); } } } Modified: httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/client/integration/TestRedirects.java URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/client/integration/TestRedirects.java?rev=1490251&r1=1490250&r2=1490251&view=diff ============================================================================== --- httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/client/integration/TestRedirects.java (original) +++ httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/client/integration/TestRedirects.java Thu Jun 6 12:16:53 2013 @@ -631,14 +631,20 @@ public class TestRedirects extends Integ } } - @Test(expected=IOException.class) + @Test(expected=ClientProtocolException.class) public void testRejectBogusRedirectLocation() throws Exception { final HttpHost target = getServerHttp(); this.localServer.register("*", new BogusRedirectService("xxx://bogus")); final HttpGet httpget = new HttpGet("/oldlocation/"); - this.httpclient.execute(target, httpget); + try { + this.httpclient.execute(target, httpget); + } catch (ClientProtocolException ex) { + Throwable cause = ex.getCause(); + Assert.assertTrue(cause instanceof HttpException); + throw ex; + } } @Test(expected=ClientProtocolException.class)