| Release 4.0 Alpha 4 |
| ------------------- |
| |
| ALPHA4 marks the completion of the overhaul of the connection management |
| code in HttpClient. All known shortcomings of the old HttpClient 3.x |
| connection management API have been addressed. |
| |
| NTLM authentication remains the only missing major feature in the new |
| codeline that prevents us from moving awards the API freeze. |
| |
| There has been a number of important bug fixes since ALPHA3. All upstream |
| projects are encouraged to upgrade to the latest release. |
| |
| ------------------- |
| |
| HttpClient 3.x features that have NOT yet been ported: |
| ------------------- |
| |
| * NTLM authentication scheme |
| |
| ------------------- |
| |
| Changelog: |
| ------------------- |
| |
| * [HTTPCLIENT-765] String.toLowerCase() / toUpperCase() should specify Locale.ENGLISH |
| |
| * [HTTPCLIENT-769] Do not pool connection marked non-reusable. |
| Contributed by Oleg Kalnichevski <olegk at apache.org> |
| |
| * [HTTPCLIENT-763] Fixed problem with AbstractClientConnAdapter#abortConnection() |
| not releasing the connection if called from the main execution thread while |
| there is no blocking I/O operation. |
| Contributed by Oleg Kalnichevski <olegk at apache.org> |
| |
| * [HTTPCLIENT-652] Added optional state attribute to managed client connections. |
| This enables connection managers to correctly handle stateful connections. |
| Contributed by Oleg Kalnichevski <olegk at apache.org> |
| |
| * [HTTPCLIENT-673] Revised max connections per route configuration |
| Contributed by Oleg Kalnichevski <olegk at apache.org> |
| |
| * [HTTPCLIENT-753] Class Scheme and related classes moved to a separate package |
| Contributed by Oleg Kalnichevski <olegk at apache.org> |
| |
| * [HTTPCLIENT-757] Improved request wrapping in the DefaultClientRequestDirector. |
| This also fixed the problem with the default proxy set at the client level |
| having no effect. |
| Contributed by Oleg Kalnichevski <olegk at apache.org> |
| |
| * [HTTPCLIENT-734] Request abort will unblock the thread waiting for a connection |
| Contributed by Sam Berlin <sberlin at gmail.com> |
| |
| * [HTTPCLIENT-759] Ensure release of connections back to the connection manager |
| on exceptions. |
| Contributed by Sam Berlin <sberlin at gmail.com> |
| |
| * [HTTPCLIENT-758] Fixed the use of generics in AbstractHttpClient |
| #removeRequestInterceptorByClass and #removeResponseInterceptorByClass |
| Contributed by Johannes Koch <johannes.koch at fit.fraunhofer.de> |
| |
| * [HTTPCLIENT-749] HttpParams beans |
| Contributed by Stojce Dimski <sdmiski at yahoo.it> |
| |
| * [HTTPCLIENT-755] Workaround for known bugs in java.net.URI.resolve() |
| Bug ID: 4708535 |
| Contributed by Johannes Koch <johannes.koch at fit.fraunhofer.de> |
| |
| HttpClient API changes (generated by JarDiff 0.2) |
| -------------------------------------- |
| Class removed: |
| public org.apache.http.client.methods.UrlEncodedFormEntity extends org.apache.http.entity.AbstractHttpEntity |
| Class removed: |
| public org.apache.http.client.utils.URLUtils extends java.lang.Object |
| Class removed: |
| public abstract org.apache.http.conn.LayeredSocketFactory extends java.lang.Object implements org.apache.http.conn.SocketFactory |
| Class removed: |
| public final org.apache.http.conn.PlainSocketFactory extends java.lang.Object implements org.apache.http.conn.SocketFactory |
| Class removed: |
| public final org.apache.http.conn.Scheme extends java.lang.Object |
| Class removed: |
| public final org.apache.http.conn.SchemeRegistry extends java.lang.Object |
| Class removed: |
| public abstract org.apache.http.conn.SocketFactory extends java.lang.Object |
| Class removed: |
| public org.apache.http.conn.util.SocketUtils extends java.lang.Object |
| Class removed: |
| public org.apache.http.impl.client.RoutedRequest.Impl extends java.lang.Object implements org.apache.http.impl.client.RoutedRequest |
| Class added: |
| public org.apache.http.auth.params.AuthParamBean extends org.apache.http.params.HttpAbstractParamBean |
| Class added: |
| public org.apache.http.client.entity.UrlEncodedFormEntity extends org.apache.http.entity.StringEntity |
| Class added: |
| public org.apache.http.client.params.ClientParamBean extends org.apache.http.params.HttpAbstractParamBean |
| Class added: |
| public org.apache.http.client.protocol.ClientContextConfigurer extends java.lang.Object |
| Class added: |
| public org.apache.http.client.utils.URIUtils extends java.lang.Object |
| Class added: |
| public org.apache.http.client.utils.URLEncodedUtils extends java.lang.Object |
| Class added: |
| public abstract org.apache.http.conn.ClientConnectionRequest extends java.lang.Object |
| Class added: |
| public final org.apache.http.conn.MultihomePlainSocketFactory extends java.lang.Object implements org.apache.http.conn.scheme.SocketFactory |
| Class added: |
| public org.apache.http.conn.params.ConnConnectionParamBean extends org.apache.http.params.HttpAbstractParamBean |
| Class added: |
| public org.apache.http.conn.params.ConnManagerParamBean extends org.apache.http.params.HttpAbstractParamBean |
| Class added: |
| public abstract org.apache.http.conn.params.ConnPerRoute extends java.lang.Object |
| Class added: |
| public final org.apache.http.conn.params.ConnPerRouteBean extends java.lang.Object implements org.apache.http.conn.params.ConnPerRoute |
| Class added: |
| public org.apache.http.conn.params.ConnRouteParamBean extends org.apache.http.params.HttpAbstractParamBean |
| Class added: |
| public abstract org.apache.http.conn.scheme.LayeredSocketFactory extends java.lang.Object implements org.apache.http.conn.scheme.SocketFactory |
| Class added: |
| public final org.apache.http.conn.scheme.PlainSocketFactory extends java.lang.Object implements org.apache.http.conn.scheme.SocketFactory |
| Class added: |
| public final org.apache.http.conn.scheme.Scheme extends java.lang.Object |
| Class added: |
| public final org.apache.http.conn.scheme.SchemeRegistry extends java.lang.Object |
| Class added: |
| public abstract org.apache.http.conn.scheme.SocketFactory extends java.lang.Object |
| Class added: |
| public org.apache.http.cookie.params.CookieSpecParamBean extends org.apache.http.params.HttpAbstractParamBean |
| Class added: |
| public org.apache.http.impl.conn.tsccm.Aborter extends java.lang.Object |
| Class added: |
| public abstract org.apache.http.impl.conn.tsccm.PoolEntryRequest extends java.lang.Object |
| Class added: |
| public org.apache.http.impl.conn.tsccm.WaitingThreadAborter extends java.lang.Object |
| Class changed: org.apache.http.auth.AuthSchemeRegistry |
| Methods added: |
| public synchronized void setItems(java.util.Map); |
| |
| Class changed: org.apache.http.client.ClientRequestDirector |
| Methods removed: |
| public abstract org.apache.http.conn.ManagedClientConnection getConnection(); |
| |
| Method changed: |
| old: |
| public abstract org.apache.http.HttpResponse execute(org.apache.http.HttpHost, org.apache.http.HttpRequest, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException, java.lang.InterruptedException; |
| |
| new: |
| public abstract org.apache.http.HttpResponse execute(org.apache.http.HttpHost, org.apache.http.HttpRequest, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException; |
| |
| Class changed: org.apache.http.client.HttpClient |
| Method changed: |
| old: |
| public abstract org.apache.http.HttpResponse execute(org.apache.http.HttpHost, org.apache.http.HttpRequest) throws org.apache.http.HttpException, java.io.IOException, java.lang.InterruptedException; |
| |
| new: |
| public abstract org.apache.http.HttpResponse execute(org.apache.http.HttpHost, org.apache.http.HttpRequest) throws org.apache.http.HttpException, java.io.IOException; |
| |
| Method changed: |
| old: |
| public abstract org.apache.http.HttpResponse execute(org.apache.http.HttpHost, org.apache.http.HttpRequest, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException, java.lang.InterruptedException; |
| |
| new: |
| public abstract org.apache.http.HttpResponse execute(org.apache.http.HttpHost, org.apache.http.HttpRequest, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException; |
| |
| Method changed: |
| old: |
| public abstract org.apache.http.HttpResponse execute(org.apache.http.client.methods.HttpUriRequest) throws org.apache.http.HttpException, java.io.IOException, java.lang.InterruptedException; |
| |
| new: |
| public abstract org.apache.http.HttpResponse execute(org.apache.http.client.methods.HttpUriRequest) throws org.apache.http.HttpException, java.io.IOException; |
| |
| Method changed: |
| old: |
| public abstract org.apache.http.HttpResponse execute(org.apache.http.client.methods.HttpUriRequest, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException, java.lang.InterruptedException; |
| |
| new: |
| public abstract org.apache.http.HttpResponse execute(org.apache.http.client.methods.HttpUriRequest, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException; |
| |
| Class changed: org.apache.http.client.methods.AbortableHttpRequest |
| Methods added: |
| public abstract void setConnectionRequest(org.apache.http.conn.ClientConnectionRequest) throws java.io.IOException; |
| |
| Method changed: |
| old: |
| public abstract void setReleaseTrigger(org.apache.http.conn.ConnectionReleaseTrigger); |
| |
| new: |
| public abstract void setReleaseTrigger(org.apache.http.conn.ConnectionReleaseTrigger) throws java.io.IOException; |
| |
| Class changed: org.apache.http.conn.ClientConnectionManager |
| Methods removed: |
| public abstract org.apache.http.conn.ManagedClientConnection getConnection(org.apache.http.conn.routing.HttpRoute) throws java.lang.InterruptedException; |
| public abstract org.apache.http.conn.ManagedClientConnection getConnection(org.apache.http.conn.routing.HttpRoute, long, java.util.concurrent.TimeUnit) throws org.apache.http.conn.ConnectionPoolTimeoutException, java.lang.InterruptedException; |
| public abstract org.apache.http.params.HttpParams getParams(); |
| public abstract org.apache.http.conn.SchemeRegistry getSchemeRegistry(); |
| |
| Methods added: |
| public abstract org.apache.http.conn.scheme.SchemeRegistry getSchemeRegistry(); |
| public abstract org.apache.http.conn.ClientConnectionRequest requestConnection(org.apache.http.conn.routing.HttpRoute, java.lang.Object); |
| |
| Class changed: org.apache.http.conn.ClientConnectionManagerFactory |
| Methods removed: |
| public abstract org.apache.http.conn.ClientConnectionManager newInstance(org.apache.http.params.HttpParams, org.apache.http.conn.SchemeRegistry); |
| |
| Methods added: |
| public abstract org.apache.http.conn.ClientConnectionManager newInstance(org.apache.http.params.HttpParams, org.apache.http.conn.scheme.SchemeRegistry); |
| |
| Class changed: org.apache.http.conn.ManagedClientConnection |
| Methods added: |
| public abstract java.lang.Object getState(); |
| public abstract void setState(java.lang.Object); |
| |
| Class changed: org.apache.http.conn.OperatedClientConnection |
| Methods removed: |
| public abstract void announce(java.net.Socket); |
| public abstract void open(java.net.Socket, org.apache.http.HttpHost, boolean, org.apache.http.params.HttpParams) throws java.io.IOException; |
| |
| Methods added: |
| public abstract void openCompleted(boolean, org.apache.http.params.HttpParams) throws java.io.IOException; |
| public abstract void opening(java.net.Socket, org.apache.http.HttpHost) throws java.io.IOException; |
| |
| Class changed: org.apache.http.conn.params.ConnManagerPNames |
| Fields removed: |
| public final static java.lang.String MAX_HOST_CONNECTIONS = http.connection-manager.max-per-host; |
| |
| Fields added: |
| public final static java.lang.String MAX_CONNECTIONS_PER_ROUTE = http.conn-manager.max-per-route; |
| |
| Field changed: |
| old: |
| public final static java.lang.String MAX_TOTAL_CONNECTIONS = http.connection-manager.max-total; |
| |
| new: |
| public final static java.lang.String MAX_TOTAL_CONNECTIONS = http.conn-manager.max-total; |
| |
| Class changed: org.apache.http.conn.params.HttpConnectionManagerParams |
| Methods removed: |
| public static int getDefaultMaxConnectionsPerHost(org.apache.http.params.HttpParams); |
| public static int getMaxConnectionsPerHost(org.apache.http.params.HttpParams, org.apache.http.conn.routing.HttpRoute); |
| public static void setDefaultMaxConnectionsPerHost(org.apache.http.params.HttpParams, int); |
| public static void setMaxConnectionsPerHost(org.apache.http.params.HttpParams, org.apache.http.conn.routing.HttpRoute, int); |
| |
| Methods added: |
| public static org.apache.http.conn.params.ConnPerRoute getMaxConnectionsPerRoute(org.apache.http.params.HttpParams); |
| public static void setMaxConnectionsPerRoute(org.apache.http.params.HttpParams, org.apache.http.conn.params.ConnPerRoute); |
| |
| Fields removed: |
| public final static int DEFAULT_MAX_HOST_CONNECTIONS = 2; |
| |
| Class descriptor changed: |
| old: |
| public final org.apache.http.conn.params.HttpConnectionManagerParams extends java.lang.Object |
| new: |
| public final org.apache.http.conn.params.HttpConnectionManagerParams extends java.lang.Object implements org.apache.http.conn.params.ConnManagerPNames |
| Class changed: org.apache.http.conn.ssl.SSLSocketFactory |
| Class descriptor changed: |
| old: |
| public org.apache.http.conn.ssl.SSLSocketFactory extends java.lang.Object implements org.apache.http.conn.LayeredSocketFactory |
| new: |
| public org.apache.http.conn.ssl.SSLSocketFactory extends java.lang.Object implements org.apache.http.conn.scheme.LayeredSocketFactory |
| Class changed: org.apache.http.conn.util.InetAddressUtils |
| Methods removed: |
| public InetAddressUtils(); |
| |
| Class changed: org.apache.http.cookie.CookieSpecRegistry |
| Methods added: |
| public synchronized void setItems(java.util.Map); |
| |
| Class changed: org.apache.http.impl.client.AbstractHttpClient |
| Methods added: |
| protected org.apache.http.client.ClientRequestDirector createClientRequestDirector(org.apache.http.conn.ClientConnectionManager, org.apache.http.ConnectionReuseStrategy, org.apache.http.conn.routing.HttpRoutePlanner, org.apache.http.protocol.HttpProcessor, org.apache.http.client.HttpRequestRetryHandler, org.apache.http.client.RedirectHandler, org.apache.http.client.AuthenticationHandler, org.apache.http.client.AuthenticationHandler, org.apache.http.params.HttpParams); |
| |
| Method changed: |
| old: |
| public final org.apache.http.HttpResponse execute(org.apache.http.HttpHost, org.apache.http.HttpRequest) throws org.apache.http.HttpException, java.io.IOException, java.lang.InterruptedException; |
| |
| new: |
| public final org.apache.http.HttpResponse execute(org.apache.http.HttpHost, org.apache.http.HttpRequest) throws org.apache.http.HttpException, java.io.IOException; |
| |
| Method changed: |
| old: |
| public final org.apache.http.HttpResponse execute(org.apache.http.HttpHost, org.apache.http.HttpRequest, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException, java.lang.InterruptedException; |
| |
| new: |
| public final org.apache.http.HttpResponse execute(org.apache.http.HttpHost, org.apache.http.HttpRequest, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException; |
| |
| Method changed: |
| old: |
| public final org.apache.http.HttpResponse execute(org.apache.http.client.methods.HttpUriRequest) throws org.apache.http.HttpException, java.io.IOException, java.lang.InterruptedException; |
| |
| new: |
| public final org.apache.http.HttpResponse execute(org.apache.http.client.methods.HttpUriRequest) throws org.apache.http.HttpException, java.io.IOException; |
| |
| Method changed: |
| old: |
| public final org.apache.http.HttpResponse execute(org.apache.http.client.methods.HttpUriRequest, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException, java.lang.InterruptedException; |
| |
| new: |
| public final org.apache.http.HttpResponse execute(org.apache.http.client.methods.HttpUriRequest, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException; |
| |
| Class changed: org.apache.http.impl.client.DefaultClientRequestDirector |
| Methods removed: |
| protected org.apache.http.conn.ManagedClientConnection allocateConnection(org.apache.http.conn.routing.HttpRoute, long) throws org.apache.http.HttpException, org.apache.http.conn.ConnectionPoolTimeoutException, java.lang.InterruptedException; |
| protected org.apache.http.impl.client.RoutedRequest determineRoute(org.apache.http.HttpHost, org.apache.http.HttpRequest, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException; |
| public org.apache.http.conn.ManagedClientConnection getConnection(); |
| protected org.apache.http.impl.client.RoutedRequest handleResponse(org.apache.http.impl.client.RoutedRequest, org.apache.http.HttpRequest, org.apache.http.HttpResponse, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException; |
| |
| Methods added: |
| protected org.apache.http.conn.routing.HttpRoute determineRoute(org.apache.http.HttpHost, org.apache.http.HttpRequest, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException; |
| protected org.apache.http.impl.client.RoutedRequest handleResponse(org.apache.http.impl.client.RoutedRequest, org.apache.http.HttpResponse, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException; |
| |
| Method changed: |
| old: |
| public org.apache.http.HttpResponse execute(org.apache.http.HttpHost, org.apache.http.HttpRequest, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException, java.lang.InterruptedException; |
| |
| new: |
| public org.apache.http.HttpResponse execute(org.apache.http.HttpHost, org.apache.http.HttpRequest, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException; |
| |
| Class changed: org.apache.http.impl.client.RoutedRequest |
| Methods removed: |
| public abstract org.apache.http.HttpRequest getRequest(); |
| |
| Methods added: |
| public RoutedRequest(org.apache.http.impl.client.RequestWrapper, org.apache.http.conn.routing.HttpRoute); |
| public final org.apache.http.impl.client.RequestWrapper getRequest(); |
| |
| Fields added: |
| protected final org.apache.http.impl.client.RequestWrapper request; |
| protected final org.apache.http.conn.routing.HttpRoute route; |
| |
| Class descriptor changed: |
| old: |
| public abstract org.apache.http.impl.client.RoutedRequest extends java.lang.Object |
| new: |
| public org.apache.http.impl.client.RoutedRequest extends java.lang.Object |
| Method changed: |
| old: |
| public abstract org.apache.http.conn.routing.HttpRoute getRoute(); |
| |
| new: |
| public final org.apache.http.conn.routing.HttpRoute getRoute(); |
| |
| Class changed: org.apache.http.impl.conn.AbstractPoolEntry |
| Methods removed: |
| protected AbstractPoolEntry(org.apache.http.conn.OperatedClientConnection, org.apache.http.conn.routing.HttpRoute); |
| protected abstract org.apache.http.conn.ClientConnectionOperator getOperator(); |
| |
| Methods added: |
| protected AbstractPoolEntry(org.apache.http.conn.ClientConnectionOperator, org.apache.http.conn.routing.HttpRoute); |
| public java.lang.Object getState(); |
| public void setState(java.lang.Object); |
| |
| Fields removed: |
| protected org.apache.http.conn.routing.HttpRoute plannedRoute; |
| |
| Fields added: |
| protected final org.apache.http.conn.ClientConnectionOperator connOperator; |
| protected volatile org.apache.http.conn.routing.HttpRoute route; |
| protected volatile java.lang.Object state; |
| |
| Field changed: |
| old: |
| protected org.apache.http.conn.OperatedClientConnection connection; |
| |
| new: |
| protected volatile org.apache.http.conn.OperatedClientConnection connection; |
| |
| Field changed: |
| old: |
| protected org.apache.http.conn.routing.RouteTracker tracker; |
| |
| new: |
| protected volatile org.apache.http.conn.routing.RouteTracker tracker; |
| |
| Class changed: org.apache.http.impl.conn.AbstractPooledConnAdapter |
| Methods added: |
| public java.lang.Object getState(); |
| public void setState(java.lang.Object); |
| |
| Field changed: |
| old: |
| protected org.apache.http.impl.conn.AbstractPoolEntry poolEntry; |
| |
| new: |
| protected volatile org.apache.http.impl.conn.AbstractPoolEntry poolEntry; |
| |
| Class changed: org.apache.http.impl.conn.DefaultClientConnection |
| Methods removed: |
| public void announce(java.net.Socket); |
| public void open(java.net.Socket, org.apache.http.HttpHost, boolean, org.apache.http.params.HttpParams) throws java.io.IOException; |
| |
| Methods added: |
| public void openCompleted(boolean, org.apache.http.params.HttpParams) throws java.io.IOException; |
| public void opening(java.net.Socket, org.apache.http.HttpHost); |
| |
| Class changed: org.apache.http.impl.conn.DefaultClientConnectionOperator |
| Methods removed: |
| public DefaultClientConnectionOperator(org.apache.http.conn.SchemeRegistry); |
| |
| Methods added: |
| public DefaultClientConnectionOperator(org.apache.http.conn.scheme.SchemeRegistry); |
| |
| Class changed: org.apache.http.impl.conn.DefaultHttpRoutePlanner |
| Methods removed: |
| public DefaultHttpRoutePlanner(org.apache.http.conn.SchemeRegistry); |
| |
| Methods added: |
| public DefaultHttpRoutePlanner(org.apache.http.conn.scheme.SchemeRegistry); |
| |
| Class changed: org.apache.http.impl.conn.ProxySelectorRoutePlanner |
| Methods removed: |
| public ProxySelectorRoutePlanner(org.apache.http.conn.SchemeRegistry, java.net.ProxySelector); |
| |
| Methods added: |
| public ProxySelectorRoutePlanner(org.apache.http.conn.scheme.SchemeRegistry, java.net.ProxySelector); |
| |
| Class changed: org.apache.http.impl.conn.SingleClientConnManager |
| Methods removed: |
| public SingleClientConnManager(org.apache.http.params.HttpParams, org.apache.http.conn.SchemeRegistry); |
| protected org.apache.http.conn.ClientConnectionOperator createConnectionOperator(org.apache.http.conn.SchemeRegistry); |
| public org.apache.http.conn.ManagedClientConnection getConnection(org.apache.http.conn.routing.HttpRoute); |
| public final org.apache.http.conn.ManagedClientConnection getConnection(org.apache.http.conn.routing.HttpRoute, long, java.util.concurrent.TimeUnit); |
| public org.apache.http.params.HttpParams getParams(); |
| public org.apache.http.conn.SchemeRegistry getSchemeRegistry(); |
| |
| Methods added: |
| public SingleClientConnManager(org.apache.http.params.HttpParams, org.apache.http.conn.scheme.SchemeRegistry); |
| protected org.apache.http.conn.ClientConnectionOperator createConnectionOperator(org.apache.http.conn.scheme.SchemeRegistry); |
| protected void finalize() throws java.lang.Throwable; |
| public org.apache.http.conn.ManagedClientConnection getConnection(org.apache.http.conn.routing.HttpRoute, java.lang.Object); |
| public org.apache.http.conn.scheme.SchemeRegistry getSchemeRegistry(); |
| public final org.apache.http.conn.ClientConnectionRequest requestConnection(org.apache.http.conn.routing.HttpRoute, java.lang.Object); |
| |
| Fields removed: |
| protected org.apache.http.params.HttpParams params; |
| |
| Class changed: org.apache.http.impl.conn.SingleClientConnManager.PoolEntry |
| Methods removed: |
| protected SingleClientConnManager.PoolEntry(org.apache.http.impl.conn.SingleClientConnManager, org.apache.http.conn.OperatedClientConnection); |
| protected org.apache.http.conn.ClientConnectionOperator getOperator(); |
| |
| Methods added: |
| protected SingleClientConnManager.PoolEntry(org.apache.http.impl.conn.SingleClientConnManager); |
| |
| Class changed: org.apache.http.impl.conn.tsccm.AbstractConnPool |
| Methods removed: |
| protected AbstractConnPool(org.apache.http.conn.ClientConnectionManager); |
| public abstract org.apache.http.impl.conn.tsccm.BasicPoolEntry getEntry(org.apache.http.conn.routing.HttpRoute, long, java.util.concurrent.TimeUnit, org.apache.http.conn.ClientConnectionOperator) throws org.apache.http.conn.ConnectionPoolTimeoutException, java.lang.InterruptedException; |
| |
| Methods added: |
| protected AbstractConnPool(); |
| public final org.apache.http.impl.conn.tsccm.BasicPoolEntry getEntry(org.apache.http.conn.routing.HttpRoute, java.lang.Object, long, java.util.concurrent.TimeUnit) throws org.apache.http.conn.ConnectionPoolTimeoutException, java.lang.InterruptedException; |
| public abstract org.apache.http.impl.conn.tsccm.PoolEntryRequest requestPoolEntry(org.apache.http.conn.routing.HttpRoute, java.lang.Object); |
| |
| Fields removed: |
| protected org.apache.http.impl.conn.tsccm.AbstractConnPool.ConnMgrRef connManager; |
| protected org.apache.http.params.HttpParams params; |
| |
| Class changed: org.apache.http.impl.conn.tsccm.BasicPoolEntry |
| Methods removed: |
| protected org.apache.http.conn.ClientConnectionOperator getOperator(); |
| |
| Class changed: org.apache.http.impl.conn.tsccm.ConnPoolByRoute |
| Methods removed: |
| public ConnPoolByRoute(org.apache.http.conn.ClientConnectionManager); |
| public org.apache.http.impl.conn.tsccm.BasicPoolEntry getEntry(org.apache.http.conn.routing.HttpRoute, long, java.util.concurrent.TimeUnit, org.apache.http.conn.ClientConnectionOperator) throws org.apache.http.conn.ConnectionPoolTimeoutException, java.lang.InterruptedException; |
| protected org.apache.http.impl.conn.tsccm.BasicPoolEntry getFreeEntry(org.apache.http.impl.conn.tsccm.RouteSpecificPool); |
| |
| Methods added: |
| public ConnPoolByRoute(org.apache.http.conn.ClientConnectionOperator, org.apache.http.params.HttpParams); |
| protected org.apache.http.impl.conn.tsccm.BasicPoolEntry getEntryBlocking(org.apache.http.conn.routing.HttpRoute, java.lang.Object, long, java.util.concurrent.TimeUnit, org.apache.http.impl.conn.tsccm.WaitingThreadAborter) throws org.apache.http.conn.ConnectionPoolTimeoutException, java.lang.InterruptedException; |
| protected org.apache.http.impl.conn.tsccm.BasicPoolEntry getFreeEntry(org.apache.http.impl.conn.tsccm.RouteSpecificPool, java.lang.Object); |
| public org.apache.http.impl.conn.tsccm.PoolEntryRequest requestPoolEntry(org.apache.http.conn.routing.HttpRoute, java.lang.Object); |
| |
| Fields added: |
| protected final int maxTotalConnections; |
| protected final org.apache.http.conn.ClientConnectionOperator operator; |
| |
| Class changed: org.apache.http.impl.conn.tsccm.RouteSpecificPool |
| Methods removed: |
| public RouteSpecificPool(org.apache.http.conn.routing.HttpRoute); |
| public org.apache.http.impl.conn.tsccm.BasicPoolEntry allocEntry(); |
| |
| Methods added: |
| public RouteSpecificPool(org.apache.http.conn.routing.HttpRoute, int); |
| public org.apache.http.impl.conn.tsccm.BasicPoolEntry allocEntry(java.lang.Object); |
| public int getCapacity(); |
| public final int getMaxEntries(); |
| |
| Fields added: |
| protected final int maxEntries; |
| |
| Class changed: org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager |
| Methods removed: |
| public ThreadSafeClientConnManager(org.apache.http.params.HttpParams, org.apache.http.conn.SchemeRegistry); |
| protected org.apache.http.conn.ClientConnectionOperator createConnectionOperator(org.apache.http.conn.SchemeRegistry); |
| protected org.apache.http.impl.conn.tsccm.AbstractConnPool createConnectionPool(); |
| public org.apache.http.conn.ManagedClientConnection getConnection(org.apache.http.conn.routing.HttpRoute) throws java.lang.InterruptedException; |
| public org.apache.http.conn.ManagedClientConnection getConnection(org.apache.http.conn.routing.HttpRoute, long, java.util.concurrent.TimeUnit) throws org.apache.http.conn.ConnectionPoolTimeoutException, java.lang.InterruptedException; |
| public org.apache.http.params.HttpParams getParams(); |
| public org.apache.http.conn.SchemeRegistry getSchemeRegistry(); |
| |
| Methods added: |
| public ThreadSafeClientConnManager(org.apache.http.params.HttpParams, org.apache.http.conn.scheme.SchemeRegistry); |
| protected org.apache.http.conn.ClientConnectionOperator createConnectionOperator(org.apache.http.conn.scheme.SchemeRegistry); |
| protected org.apache.http.impl.conn.tsccm.AbstractConnPool createConnectionPool(org.apache.http.params.HttpParams); |
| protected void finalize() throws java.lang.Throwable; |
| public org.apache.http.conn.scheme.SchemeRegistry getSchemeRegistry(); |
| public org.apache.http.conn.ClientConnectionRequest requestConnection(org.apache.http.conn.routing.HttpRoute, java.lang.Object); |
| |
| Fields removed: |
| protected org.apache.http.params.HttpParams params; |
| |
| Class changed: org.apache.http.impl.conn.tsccm.WaitingThread |
| Methods added: |
| public void interrupt(); |
| |
| API diff generated by JarDiff http://www.osjava.org/jardiff/ |
| |
| -------------------------------------- |
| |
| Release 4.0 Alpha 3 |
| ------------------- |
| |
| ALPHA3 release brings another round of API refinements and improvements in |
| functionality. As of this release HttpClient requires Java 5 compatible |
| runtime environment and takes full advantage of generics and new concurrency |
| primitives. |
| |
| This release also introduces new default cookie policy that selects a cookie |
| specification depending on the format of cookies sent by the target host. |
| It is no longer necessary to know beforehand what kind of HTTP cookie support |
| the target host provides. HttpClient is now able to pick up either a lenient |
| or a strict cookie policy depending on the compliance level of the target host. |
| |
| Another notable improvement is a completely reworked support for multipart |
| entities based on Apache mime4j library. |
| |
| ------------------- |
| |
| HttpClient 3.x features that have NOT yet been ported: |
| ------------------- |
| |
| * NTLM authentication scheme |
| |
| ------------------- |
| |
| Changelog: |
| ------------------- |
| |
| * [HTTPCLIENT-742] common interface for HttpRoute and RouteTracker |
| Contributed by Roland Weber <rolandw at apache.org> |
| |
| * [HTTPCLIENT-741] Fixed concurrency issues in AbstractClientConnAdapter. |
| Contributed by Oleg Kalnichevski <olegk at apache.org> |
| |
| * [HTTPCLIENT-726] testcase for spurious wakeups in ThreadSafeClientConnManager |
| Contributed by Roland Weber <rolandw at apache.org> |
| |
| * [HTTPCLIENT-643] Automatic connect fail-over for multi-home remote servers. |
| Contributed by Oleg Kalnichevski <olegk at apache.org> |
| |
| * [HTTPCLIENT-735] unsetting of DEFAULT_PROXY and FORCED_ROUTE in hierarchies |
| Contributed by Roland Weber <rolandw at apache.org> |
| |
| * [HTTPCLIENT-723] route planner based on java.net.ProxySelector |
| Contributed by Roland Weber <rolandw at apache.org> |
| |
| * [HTTPCLIENT-740] don't start connection GC thread in pool constructor |
| Contributed by Roland Weber <rolandw at apache.org> |
| |
| * [HTTPCLIENT-736] route planners use SchemeRegistry instead of ConnManager |
| Contributed by Roland Weber <rolandw at apache.org> |
| |
| * [HTTPCLIENT-730] Fixed rewriting of URIs containing escaped characters |
| Contributed by Sam Berlin <sberlin at gmail.com> and |
| Oleg Kalnichevski <olegk at apache.org> |
| |
| * [HTTPCLIENT-667] Added 'Meta' cookie policy that selects a cookie |
| specification depending on the format of the cookie(s). |
| Contributed by Oleg Kalnichevski <olegk at apache.org> |
| |
| * [HTTPCLIENT-729] Move HttpRoute and related classes to routing package. |
| Contributed by Roland Weber <rolandw at apache.org> |
| |
| * [HTTPCLIENT-725] Use TimeUnit arguments for timeouts in connection manager. |
| Contributed by Roland Weber <rolandw at apache.org> |
| |
| * [HTTPCLIENT-677] Connection manager no longer uses Thread.interrupt(). |
| Contributed by Roland Weber <rolandw at apache.org> |
| |
| * [HTTPCLIENT-716] Allow application-defined routes. |
| Contributed by Roland Weber <rolandw at apache.org> |
| |
| * [HTTPCLIENT-712] Improve HttpRoute API |
| Contributed by Roland Weber <rolandw at apache.org> |
| |
| * [HTTPCLIENT-711] Bad route computed for redirected requests |
| Contributed by Oleg Kalnichevski <olegk at apache.org> |
| |
| * [HTTPCLIENT-715] Remove RoutedRequest from API |
| Contributed by Roland Weber <rolandw at apache.org> |
| |
| * [HTTPCLIENT-705] Fixed incorrect handling of URIs with null path component. |
| Contributed by Oleg Kalnichevski <olegk at apache.org> |
| |
| * [HTTPCLIENT-688] HttpOptions#getAllowedMethods can now handle multiple |
| Allow headers. |
| Contributed by Andrea Selva <selva.andre at gmail.com> |
| |
| -------------------------------------- |
| |
| Release 4.0 Alpha 2 |
| ------------------- |
| |
| ALPHA2 release is another milestone in the redesign of HttpClient. It includes |
| a number of improvements since ALPHA1, among which are improved connection |
| pooling, support for proxy chains, redesigned HTTP state and authentication |
| credentials management API, improved RFC 2965 cookie specification. |
| |
| ------------------- |
| |
| HttpClient 3.x features that have NOT yet been ported |
| ------------------- |
| * NTLM authentication scheme |
| |
| * Support for multipart MIME coded entities |
| |
| ------------------- |
| |
| Changelog |
| ------------------- |
| |
| * [HTTPCLIENT-698] Resolve non-absolute redirect URIs relative to |
| the request URI |
| Contributed by Johannes Koch <johannes.koch at fit.fraunhofer.de> |
| |
| * [HTTPCLIENT-697] Throw a more intelligible exception when connection |
| to a remote host cannot be established. |
| Contributed by Oleg Kalnichevski <olegk at apache.org> |
| |
| * [HTTPCLIENT-689] Caching of SimpleDateFormat in DateUtils |
| Contributed by Daniel Müller <strider at digitalstrider.com> |
| |
| * [HTTPCLIENT-689] stackable parameters in AbstractHttpClient |
| Contributed by Roland Weber <rolandw at apache.org> |
| |
| * [HTTPCLIENT-477] Use distinct instances of the authentication handler |
| interface for authentication with target and proxy hosts |
| Contributed by Oleg Kalnichevski <olegk at apache.org> |
| |
| * [HTTPCLIENT-690] ManagedClientConnection provides access to SSLSession |
| Contributed by Roland Weber <rolandw at apache.org> |
| |
| * [HTTPCLIENT-692] ClientConnectionManager throws InterruptedException |
| Contributed by Roland Weber <rolandw at apache.org> |
| |
| * [HTTPCORE-116] moved parameter names to interfaces |
| Contributed by Roland Weber <rolandw at apache.org> |
| |
| * [HTTPCLIENT-649] support for proxy chains in HttpConn |
| Contributed by Roland Weber <rolandw at apache.org> |
| |
| * [HTTPCLIENT-636] refactor ThreadSafeClientConnManager in separate package |
| Contributed by Roland Weber <rolandw at apache.org> |
| |
| * [HTTPCLIENT-669] new HttpRoutePlanner interface and implementation |
| Contributed by Andrea Selva <selva.andre at gmail.com> |
| |
| * [HTTPCLIENT-653] detached connection wrapper no longer prevents |
| garbage collection of ThreadSafeClientConnManager |
| Contributed by Roland Weber <rolandw at apache.org> |
| |
| * [HTTPCLIENT-674] use org.apache.http.util.VersionInfo instead of a local one |
| Contributed by Roland Weber <rolandw at apache.org> |
| |
| * [HTTPCLIENT-666] Replaced HttpState with CredentialsProvier and CookieStore interfaces |
| Contributed by Oleg Kalnichevski <olegk at apache.org> |
| |
| * [HTTPCORE-100] revised HttpContext hierarchy |
| Contributed by Roland Weber <rolandw at apache.org> |
| |
| * [HTTPCLIENT-618] eliminate class HostConfiguration |
| Contributed by Roland Weber <rolandw at apache.org> |
| |
| * [HTTPCLIENT-672] re-sync with API changes in core alpha6-SNAPSHOT |
| Contributed by Roland Weber <rolandw at apache.org> |
| |
| -------------------------------------- |
| |
| Release 4.0 Alpha 1 |
| ------------------- |
| |
| HttpClient 4.0 represents a complete, ground-up redesign and almost a complete |
| rewrite of the HttpClient 3.x codeline. This release finally addresses several |
| design flaws that existed since the 1.0 release and could not be fixed without |
| a major code overhaul and breaking API compatibility. |
| |
| The HttpClient 4.0 API is still very experimental and is bound to change |
| during the course of the ALPHA development phase. Several important features |
| have not yet been ported to the new API. |
| |
| Architectural changes |
| --------------------- |
| |
| * Redesign of the HttpClient internals addressing all known |
| major architectural shortcomings of the 3.x codeline |
| |
| * Cleaner, more flexible and expressive API |
| |
| * Better performance and smaller memory footprint due to a more |
| efficient HTTP transport based on HttpCore. HttpClient 4.0 is |
| expected to be 10% to 25% faster than HttpClient 3.x codeline |
| |
| * More modular structure |
| |
| * Pluggable redirect and authentication handlers |
| |
| * Support for protocol incerceptors |
| |
| * Improved connection management |
| |
| * Improved support for sending requests via a proxy or a chain of |
| proxies |
| |
| * Improved handling redirects of entity enclosing requests |
| |
| * More flexible SSL context customization |
| |
| * Reduced intermediate garbage in the process of |
| generating HTTP requests and parsing HTTP responses |
| |
| ------------------- |
| |
| HttpClient 3.x features that have NOT yet been ported |
| ------------------- |
| * NTLM authentication scheme |
| |
| * RFC2965 cookie policy (Cookie2) |
| |
| * Support for multipart MIME coded entities |
| |
| ------------------- |
| |
| Changelog |
| ------------------- |
| |
| The following is a list of contributions tracked in JIRA. |
| Note that this is not a complete list of contributions or changes. |
| Since the API was redesigned completely, tracking everything outside |
| of the source code repository would have been too burdensome. |
| |
| * [HTTPCLIENT-655] User-Agent string no longer violates RFC |
| Contributed by Oleg Kalnichevski <olegk at apache.org> |
| |
| * [HTTPCLIENT-541] Virtual host API redesign |
| Contributed by Oleg Kalnichevski <olegk at apache.org> |
| |
| * [HTTPCLIENT-614] Allow for different strategies when checking |
| CN of x509 certificates |
| Contributed by Julius Davies <juliusdavies at gmail.com> |
| |
| * [HTTPCLIENT-136] Fixed inadequate proxy support |
| Long standing architectural problem. Issue opened on 19/Dec/2002. |
| Contributed by Oleg Kalnichevski <olegk at apache.org> |
| |
| * [HTTPCLIENT-63] Support for pluggable redirect and authentication handlers |
| Long standing architectural problem. Issue opened on 15/Jul/2002. |
| Contributed by Oleg Kalnichevski <olegk at apache.org> |
| |
| * [HTTPCLIENT-245] Fixed redirect handling. HttpClient can now automatically |
| handle redirects of entity enclosing requests. |
| Long standing architectural problem. Issue opened on 14/Jul/2003. |
| Contributed by Oleg Kalnichevski <olegk at apache.org> |
| |
| * [HTTPCLIENT-613] HTTPS connections now verify CN of x509 certificates |
| Contributed by Julius Davies <juliusdavies at gmail.com> |
| |
| * [HTTPCLIENT-497] Wire/header logger names consistent with class loggers |
| Contributed by Oleg Kalnichevski <olegk at apache.org> |
| |
| * [HTTPCLIENT-484] AuthSSLProtocolSocketFactory in the main distribution |
| Contributed by Oleg Kalnichevski <olegk at apache.org> |
| |
| * [HTTPCLIENT-589] Do not consume the remaining response content if |
| the connection is to be closed |
| Contributed by Roland Weber <rolandw at apache.org> |
| |
| * [HTTPCLIENT-475] Support for unconnected sockets. HTTP requests can now be |
| aborted while network socket is still being connected. |
| Contributed by Roland Weber <rolandw at apache.org> |
| |