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 85CBBD092 for ; Fri, 17 May 2013 11:16:28 +0000 (UTC) Received: (qmail 63039 invoked by uid 500); 17 May 2013 11:02:23 -0000 Delivered-To: apmail-hc-commits-archive@hc.apache.org Received: (qmail 62951 invoked by uid 500); 17 May 2013 11:02:21 -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 62917 invoked by uid 99); 17 May 2013 11:02:20 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 17 May 2013 11:02:20 +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; Fri, 17 May 2013 11:02:16 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 76D972388962 for ; Fri, 17 May 2013 11:01:55 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1483736 - in /httpcomponents/httpclient/trunk: ./ httpclient/src/main/java/org/apache/http/client/protocol/ httpclient/src/main/java/org/apache/http/client/utils/ httpclient/src/main/java/org/apache/http/impl/client/ httpclient/src/main/ja... Date: Fri, 17 May 2013 11:01:55 -0000 To: commits@hc.apache.org From: olegk@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20130517110155.76D972388962@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: olegk Date: Fri May 17 11:01:54 2013 New Revision: 1483736 URL: http://svn.apache.org/r1483736 Log: HTTPCLIENT-1351: Preserve last request URI fragment in the execution context Modified: httpcomponents/httpclient/trunk/RELEASE_NOTES.txt httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/protocol/HttpClientContext.java httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/utils/URIBuilder.java httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/DefaultRedirectStrategy.java httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/execchain/ProtocolExec.java httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/client/TestDefaultRedirectStrategy.java Modified: httpcomponents/httpclient/trunk/RELEASE_NOTES.txt URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/RELEASE_NOTES.txt?rev=1483736&r1=1483735&r2=1483736&view=diff ============================================================================== --- httpcomponents/httpclient/trunk/RELEASE_NOTES.txt (original) +++ httpcomponents/httpclient/trunk/RELEASE_NOTES.txt Fri May 17 11:01:54 2013 @@ -1,6 +1,9 @@ Changes since release 4.3 BETA1 ------------------- +* [HTTPCLIENT-1351] Preserve last request URI fragment in the execution context. + Contributed by Oleg Kalnichevski + * [HTTPCLIENT-1344] Userinfo credentials in URI should not default to preemptive BASIC authentication. Contributed by Oleg Kalnichevski Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/protocol/HttpClientContext.java URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/protocol/HttpClientContext.java?rev=1483736&r1=1483735&r2=1483736&view=diff ============================================================================== --- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/protocol/HttpClientContext.java (original) +++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/protocol/HttpClientContext.java Fri May 17 11:01:54 2013 @@ -55,6 +55,12 @@ import org.apache.http.protocol.HttpCore public class HttpClientContext extends HttpCoreContext { /** + * Attribute name of a {@link String} object that represents + * request URI fragment of the actual request. + */ + public static final String URI_FRAGMENT = "http.uri-fragment"; + + /** * Attribute name of a {@link org.apache.http.conn.routing.RouteInfo} * object that represents the actual connection route. */ @@ -123,16 +129,12 @@ public class HttpClientContext extends H /** * Attribute name of a {@link org.apache.http.config.Lookup} object that represents * the actual {@link ConnectionSocketFactory} registry. - * - * @since 4.3 */ public static final String SOCKET_FACTORY_REGISTRY = "http.socket-factory-registry"; /** * Attribute name of a {@link org.apache.http.client.config.RequestConfig} object that * represents the actual request configuration. - * - * @since 4.3 */ public static final String REQUEST_CONFIG = "http.request-config"; @@ -156,6 +158,10 @@ public class HttpClientContext extends H super(); } + public String getUriFragemnt() { + return getAttribute(URI_FRAGMENT, String.class); + } + public RouteInfo getHttpRoute() { return getAttribute(HTTP_ROUTE, HttpRoute.class); } Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/utils/URIBuilder.java URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/utils/URIBuilder.java?rev=1483736&r1=1483735&r2=1483736&view=diff ============================================================================== --- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/utils/URIBuilder.java (original) +++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/utils/URIBuilder.java Fri May 17 11:01:54 2013 @@ -419,6 +419,20 @@ public class URIBuilder { return this; } + /** + * @since 4.3 + */ + public boolean isAbsolute() { + return this.scheme != null; + } + + /** + * @since 4.3 + */ + public boolean isOpaque() { + return this.path == null; + } + public String getScheme() { return this.scheme; } Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/DefaultRedirectStrategy.java URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/DefaultRedirectStrategy.java?rev=1483736&r1=1483735&r2=1483736&view=diff ============================================================================== --- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/DefaultRedirectStrategy.java (original) +++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/DefaultRedirectStrategy.java Fri May 17 11:01:54 2013 @@ -51,7 +51,6 @@ import org.apache.http.client.protocol.H import org.apache.http.client.utils.URIBuilder; import org.apache.http.client.utils.URIUtils; import org.apache.http.protocol.HttpContext; -import org.apache.http.protocol.HttpCoreContext; import org.apache.http.util.Args; import org.apache.http.util.Asserts; import org.apache.http.util.TextUtils; @@ -150,17 +149,17 @@ public class DefaultRedirectStrategy imp + uri + "' not allowed"); } // Adjust location URI - final HttpHost target = (HttpHost) context.getAttribute(HttpCoreContext.HTTP_TARGET_HOST); + final HttpHost target = clientContext.getTargetHost(); Asserts.notNull(target, "Target host"); final URI requestURI = new URI(request.getRequestLine().getUri()); - final URI absoluteRequestURI = URIUtils.rewriteURI(requestURI, target, true); + final URI absoluteRequestURI = URIUtils.rewriteURI(requestURI, target, false); uri = URIUtils.resolve(absoluteRequestURI, uri); } } catch (final URISyntaxException ex) { throw new ProtocolException(ex.getMessage(), ex); } - RedirectLocations redirectLocations = (RedirectLocations) context.getAttribute( + RedirectLocations redirectLocations = (RedirectLocations) clientContext.getAttribute( REDIRECT_LOCATIONS); if (redirectLocations == null) { redirectLocations = new RedirectLocations(); @@ -189,7 +188,6 @@ public class DefaultRedirectStrategy imp if (TextUtils.isEmpty(path)) { b.setPath("/"); } - b.setFragment(null); return b.build(); } catch (final URISyntaxException ex) { throw new ProtocolException("Invalid redirect URI: " + location, ex); Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/execchain/ProtocolExec.java URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/execchain/ProtocolExec.java?rev=1483736&r1=1483735&r2=1483736&view=diff ============================================================================== --- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/execchain/ProtocolExec.java (original) +++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/execchain/ProtocolExec.java Fri May 17 11:01:54 2013 @@ -72,11 +72,17 @@ public class ProtocolExec implements Cli this.httpProcessor = httpProcessor; } - private void rewriteRequestURI(final HttpRequestWrapper request, final HttpRoute route) - throws ProtocolException { + private void rewriteRequestURI( + final HttpRequestWrapper request, + final HttpRoute route, + final HttpClientContext context) throws ProtocolException { try { URI uri = request.getURI(); if (uri != null) { + final String fragment = uri.getFragment(); + if (fragment != null) { + context.setAttribute(HttpClientContext.URI_FRAGMENT, fragment); + } if (route.getProxyHost() != null && !route.isTunnelled()) { // Make sure the request URI is absolute if (!uri.isAbsolute()) { @@ -126,7 +132,7 @@ public class ProtocolExec implements Cli request.setURI(uri); // Re-write request URI if needed - rewriteRequestURI(request, route); + rewriteRequestURI(request, route, context); final HttpParams params = request.getParams(); HttpHost virtualHost = (HttpHost) params.getParameter(ClientPNames.VIRTUAL_HOST); Modified: httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/client/TestDefaultRedirectStrategy.java URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/client/TestDefaultRedirectStrategy.java?rev=1483736&r1=1483735&r2=1483736&view=diff ============================================================================== --- httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/client/TestDefaultRedirectStrategy.java (original) +++ httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/client/TestDefaultRedirectStrategy.java Fri May 17 11:01:54 2013 @@ -222,7 +222,7 @@ public class TestDefaultRedirectStrategy HttpStatus.SC_MOVED_TEMPORARILY, "Redirect"); response.addHeader("Location", "/stuff#fragment"); final URI uri = redirectStrategy.getLocationURI(httpget, response, context); - Assert.assertEquals(URI.create("http://localhost/stuff"), uri); + Assert.assertEquals(URI.create("http://localhost/stuff#fragment"), uri); } @Test @@ -235,7 +235,7 @@ public class TestDefaultRedirectStrategy HttpStatus.SC_MOVED_TEMPORARILY, "Redirect"); response.addHeader("Location", "http://localhost/stuff#fragment"); final URI uri = redirectStrategy.getLocationURI(httpget, response, context); - Assert.assertEquals(URI.create("http://localhost/stuff"), uri); + Assert.assertEquals(URI.create("http://localhost/stuff#fragment"), uri); } @Test