hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sebb <seb...@gmail.com>
Subject Re: svn commit: r915013 - in /httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn: AbstractClientConnAdapter.java DefaultClientConnection.java
Date Mon, 22 Feb 2010 19:36:34 GMT
On 22/02/2010, olegk@apache.org <olegk@apache.org> wrote:
> Author: olegk
>  Date: Mon Feb 22 18:45:55 2010
>  New Revision: 915013
>
>  URL: http://svn.apache.org/viewvc?rev=915013&view=rev
>  Log:
>  HTTPCLIENT-915: mechanism to attatch user define attributes to connections
>
>  Modified:
>     httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/AbstractClientConnAdapter.java
>     httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultClientConnection.java
>
>  Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/AbstractClientConnAdapter.java
>  URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/AbstractClientConnAdapter.java?rev=915013&r1=915012&r2=915013&view=diff
>  ==============================================================================
>  --- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/AbstractClientConnAdapter.java
(original)
>  +++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/AbstractClientConnAdapter.java
Mon Feb 22 18:45:55 2010
>  @@ -43,6 +43,7 @@
>   import org.apache.http.conn.OperatedClientConnection;
>   import org.apache.http.conn.ManagedClientConnection;
>   import org.apache.http.conn.ClientConnectionManager;
>  +import org.apache.http.protocol.HttpContext;
>
>   /**
>   * Abstract adapter from {@link OperatedClientConnection operated} to
>  @@ -65,7 +66,8 @@
>   *
>   * @since 4.0
>   */
>  -public abstract class AbstractClientConnAdapter implements ManagedClientConnection
{
>  +public abstract class AbstractClientConnAdapter
>  +                            implements ManagedClientConnection, HttpContext {
>
>      /**
>       * The connection manager, if any.
>  @@ -322,4 +324,32 @@
>          }
>      }
>
>  +    public synchronized Object getAttribute(final String id) {
>  +        OperatedClientConnection conn = getWrappedConnection();
>  +        assertValid(conn);
>  +        if (conn instanceof HttpContext) {
>  +            return ((HttpContext) conn).getAttribute(id);
>  +        } else {
>  +            return null;
>  +        }
>  +    }
>  +
>  +    public synchronized Object removeAttribute(final String id) {
>  +        OperatedClientConnection conn = getWrappedConnection();
>  +        assertValid(conn);
>  +        if (conn instanceof HttpContext) {
>  +            return ((HttpContext) conn).removeAttribute(id);
>  +        } else {
>  +            return null;
>  +        }
>  +    }
>  +
>  +    public synchronized void setAttribute(final String id, final Object obj) {
>  +        OperatedClientConnection conn = getWrappedConnection();
>  +        assertValid(conn);
>  +        if (conn instanceof HttpContext) {
>  +            ((HttpContext) conn).setAttribute(id, obj);
>  +        }
>  +    }
>  +
>   }
>
>  Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultClientConnection.java
>  URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultClientConnection.java?rev=915013&r1=915012&r2=915013&view=diff
>  ==============================================================================
>  --- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultClientConnection.java
(original)
>  +++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultClientConnection.java
Mon Feb 22 18:45:55 2010
>  @@ -29,6 +29,8 @@
>
>   import java.io.IOException;
>   import java.net.Socket;
>  +import java.util.HashMap;
>  +import java.util.Map;
>
>   import org.apache.http.annotation.NotThreadSafe;
>
>  @@ -41,6 +43,7 @@
>   import org.apache.http.HttpResponse;
>   import org.apache.http.HttpResponseFactory;
>   import org.apache.http.params.HttpParams;
>  +import org.apache.http.protocol.HttpContext;
>   import org.apache.http.impl.SocketHttpClientConnection;
>   import org.apache.http.io.HttpMessageParser;
>   import org.apache.http.io.SessionInputBuffer;
>  @@ -65,7 +68,7 @@
>   */
>   @NotThreadSafe // connSecure, targetHost
>   public class DefaultClientConnection extends SocketHttpClientConnection
>  -    implements OperatedClientConnection {
>  +    implements OperatedClientConnection, HttpContext {
>
>      private final Log log = LogFactory.getLog(getClass());
>      private final Log headerLog = LogFactory.getLog("org.apache.http.headers");
>  @@ -83,8 +86,12 @@
>      /** True if this connection was shutdown. */
>      private volatile boolean shutdown;
>
>  +    /** connection specific attributes */
>  +    private final Map<String, Object> attributes;
>  +
>      public DefaultClientConnection() {
>          super();
>  +        this.attributes = new HashMap<String, Object>();

Maybe we could use ConcurrentHashMap here?
In which case, perhaps the synchronisation could be removed from some
of the new methods.

>      }
>
>      public final HttpHost getTargetHost() {
>  @@ -253,4 +260,16 @@
>          }
>      }
>
>  +    public Object getAttribute(final String id) {
>  +        return this.attributes.get(id);
>  +    }
>  +
>  +    public Object removeAttribute(final String id) {
>  +        return this.attributes.remove(id);
>  +    }
>  +
>  +    public void setAttribute(final String id, final Object obj) {
>  +        this.attributes.put(id, obj);
>  +    }
>  +
>   }
>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org


Mime
View raw message