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/02 11:12:59 UTC

svn commit: r1427723 - in /httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/methods: AbstractExecutionAwareRequest.java HttpRequestBase.java

Author: olegk
Date: Wed Jan  2 10:12:59 2013
New Revision: 1427723

URL: http://svn.apache.org/viewvc?rev=1427723&view=rev
Log:
HTTPCLIENT-1288: moved HttpExecutionAware implementation code to AbstractExecutionAwareRequest class

Added:
    httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/methods/AbstractExecutionAwareRequest.java
      - copied, changed from r1427541, httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/methods/HttpRequestBase.java
Modified:
    httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/methods/HttpRequestBase.java

Copied: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/methods/AbstractExecutionAwareRequest.java (from r1427541, httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/methods/HttpRequestBase.java)
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/methods/AbstractExecutionAwareRequest.java?p2=httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/methods/AbstractExecutionAwareRequest.java&p1=httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/methods/HttpRequestBase.java&r1=1427541&r2=1427723&rev=1427723&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/methods/HttpRequestBase.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/methods/AbstractExecutionAwareRequest.java Wed Jan  2 10:12:59 2013
@@ -24,98 +24,32 @@
  * <http://www.apache.org/>.
  *
  */
-
 package org.apache.http.client.methods;
 
 import java.io.IOException;
-import java.net.URI;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
-import org.apache.http.ProtocolVersion;
-import org.apache.http.RequestLine;
-import org.apache.http.annotation.NotThreadSafe;
-import org.apache.http.client.config.RequestConfig;
+import org.apache.http.HttpRequest;
 import org.apache.http.client.utils.CloneUtils;
 import org.apache.http.concurrent.Cancellable;
 import org.apache.http.conn.ClientConnectionRequest;
 import org.apache.http.conn.ConnectionReleaseTrigger;
 import org.apache.http.message.AbstractHttpMessage;
-import org.apache.http.message.BasicRequestLine;
-import org.apache.http.params.HttpProtocolParams;
 
-/**
- * Base implementation of {@link HttpUriRequest}.
- *
- * @since 4.0
- */
 @SuppressWarnings("deprecation")
-@NotThreadSafe
-public abstract class HttpRequestBase extends AbstractHttpMessage
-    implements HttpUriRequest, Configurable, HttpExecutionAware, AbortableHttpRequest, Cloneable {
+public abstract class AbstractExecutionAwareRequest extends AbstractHttpMessage implements
+        HttpExecutionAware, AbortableHttpRequest, Cloneable, HttpRequest {
 
-    private Lock abortLock;
+    private final Lock abortLock;
     private volatile boolean aborted;
+    private volatile Cancellable cancellable;
 
-    private ProtocolVersion version;
-    private URI uri;
-    private Cancellable cancellable;
-    private RequestConfig config;
-
-    public HttpRequestBase() {
+    protected AbstractExecutionAwareRequest() {
         super();
         this.abortLock = new ReentrantLock();
     }
 
-    public abstract String getMethod();
-
-    /**
-     * @since 4.3
-     */
-    public void setProtocolVersion(final ProtocolVersion version) {
-        this.version = version;
-    }
-
-    public ProtocolVersion getProtocolVersion() {
-        return version != null ? version : HttpProtocolParams.getVersion(getParams());
-    }
-
-    /**
-     * Returns the original request URI.
-     * <p>
-     * Please note URI remains unchanged in the course of request execution and
-     * is not updated if the request is redirected to another location.
-     */
-    public URI getURI() {
-        return this.uri;
-    }
-
-    public RequestLine getRequestLine() {
-        String method = getMethod();
-        ProtocolVersion ver = getProtocolVersion();
-        URI uri = getURI();
-        String uritext = null;
-        if (uri != null) {
-            uritext = uri.toASCIIString();
-        }
-        if (uritext == null || uritext.length() == 0) {
-            uritext = "/";
-        }
-        return new BasicRequestLine(method, uritext, ver);
-    }
-
-    public void setURI(final URI uri) {
-        this.uri = uri;
-    }
-
-    public RequestConfig getConfig() {
-        return config;
-    }
-
-    public void setConfig(final RequestConfig config) {
-        this.config = config;
-    }
-
     @Deprecated
     public void setConnectionRequest(final ClientConnectionRequest connRequest) {
         if (this.aborted) {
@@ -187,12 +121,6 @@ public abstract class HttpRequestBase ex
     /**
      * @since 4.2
      */
-    public void started() {
-    }
-
-    /**
-     * @since 4.2
-     */
     public void setCancellable(final Cancellable cancellable) {
         if (this.aborted) {
             return;
@@ -205,6 +133,14 @@ public abstract class HttpRequestBase ex
         }
     }
 
+    @Override
+    public Object clone() throws CloneNotSupportedException {
+        AbstractExecutionAwareRequest clone = (AbstractExecutionAwareRequest) super.clone();
+        clone.headergroup = CloneUtils.cloneObject(this.headergroup);
+        clone.params = CloneUtils.cloneObject(this.params);
+        return clone;
+    }
+
     /**
      * @since 4.2
      */
@@ -232,30 +168,4 @@ public abstract class HttpRequestBase ex
         }
     }
 
-    /**
-     * A convenience method to simplify migration from HttpClient 3.1 API. This method is
-     * equivalent to {@link #reset()}.
-     *
-     * @since 4.2
-     */
-    public void releaseConnection() {
-        reset();
-    }
-
-    @Override
-    public Object clone() throws CloneNotSupportedException {
-        HttpRequestBase clone = (HttpRequestBase) super.clone();
-        clone.abortLock = new ReentrantLock();
-        clone.aborted = false;
-        clone.cancellable = null;
-        clone.headergroup = CloneUtils.cloneObject(this.headergroup);
-        clone.params = CloneUtils.cloneObject(this.params);
-        return clone;
-    }
-
-    @Override
-    public String toString() {
-        return getMethod() + " " + getURI() + " " + getProtocolVersion();
-    }
-
 }

Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/methods/HttpRequestBase.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/methods/HttpRequestBase.java?rev=1427723&r1=1427722&r2=1427723&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/methods/HttpRequestBase.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/methods/HttpRequestBase.java Wed Jan  2 10:12:59 2013
@@ -27,20 +27,12 @@
 
 package org.apache.http.client.methods;
 
-import java.io.IOException;
 import java.net.URI;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
 
 import org.apache.http.ProtocolVersion;
 import org.apache.http.RequestLine;
 import org.apache.http.annotation.NotThreadSafe;
 import org.apache.http.client.config.RequestConfig;
-import org.apache.http.client.utils.CloneUtils;
-import org.apache.http.concurrent.Cancellable;
-import org.apache.http.conn.ClientConnectionRequest;
-import org.apache.http.conn.ConnectionReleaseTrigger;
-import org.apache.http.message.AbstractHttpMessage;
 import org.apache.http.message.BasicRequestLine;
 import org.apache.http.params.HttpProtocolParams;
 
@@ -51,22 +43,13 @@ import org.apache.http.params.HttpProtoc
  */
 @SuppressWarnings("deprecation")
 @NotThreadSafe
-public abstract class HttpRequestBase extends AbstractHttpMessage
-    implements HttpUriRequest, Configurable, HttpExecutionAware, AbortableHttpRequest, Cloneable {
-
-    private Lock abortLock;
-    private volatile boolean aborted;
+public abstract class HttpRequestBase extends AbstractExecutionAwareRequest
+    implements HttpUriRequest, Configurable {
 
     private ProtocolVersion version;
     private URI uri;
-    private Cancellable cancellable;
     private RequestConfig config;
 
-    public HttpRequestBase() {
-        super();
-        this.abortLock = new ReentrantLock();
-    }
-
     public abstract String getMethod();
 
     /**
@@ -104,9 +87,6 @@ public abstract class HttpRequestBase ex
         return new BasicRequestLine(method, uritext, ver);
     }
 
-    public void setURI(final URI uri) {
-        this.uri = uri;
-    }
 
     public RequestConfig getConfig() {
         return config;
@@ -116,72 +96,8 @@ public abstract class HttpRequestBase ex
         this.config = config;
     }
 
-    @Deprecated
-    public void setConnectionRequest(final ClientConnectionRequest connRequest) {
-        if (this.aborted) {
-            return;
-        }
-        this.abortLock.lock();
-        try {
-            this.cancellable = new Cancellable() {
-
-                public boolean cancel() {
-                    connRequest.abortRequest();
-                    return true;
-                }
-
-            };
-        } finally {
-            this.abortLock.unlock();
-        }
-    }
-
-    @Deprecated
-    public void setReleaseTrigger(final ConnectionReleaseTrigger releaseTrigger) {
-        if (this.aborted) {
-            return;
-        }
-        this.abortLock.lock();
-        try {
-            this.cancellable = new Cancellable() {
-
-                public boolean cancel() {
-                    try {
-                        releaseTrigger.abortConnection();
-                        return true;
-                    } catch (IOException ex) {
-                        return false;
-                    }
-                }
-
-            };
-        } finally {
-            this.abortLock.unlock();
-        }
-    }
-
-    private void cancelExecution() {
-        if (this.cancellable != null) {
-            this.cancellable.cancel();
-            this.cancellable = null;
-        }
-    }
-
-    public void abort() {
-        if (this.aborted) {
-            return;
-        }
-        this.abortLock.lock();
-        try {
-            this.aborted = true;
-            cancelExecution();
-        } finally {
-            this.abortLock.unlock();
-        }
-    }
-
-    public boolean isAborted() {
-        return this.aborted;
+    public void setURI(final URI uri) {
+        this.uri = uri;
     }
 
     /**
@@ -191,48 +107,6 @@ public abstract class HttpRequestBase ex
     }
 
     /**
-     * @since 4.2
-     */
-    public void setCancellable(final Cancellable cancellable) {
-        if (this.aborted) {
-            return;
-        }
-        this.abortLock.lock();
-        try {
-            this.cancellable = cancellable;
-        } finally {
-            this.abortLock.unlock();
-        }
-    }
-
-    /**
-     * @since 4.2
-     */
-    public void completed() {
-        this.abortLock.lock();
-        try {
-            this.cancellable = null;
-        } finally {
-            this.abortLock.unlock();
-        }
-    }
-
-    /**
-     * Resets internal state of the request making it reusable.
-     *
-     * @since 4.2
-     */
-    public void reset() {
-        this.abortLock.lock();
-        try {
-            cancelExecution();
-            this.aborted = false;
-        } finally {
-            this.abortLock.unlock();
-        }
-    }
-
-    /**
      * A convenience method to simplify migration from HttpClient 3.1 API. This method is
      * equivalent to {@link #reset()}.
      *
@@ -243,17 +117,6 @@ public abstract class HttpRequestBase ex
     }
 
     @Override
-    public Object clone() throws CloneNotSupportedException {
-        HttpRequestBase clone = (HttpRequestBase) super.clone();
-        clone.abortLock = new ReentrantLock();
-        clone.aborted = false;
-        clone.cancellable = null;
-        clone.headergroup = CloneUtils.cloneObject(this.headergroup);
-        clone.params = CloneUtils.cloneObject(this.params);
-        return clone;
-    }
-
-    @Override
     public String toString() {
         return getMethod() + " " + getURI() + " " + getProtocolVersion();
     }