Return-Path:
Delivered-To: apmail-jakarta-httpcomponents-commits-archive@www.apache.org
Received: (qmail 71693 invoked from network); 11 May 2007 09:30:36 -0000
Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2)
by minotaur.apache.org with SMTP; 11 May 2007 09:30:36 -0000
Received: (qmail 64009 invoked by uid 500); 11 May 2007 09:30:43 -0000
Delivered-To: apmail-jakarta-httpcomponents-commits-archive@jakarta.apache.org
Received: (qmail 63995 invoked by uid 500); 11 May 2007 09:30:42 -0000
Mailing-List: contact httpcomponents-commits-help@jakarta.apache.org;
run by ezmlm
Precedence: bulk
List-Help:
List-Unsubscribe:
List-Post:
List-Id:
Reply-To: httpcomponents-dev@jakarta.apache.org
Delivered-To: mailing list httpcomponents-commits@jakarta.apache.org
Received: (qmail 63986 invoked by uid 99); 11 May 2007 09:30:42 -0000
Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133)
by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 11 May 2007 02:30:42 -0700
X-ASF-Spam-Status: No, hits=-99.5 required=10.0
tests=ALL_TRUSTED,NO_REAL_NAME
X-Spam-Check-By: apache.org
Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3)
by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 11 May 2007 02:30:35 -0700
Received: by eris.apache.org (Postfix, from userid 65534)
id 0C30E1A9838; Fri, 11 May 2007 02:30:15 -0700 (PDT)
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: svn commit: r537144 - in
/jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http: auth/
impl/client/
Date: Fri, 11 May 2007 09:30:14 -0000
To: httpcomponents-commits@jakarta.apache.org
From: olegk@apache.org
X-Mailer: svnmailer-1.1.0
Message-Id: <20070511093015.0C30E1A9838@eris.apache.org>
X-Virus-Checked: Checked by ClamAV on apache.org
Author: olegk
Date: Fri May 11 02:30:13 2007
New Revision: 537144
URL: http://svn.apache.org/viewvc?view=rev&rev=537144
Log:
Implemented request URI rewriting (depending on whether the request is being routed via a proxy or not)
Modified:
jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/auth/AuthScheme.java
jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/auth/AuthScope.java
jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/auth/UsernamePasswordCredentials.java
jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/impl/client/AbstractHttpClient.java
jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/impl/client/DefaultClientRequestDirector.java
jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/impl/client/DefaultHttpClient.java
Modified: jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/auth/AuthScheme.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/auth/AuthScheme.java?view=diff&rev=537144&r1=537143&r2=537144
==============================================================================
--- jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/auth/AuthScheme.java (original)
+++ jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/auth/AuthScheme.java Fri May 11 02:30:13 2007
@@ -62,7 +62,7 @@
* challenge-response exchanges
*
*
- * @author Oleg Kalnichevski
+ * @author Oleg Kalnichevski
* @author Adrian Sutton
*
* @since 4.0
Modified: jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/auth/AuthScope.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/auth/AuthScope.java?view=diff&rev=537144&r1=537143&r2=537144
==============================================================================
--- jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/auth/AuthScope.java (original)
+++ jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/auth/AuthScope.java Fri May 11 02:30:13 2007
@@ -37,7 +37,7 @@
* a port number, a realm name and an authentication scheme name which
* {@link Credentials Credentials} apply to.
*
- * @author Oleg Kalnichevski
+ * @author Oleg Kalnichevski
* @author Adrian Sutton
*
* @since 3.0
Modified: jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/auth/UsernamePasswordCredentials.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/auth/UsernamePasswordCredentials.java?view=diff&rev=537144&r1=537143&r2=537144
==============================================================================
--- jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/auth/UsernamePasswordCredentials.java (original)
+++ jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/auth/UsernamePasswordCredentials.java Fri May 11 02:30:13 2007
@@ -38,7 +38,7 @@
* @author Remy Maucherat
* @author Sean C. Sullivan
* @author Mike Bowler
- * @author Oleg Kalnichevski
+ * @author Oleg Kalnichevski
*
* @version $Revision$ $Date$
*
Modified: jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/impl/client/AbstractHttpClient.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/impl/client/AbstractHttpClient.java?view=diff&rev=537144&r1=537143&r2=537144
==============================================================================
--- jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/impl/client/AbstractHttpClient.java (original)
+++ jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/impl/client/AbstractHttpClient.java Fri May 11 02:30:13 2007
@@ -64,7 +64,7 @@
* Convenience base class for HTTP client implementations.
*
* @author Roland Weber
- *
+ * @author Oleg Kalnichevski
*
*
* @version $Revision$
Modified: jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/impl/client/DefaultClientRequestDirector.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/impl/client/DefaultClientRequestDirector.java?view=diff&rev=537144&r1=537143&r2=537144
==============================================================================
--- jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/impl/client/DefaultClientRequestDirector.java (original)
+++ jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/impl/client/DefaultClientRequestDirector.java Fri May 11 02:30:13 2007
@@ -32,6 +32,7 @@
package org.apache.http.impl.client;
import java.io.IOException;
+import java.net.URI;
import java.net.URISyntaxException;
import org.apache.commons.logging.Log;
@@ -40,6 +41,7 @@
import org.apache.http.HttpEntity;
import org.apache.http.HttpEntityEnclosingRequest;
import org.apache.http.HttpException;
+import org.apache.http.HttpHost;
import org.apache.http.HttpRequest;
import org.apache.http.HttpResponse;
import org.apache.http.HttpVersion;
@@ -69,7 +71,7 @@
* This class replaces the HttpMethodDirector
in HttpClient 3.
*
* @author Roland Weber
- *
+ * @author Oleg Kalnichevski
*
*
* @version $Revision$
@@ -145,8 +147,8 @@
}
- private RequestWrapper wrapRequest(final RoutedRequest roureq) throws ProtocolException {
- HttpRequest request = roureq.getRequest();
+ private RequestWrapper wrapRequest(
+ final HttpRequest request) throws ProtocolException {
try {
if (request instanceof HttpEntityEnclosingRequest) {
return new EntityEnclosingRequestWrapper(
@@ -162,21 +164,65 @@
}
+ private void rewriteRequestURI(
+ final RequestWrapper request,
+ final HttpRoute route) throws ProtocolException {
+ try {
+
+ URI uri = request.getURI();
+ if (route.getProxyHost() != null && !route.isTunnelled()) {
+ // Make sure the request URI is absolute
+ if (!uri.isAbsolute()) {
+ HttpHost target = route.getTargetHost();
+ uri = new URI(
+ target.getSchemeName(),
+ null,
+ target.getHostName(),
+ target.getPort(),
+ uri.getPath(),
+ uri.getQuery(),
+ uri.getFragment());
+ request.setURI(uri);
+ }
+ } else {
+ // Make sure the request URI is relative
+ if (uri.isAbsolute()) {
+ uri = new URI(null, null, null, -1,
+ uri.getPath(),
+ uri.getQuery(),
+ uri.getFragment());
+ request.setURI(uri);
+ }
+ }
+
+ } catch (URISyntaxException ex) {
+ throw new ProtocolException("Invalid URI: " +
+ request.getRequestLine().getUri(), ex);
+ }
+ }
+
+
// non-javadoc, see interface ClientRequestDirector
public HttpResponse execute(RoutedRequest roureq, HttpContext context)
throws HttpException, IOException {
- RequestWrapper request = wrapRequest(roureq);
+ RequestWrapper request = wrapRequest(roureq.getRequest());
HttpResponse response = null;
boolean done = false;
try {
int execCount = 0;
while (!done) {
+
+ HttpRoute route = roureq.getRoute();
+
+ // Re-write request URI if needed
+ rewriteRequestURI(request, route);
+
if (managedConn == null) {
- managedConn = allocateConnection(roureq.getRoute());
+ managedConn = allocateConnection(route);
}
- establishRoute(roureq.getRoute(), context);
+ establishRoute(route, context);
context.setAttribute(HttpExecutionContext.HTTP_TARGET_HOST,
roureq.getRoute().getTargetHost());
Modified: jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/impl/client/DefaultHttpClient.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/impl/client/DefaultHttpClient.java?view=diff&rev=537144&r1=537143&r2=537144
==============================================================================
--- jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/impl/client/DefaultHttpClient.java (original)
+++ jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/impl/client/DefaultHttpClient.java Fri May 11 02:30:13 2007
@@ -82,7 +82,7 @@
* This class replaces HttpClient
in HttpClient 3.
*
* @author Roland Weber
- *
+ * @author Oleg Kalnichevski
*
*
* @version $Revision$