You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ro...@apache.org on 2007/12/13 18:10:23 UTC

svn commit: r603956 - in /jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http: client/ClientRequestDirector.java impl/client/AbstractHttpClient.java impl/client/DefaultClientRequestDirector.java

Author: rolandw
Date: Thu Dec 13 09:10:22 2007
New Revision: 603956

URL: http://svn.apache.org/viewvc?rev=603956&view=rev
Log:
HTTPCLIENT-713: remove RoutedRequest from ClientRequestDirector interface

Modified:
    jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/ClientRequestDirector.java
    jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/AbstractHttpClient.java
    jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/DefaultClientRequestDirector.java

Modified: jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/ClientRequestDirector.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/ClientRequestDirector.java?rev=603956&r1=603955&r2=603956&view=diff
==============================================================================
--- jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/ClientRequestDirector.java (original)
+++ jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/ClientRequestDirector.java Thu Dec 13 09:10:22 2007
@@ -33,9 +33,11 @@
 
 import java.io.IOException;
 
+import org.apache.http.HttpRequest;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpException;
 import org.apache.http.protocol.HttpContext;
+import org.apache.http.conn.HttpRoute; //@@@ replace by HttpTarget
 import org.apache.http.conn.ManagedClientConnection;
 
 
@@ -78,7 +80,8 @@
      * This is the same behavior as for <code>HttpMethodDirector</code>
      * in HttpClient 3.
      *
-     * @param roureq    the route and request to execute
+     * @param request   the request to execute
+     * @param route     the route to the target of the request
      * @param context   the context for executing the request
      *
      * @return  the final response to the request.
@@ -88,7 +91,8 @@
      * @throws IOException              in case of an IO problem
      * @throws InterruptedException     in case of an interrupt
      */
-    HttpResponse execute(RoutedRequest roureq, HttpContext context)
+    HttpResponse execute(HttpRequest request, HttpRoute route,
+                         HttpContext context)
         throws HttpException, IOException, InterruptedException
         ;
 

Modified: jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/AbstractHttpClient.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/AbstractHttpClient.java?rev=603956&r1=603955&r2=603956&view=diff
==============================================================================
--- jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/AbstractHttpClient.java (original)
+++ jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/AbstractHttpClient.java Thu Dec 13 09:10:22 2007
@@ -508,7 +508,8 @@
                     determineParams(roureq.getRequest()));
         }
 
-        HttpResponse response = director.execute(roureq, context);
+        HttpResponse response = director.execute(roureq.getRequest(),
+                                                 roureq.getRoute(), context);
         // If the response depends on the connection, the director
         // will have set up an auto-release input stream.
 

Modified: jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/DefaultClientRequestDirector.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/DefaultClientRequestDirector.java?rev=603956&r1=603955&r2=603956&view=diff
==============================================================================
--- jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/DefaultClientRequestDirector.java (original)
+++ jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/DefaultClientRequestDirector.java Thu Dec 13 09:10:22 2007
@@ -258,10 +258,13 @@
     
     
     // non-javadoc, see interface ClientRequestDirector
-    public HttpResponse execute(RoutedRequest roureq, HttpContext context)
+    public HttpResponse execute(HttpRequest request, HttpRoute route,
+                                HttpContext context)
         throws HttpException, IOException, InterruptedException {
 
-        HttpRequest orig = roureq.getRequest();
+        RoutedRequest roureq = new RoutedRequest.Impl(request, route);
+
+        final HttpRequest orig = request;
 
         long timeout = HttpClientParams.getConnectionManagerTimeout(params);
         
@@ -271,8 +274,12 @@
         boolean done = false;
         try {
             while (!done) {
+                // In this loop, the RoutedRequest may be replaced by a
+                // followup request and route. The request and route passed
+                // in the method arguments will be replaced. The original
+                // request is still available in 'orig'.
 
-                HttpRoute route = roureq.getRoute();
+                route = roureq.getRoute();
 
                 // Allocate connection if needed
                 if (managedConn == null) {
@@ -303,15 +310,15 @@
                     }
                 }
 
-                // Wrap the original request
-                RequestWrapper request = wrapRequest(roureq.getRequest());
-                request.setParams(this.params);
+                // Wrap the request to be sent, original or followup.
+                RequestWrapper reqwrap = wrapRequest(roureq.getRequest());
+                reqwrap.setParams(this.params);
                 
                 // Re-write request URI if needed
-                rewriteRequestURI(request, route);
+                rewriteRequestURI(reqwrap, route);
                 
                 // Use virtual host if set
-                HttpHost target = (HttpHost) request.getParams().getParameter(
+                HttpHost target = (HttpHost) reqwrap.getParams().getParameter(
                         ClientPNames.VIRTUAL_HOST);
                 
                 if (target == null) {
@@ -331,21 +338,21 @@
                         targetAuthState);
                 context.setAttribute(ClientContext.PROXY_AUTH_STATE,
                         proxyAuthState);
-                requestExec.preProcess(request, httpProcessor, context);
+                requestExec.preProcess(reqwrap, httpProcessor, context);
                 
                 if (orig instanceof AbortableHttpRequest) {
                     ((AbortableHttpRequest) orig).setReleaseTrigger(managedConn);
                 }
 
                 context.setAttribute(ExecutionContext.HTTP_REQUEST,
-                        request);
+                        reqwrap);
 
                 execCount++;
                 try {
                     if (LOG.isDebugEnabled()) {
                         LOG.debug("Attempt " + execCount + " to execute request");
                     }
-                    response = requestExec.execute(request, managedConn, context);
+                    response = requestExec.execute(reqwrap, managedConn, context);
                     
                 } catch (IOException ex) {
                     LOG.debug("Closing the connection.");
@@ -369,7 +376,7 @@
                 requestExec.postProcess(response, httpProcessor, context);
                 
                 RoutedRequest followup =
-                    handleResponse(roureq, request, response, context);
+                    handleResponse(roureq, reqwrap, response, context);
                 if (followup == null) {
                     done = true;
                 } else {