Release 4.0 Alpha 3 ------------------- The third ALPHA version of HttpCore has been released. The ALPHA3 release includes a number of API optimizations and improvements and introduces a set of NIO extensions to the HttpCore API. NIO extensions can be used to build HTTP services intended to handle thousands of simultaneous connections with a small number of I/O threads. * [HTTPCORE-15] Provided a interafce to access IP address of the local and remote end points. Contributed by Oleg Kalnichevski * [ HTTPCORE-14] Scheme, SocketFactory and SecureSocketFactory moved to HttpClient. Decoupled HttpHost and Scheme. Contributed by Oleg Kalnichevski * [HTTPCORE-13] Refactored HttpProcessor interface and related impl classes Contributed by Roland Weber * [HTTPCORE-11] Client connection interface no longer defines a specific method to open a connection. HTTP connections can now represent any abstract I/O transport such as those based on NIO API. Contributed by Oleg Kalnichevski * [HTTPCORE-10] Non-blocking (async) client side I/O transport based on NIO. Contributed by Oleg Kalnichevski * [HTTPCORE-9] Non-blocking (async) server side I/O transport based on NIO. Contributed by Oleg Kalnichevski * [HTTPCORE-7] ConnectionReuseStrategy interface changed to allow access to the HTTP execution context. Contributed by Roland Weber * [HTTPCORE-6] Header implementation allowing for performance short-cuts when serializing and deserializing HTTP headers. Contributed by Oleg Kalnichevski * [HTTPCORE-5] Header, HeaderElement, NameValuePair, RequestLine, StatusLine, HttpVersion changed to interfaces. API no longer contains any parsing and formatting code and does not imply any specific physical representation of HTTP messages and their elements. Contributed by Oleg Kalnichevski API changes (generated by JarDiff 0.2) -------------------------------------- Class removed: public org.apache.http.ConnectTimeoutException extends java.io.InterruptedIOException Class removed: public abstract org.apache.http.HttpProxyConnection extends java.lang.Object implements org.apache.http.HttpClientConnection Class removed: public org.apache.http.ProxyHost extends org.apache.http.HttpHost Class removed: public org.apache.http.Scheme extends java.lang.Object Class removed: public abstract org.apache.http.entity.EntityDeserializer extends java.lang.Object Class removed: public abstract org.apache.http.entity.EntitySerializer extends java.lang.Object Class removed: public org.apache.http.impl.DefaultHttpProxyConnection extends org.apache.http.impl.DefaultHttpClientConnection implements org.apache.http.HttpProxyConnection Class removed: public org.apache.http.impl.entity.DefaultEntityDeserializer extends java.lang.Object implements org.apache.http.entity.EntityDeserializer Class removed: public org.apache.http.impl.entity.DefaultEntitySerializer extends java.lang.Object implements org.apache.http.entity.EntitySerializer Class removed: public org.apache.http.impl.io.PlainSocketFactory extends java.lang.Object implements org.apache.http.io.SocketFactory Class removed: public org.apache.http.impl.io.SSLSocketFactory extends java.lang.Object implements org.apache.http.io.SecureSocketFactory Class removed: public final org.apache.http.io.ByteArrayBuffer extends java.lang.Object Class removed: public final org.apache.http.io.CharArrayBuffer extends java.lang.Object Class removed: public abstract org.apache.http.io.HttpDataReceiverFactory extends java.lang.Object Class removed: public abstract org.apache.http.io.HttpDataTransmitterFactory extends java.lang.Object Class removed: public org.apache.http.io.MalformedChunkCodingException extends java.io.IOException Class removed: public abstract org.apache.http.io.SecureSocketFactory extends java.lang.Object implements org.apache.http.io.SocketFactory Class removed: public abstract org.apache.http.io.SocketFactory extends java.lang.Object Class removed: public abstract org.apache.http.protocol.AbstractHttpProcessor extends java.lang.Object Class removed: public org.apache.http.protocol.GeneratedHeader extends org.apache.http.Header Class added: public abstract org.apache.http.HttpInetConnection extends java.lang.Object implements org.apache.http.HttpConnection Class added: public org.apache.http.MalformedChunkCodingException extends java.io.IOException Class added: public abstract org.apache.http.entity.ContentLengthStrategy extends java.lang.Object Class added: public abstract org.apache.http.impl.AbstractHttpClientConnection extends java.lang.Object implements org.apache.http.HttpClientConnection Class added: public abstract org.apache.http.impl.AbstractHttpServerConnection extends java.lang.Object implements org.apache.http.HttpServerConnection Class added: public org.apache.http.impl.SocketHttpClientConnection extends org.apache.http.impl.AbstractHttpClientConnection implements org.apache.http.HttpInetConnection Class added: public org.apache.http.impl.SocketHttpServerConnection extends org.apache.http.impl.AbstractHttpServerConnection implements org.apache.http.HttpInetConnection Class added: public org.apache.http.impl.entity.EntityDeserializer extends java.lang.Object Class added: public org.apache.http.impl.entity.EntitySerializer extends java.lang.Object Class added: public org.apache.http.impl.entity.LaxContentLengthStrategy extends java.lang.Object implements org.apache.http.entity.ContentLengthStrategy Class added: public org.apache.http.impl.entity.StrictContentLengthStrategy extends java.lang.Object implements org.apache.http.entity.ContentLengthStrategy Class added: public org.apache.http.message.BasicHeader extends java.lang.Object implements org.apache.http.Header Class added: public org.apache.http.message.BasicHeaderElement extends java.lang.Object implements org.apache.http.HeaderElement Class added: public org.apache.http.message.BasicHttpVersion extends org.apache.http.HttpVersion Class added: public org.apache.http.message.BasicNameValuePair extends java.lang.Object implements org.apache.http.NameValuePair Class added: public org.apache.http.message.BasicRequestLine extends java.lang.Object implements org.apache.http.RequestLine Class added: public org.apache.http.message.BasicStatusLine extends java.lang.Object implements org.apache.http.StatusLine Class added: public org.apache.http.message.BufferedHeader extends java.lang.Object implements org.apache.http.Header Class added: public org.apache.http.protocol.BasicHttpProcessor extends java.lang.Object implements org.apache.http.protocol.HttpProcessor Class added: public abstract org.apache.http.protocol.HttpProcessor extends java.lang.Object implements org.apache.http.HttpRequestInterceptor, org.apache.http.HttpResponseInterceptor Class added: public abstract org.apache.http.protocol.HttpRequestHandler extends java.lang.Object Class added: public org.apache.http.protocol.HttpRequestHandlerRegistry extends java.lang.Object implements org.apache.http.protocol.HttpRequestHandlerResolver Class added: public abstract org.apache.http.protocol.HttpRequestHandlerResolver extends java.lang.Object Class added: public org.apache.http.protocol.SyncHttpExecutionContext extends org.apache.http.protocol.HttpExecutionContext Class added: public final org.apache.http.util.ByteArrayBuffer extends java.lang.Object Class added: public final org.apache.http.util.CharArrayBuffer extends java.lang.Object Class changed: org.apache.http.ConnectionReuseStrategy Methods removed: public abstract boolean keepAlive(org.apache.http.HttpResponse); Methods added: public abstract boolean keepAlive(org.apache.http.HttpResponse, org.apache.http.protocol.HttpContext); Class changed: org.apache.http.Header Methods removed: public Header(java.lang.String, java.lang.String); public static java.lang.String format(org.apache.http.Header); public static void format(org.apache.http.io.CharArrayBuffer, org.apache.http.Header); public java.lang.String toString(); Class descriptor changed: old: public org.apache.http.Header extends java.lang.Object new: public abstract org.apache.http.Header extends java.lang.Object Method changed: old: public org.apache.http.HeaderElement[] getElements(); new: public abstract org.apache.http.HeaderElement[] getElements(); Method changed: old: public java.lang.String getName(); new: public abstract java.lang.String getName(); Method changed: old: public java.lang.String getValue(); new: public abstract java.lang.String getValue(); Class changed: org.apache.http.HeaderElement Methods removed: public HeaderElement(java.lang.String, java.lang.String); public HeaderElement(java.lang.String, java.lang.String, org.apache.http.NameValuePair[]); public boolean equals(java.lang.Object); public static java.lang.String format(org.apache.http.HeaderElement); public static void format(org.apache.http.io.CharArrayBuffer, org.apache.http.HeaderElement); public static void formatAll(org.apache.http.io.CharArrayBuffer, org.apache.http.HeaderElement[]); public static java.lang.String formatAll(org.apache.http.HeaderElement[]); public int hashCode(); public final static org.apache.http.HeaderElement parse(java.lang.String); public static org.apache.http.HeaderElement parse(org.apache.http.io.CharArrayBuffer, int, int); public final static org.apache.http.HeaderElement[] parseAll(java.lang.String); public final static org.apache.http.HeaderElement[] parseAll(org.apache.http.io.CharArrayBuffer, int, int); public java.lang.String toString(); Class descriptor changed: old: public org.apache.http.HeaderElement extends java.lang.Object new: public abstract org.apache.http.HeaderElement extends java.lang.Object Method changed: old: public java.lang.String getName(); new: public abstract java.lang.String getName(); Method changed: old: public org.apache.http.NameValuePair getParameterByName(java.lang.String); new: public abstract org.apache.http.NameValuePair getParameterByName(java.lang.String); Method changed: old: public org.apache.http.NameValuePair[] getParameters(); new: public abstract org.apache.http.NameValuePair[] getParameters(); Method changed: old: public java.lang.String getValue(); new: public abstract java.lang.String getValue(); Class changed: org.apache.http.HttpClientConnection Methods removed: public abstract java.net.InetAddress getLocalAddress(); public abstract org.apache.http.HttpHost getTargetHost(); public abstract void open(org.apache.http.params.HttpParams) throws java.io.IOException; public abstract void setLocalAddress(java.net.InetAddress); public abstract void setTargetHost(org.apache.http.HttpHost); Class changed: org.apache.http.HttpHost Methods removed: public HttpHost(java.lang.String, int, org.apache.http.Scheme); public org.apache.http.Scheme getScheme(); Methods added: public HttpHost(java.lang.String, int, java.lang.String); public java.lang.String getSchemeName(); Fields added: public final static java.lang.String DEFAULT_SCHEME_NAME = http; Class changed: org.apache.http.HttpMessage Methods added: public abstract void addHeader(java.lang.String, java.lang.String); public abstract void setHeader(java.lang.String, java.lang.String); public abstract void setHeaders(org.apache.http.Header[]); Class changed: org.apache.http.HttpResponse Methods added: public abstract void setStatusLine(org.apache.http.HttpVersion, int); Class changed: org.apache.http.HttpServerConnection Methods removed: public abstract void bind(java.net.Socket, org.apache.http.params.HttpParams) throws java.io.IOException; Class changed: org.apache.http.HttpVersion Methods removed: public static java.lang.String format(org.apache.http.HttpVersion); public static void format(org.apache.http.io.CharArrayBuffer, org.apache.http.HttpVersion); public final static org.apache.http.HttpVersion parse(java.lang.String) throws org.apache.http.ProtocolException; public static org.apache.http.HttpVersion parse(org.apache.http.io.CharArrayBuffer, int, int) throws org.apache.http.ProtocolException; Class changed: org.apache.http.NameValuePair Methods removed: public NameValuePair(java.lang.String, java.lang.String); public boolean equals(java.lang.Object); public static java.lang.String format(org.apache.http.NameValuePair, boolean); public static void format(org.apache.http.io.CharArrayBuffer, org.apache.http.NameValuePair, boolean); public static void formatAll(org.apache.http.io.CharArrayBuffer, org.apache.http.NameValuePair[], boolean); public static java.lang.String formatAll(org.apache.http.NameValuePair[], boolean); public int hashCode(); public final static org.apache.http.NameValuePair parse(java.lang.String); public static org.apache.http.NameValuePair parse(org.apache.http.io.CharArrayBuffer, int, int); public final static org.apache.http.NameValuePair[] parseAll(java.lang.String); public final static org.apache.http.NameValuePair[] parseAll(org.apache.http.io.CharArrayBuffer, int, int); public java.lang.String toString(); Class descriptor changed: old: public org.apache.http.NameValuePair extends java.lang.Object new: public abstract org.apache.http.NameValuePair extends java.lang.Object Method changed: old: public java.lang.String getName(); new: public abstract java.lang.String getName(); Method changed: old: public java.lang.String getValue(); new: public abstract java.lang.String getValue(); Class changed: org.apache.http.RequestLine Methods removed: public RequestLine(java.lang.String, java.lang.String, org.apache.http.HttpVersion); public static java.lang.String format(org.apache.http.RequestLine); public static void format(org.apache.http.io.CharArrayBuffer, org.apache.http.RequestLine); public final static org.apache.http.RequestLine parse(java.lang.String) throws org.apache.http.ProtocolException; public static org.apache.http.RequestLine parse(org.apache.http.io.CharArrayBuffer, int, int) throws org.apache.http.ProtocolException; public java.lang.String toString(); Class descriptor changed: old: public org.apache.http.RequestLine extends java.lang.Object new: public abstract org.apache.http.RequestLine extends java.lang.Object Method changed: old: public org.apache.http.HttpVersion getHttpVersion(); new: public abstract org.apache.http.HttpVersion getHttpVersion(); Method changed: old: public java.lang.String getMethod(); new: public abstract java.lang.String getMethod(); Method changed: old: public java.lang.String getUri(); new: public abstract java.lang.String getUri(); Class changed: org.apache.http.StatusLine Methods removed: public StatusLine(org.apache.http.HttpVersion, int); public StatusLine(org.apache.http.HttpVersion, int, java.lang.String); public static java.lang.String format(org.apache.http.StatusLine); public static void format(org.apache.http.io.CharArrayBuffer, org.apache.http.StatusLine); public final static org.apache.http.StatusLine parse(java.lang.String) throws org.apache.http.ProtocolException; public static org.apache.http.StatusLine parse(org.apache.http.io.CharArrayBuffer, int, int) throws org.apache.http.ProtocolException; public final java.lang.String toString(); Class descriptor changed: old: public org.apache.http.StatusLine extends java.lang.Object new: public abstract org.apache.http.StatusLine extends java.lang.Object Method changed: old: public final org.apache.http.HttpVersion getHttpVersion(); new: public abstract org.apache.http.HttpVersion getHttpVersion(); Method changed: old: public final java.lang.String getReasonPhrase(); new: public abstract java.lang.String getReasonPhrase(); Method changed: old: public final int getStatusCode(); new: public abstract int getStatusCode(); Class changed: org.apache.http.impl.DefaultConnectionReuseStrategy Methods removed: public boolean keepAlive(org.apache.http.HttpResponse); Methods added: public boolean keepAlive(org.apache.http.HttpResponse, org.apache.http.protocol.HttpContext); Class changed: org.apache.http.impl.DefaultHttpClientConnection Methods removed: public DefaultHttpClientConnection(org.apache.http.HttpHost); public DefaultHttpClientConnection(org.apache.http.HttpHost, java.net.InetAddress); public void flush() throws java.io.IOException; public java.net.InetAddress getLocalAddress(); public org.apache.http.HttpHost getTargetHost(); public boolean isResponseAvailable(int) throws java.io.IOException; public void open(org.apache.http.params.HttpParams) throws java.io.IOException; protected void readResponseHeaders(org.apache.http.HttpResponse) throws org.apache.http.HttpException, java.io.IOException; protected org.apache.http.HttpResponse readResponseStatusLine(org.apache.http.params.HttpParams) throws org.apache.http.HttpException, java.io.IOException; public void receiveResponseEntity(org.apache.http.HttpResponse) throws org.apache.http.HttpException, java.io.IOException; public org.apache.http.HttpResponse receiveResponseHeader(org.apache.http.params.HttpParams) throws org.apache.http.HttpException, java.io.IOException; public void sendRequestEntity(org.apache.http.HttpEntityEnclosingRequest) throws org.apache.http.HttpException, java.io.IOException; public void sendRequestHeader(org.apache.http.HttpRequest) throws org.apache.http.HttpException, java.io.IOException; protected void sendRequestHeaders(org.apache.http.HttpRequest) throws org.apache.http.HttpException, java.io.IOException; protected void sendRequestLine(org.apache.http.HttpRequest) throws org.apache.http.HttpException, java.io.IOException; public void setEntityDeserializer(org.apache.http.entity.EntityDeserializer); public void setEntitySerializer(org.apache.http.entity.EntitySerializer); public void setLocalAddress(java.net.InetAddress); public void setResponseFactory(org.apache.http.HttpResponseFactory); public void setTargetHost(org.apache.http.HttpHost); Methods added: public void bind(java.net.Socket, org.apache.http.params.HttpParams) throws java.io.IOException; Class descriptor changed: old: public org.apache.http.impl.DefaultHttpClientConnection extends org.apache.http.impl.AbstractHttpConnection implements org.apache.http.HttpClientConnection new: public org.apache.http.impl.DefaultHttpClientConnection extends org.apache.http.impl.SocketHttpClientConnection Class changed: org.apache.http.impl.DefaultHttpServerConnection Methods removed: public void flush() throws java.io.IOException; public void receiveRequestEntity(org.apache.http.HttpEntityEnclosingRequest) throws org.apache.http.HttpException, java.io.IOException; public org.apache.http.HttpRequest receiveRequestHeader(org.apache.http.params.HttpParams) throws org.apache.http.HttpException, java.io.IOException; protected void receiveRequestHeaders(org.apache.http.HttpRequest) throws org.apache.http.HttpException, java.io.IOException; protected org.apache.http.HttpRequest receiveRequestLine(org.apache.http.params.HttpParams) throws org.apache.http.HttpException, java.io.IOException; public void sendResponseEntity(org.apache.http.HttpResponse) throws org.apache.http.HttpException, java.io.IOException; public void sendResponseHeader(org.apache.http.HttpResponse) throws org.apache.http.HttpException, java.io.IOException; protected void sendResponseHeaders(org.apache.http.HttpResponse) throws org.apache.http.HttpException, java.io.IOException; protected void sendResponseStatusLine(org.apache.http.HttpResponse) throws org.apache.http.HttpException, java.io.IOException; public void setEntityDeserializer(org.apache.http.entity.EntityDeserializer); public void setEntitySerializer(org.apache.http.entity.EntitySerializer); public void setRequestFactory(org.apache.http.HttpRequestFactory); Class descriptor changed: old: public org.apache.http.impl.DefaultHttpServerConnection extends org.apache.http.impl.AbstractHttpConnection implements org.apache.http.HttpServerConnection new: public org.apache.http.impl.DefaultHttpServerConnection extends org.apache.http.impl.SocketHttpServerConnection Class changed: org.apache.http.impl.HeaderGroup Methods added: public void updateHeader(org.apache.http.Header); Class changed: org.apache.http.impl.io.AbstractHttpDataReceiver Methods removed: public int readLine(org.apache.http.io.CharArrayBuffer) throws java.io.IOException; Methods added: public int readLine(org.apache.http.util.CharArrayBuffer) throws java.io.IOException; Class changed: org.apache.http.impl.io.AbstractHttpDataTransmitter Methods removed: public void writeLine(org.apache.http.io.CharArrayBuffer) throws java.io.IOException; Methods added: public void writeLine(org.apache.http.util.CharArrayBuffer) throws java.io.IOException; Class changed: org.apache.http.io.HttpDataReceiver Methods removed: public abstract int readLine(org.apache.http.io.CharArrayBuffer) throws java.io.IOException; Methods added: public abstract int readLine(org.apache.http.util.CharArrayBuffer) throws java.io.IOException; Class changed: org.apache.http.io.HttpDataTransmitter Methods removed: public abstract void writeLine(org.apache.http.io.CharArrayBuffer) throws java.io.IOException; Methods added: public abstract void writeLine(org.apache.http.util.CharArrayBuffer) throws java.io.IOException; Class changed: org.apache.http.message.AbstractHttpMessage Methods added: public void addHeader(java.lang.String, java.lang.String); public void setHeader(java.lang.String, java.lang.String); public void setHeaders(org.apache.http.Header[]); Class changed: org.apache.http.message.BasicHttpEntityEnclosingRequest Methods added: public BasicHttpEntityEnclosingRequest(java.lang.String, java.lang.String, org.apache.http.HttpVersion); Class changed: org.apache.http.message.BasicHttpRequest Methods added: public BasicHttpRequest(java.lang.String, java.lang.String, org.apache.http.HttpVersion); Class changed: org.apache.http.message.BasicHttpResponse Methods removed: public BasicHttpResponse(); Methods added: public BasicHttpResponse(org.apache.http.HttpVersion, int); public void setStatusLine(org.apache.http.HttpVersion, int); Class changed: org.apache.http.params.HttpProtocolParams Methods removed: public static java.lang.String getCredentialCharset(org.apache.http.params.HttpParams); public static java.lang.String getVirtualHost(org.apache.http.params.HttpParams); public static void setCredentialCharset(org.apache.http.params.HttpParams, java.lang.String); public static void setVirtualHost(org.apache.http.params.HttpParams, java.lang.String); Fields removed: public final static java.lang.String CREDENTIAL_CHARSET = http.protocol.credential-charset; public final static java.lang.String DATE_PATTERNS = http.dateparser.patterns; public final static java.lang.String VIRTUAL_HOST = http.virtual-host; Class changed: org.apache.http.protocol.HttpRequestExecutor Methods removed: public HttpRequestExecutor(); public HttpRequestExecutor(org.apache.http.protocol.HttpContext); protected void doEstablishConnection(org.apache.http.HttpClientConnection, org.apache.http.HttpHost, org.apache.http.params.HttpParams) throws org.apache.http.HttpException, java.io.IOException; public org.apache.http.HttpResponse execute(org.apache.http.HttpRequest, org.apache.http.HttpClientConnection) throws java.io.IOException, org.apache.http.HttpException; public final org.apache.http.protocol.HttpContext getContext(); public final org.apache.http.protocol.HttpRequestRetryHandler getRetryHandler(); public final void setRetryHandler(org.apache.http.protocol.HttpRequestRetryHandler); Methods added: public HttpRequestExecutor(org.apache.http.protocol.HttpProcessor); public org.apache.http.HttpResponse execute(org.apache.http.HttpRequest, org.apache.http.HttpClientConnection, org.apache.http.protocol.HttpContext) throws java.io.IOException, org.apache.http.HttpException; Fields removed: protected final org.apache.http.protocol.HttpContext defaultContext; Class descriptor changed: old: public org.apache.http.protocol.HttpRequestExecutor extends org.apache.http.protocol.AbstractHttpProcessor new: public org.apache.http.protocol.HttpRequestExecutor extends java.lang.Object Class changed: org.apache.http.protocol.HttpService Methods removed: public HttpService(org.apache.http.HttpServerConnection); protected void closeConnection(); public void destroy(); protected void doService(org.apache.http.HttpRequest, org.apache.http.HttpResponse) throws org.apache.http.HttpException, java.io.IOException; public void handleRequest(); public boolean isActive(); public boolean isDestroyed(); protected void logIOException(java.io.IOException); protected void logMessage(java.lang.String); protected void logProtocolException(org.apache.http.HttpException); Methods added: public HttpService(org.apache.http.protocol.HttpProcessor, org.apache.http.ConnectionReuseStrategy, org.apache.http.HttpResponseFactory); protected void doService(org.apache.http.HttpRequest, org.apache.http.HttpResponse, org.apache.http.protocol.HttpContext) throws org.apache.http.HttpException, java.io.IOException; public void handleRequest(org.apache.http.HttpServerConnection, org.apache.http.protocol.HttpContext) throws java.io.IOException, org.apache.http.HttpException; public void setConnReuseStrategy(org.apache.http.ConnectionReuseStrategy); public void setHandlerResolver(org.apache.http.protocol.HttpRequestHandlerResolver); public void setHttpProcessor(org.apache.http.protocol.HttpProcessor); public void setResponseFactory(org.apache.http.HttpResponseFactory); Class descriptor changed: old: public org.apache.http.protocol.HttpService extends org.apache.http.protocol.AbstractHttpProcessor new: public org.apache.http.protocol.HttpService extends java.lang.Object Release 4.0 Alpha 2 ------------------- This is a maintenance release that mostly fixes minor problems found since the previous release. The upstream projects are strongly encouraged use this release as a dependency while HttpCore undergoes another round of reviews and optimization in the SVN trunk Changelog: --------- * [HTTPCORE-4] optional header and line length limits to contain OOME risks Contributed by Oleg Kalnichevski Release 4.0 Alpha 1 ------------------- This release represents a complete redesign of the Jakarta Commons HttpClient 3.x API and a significant rewrite of the core HTTP components derived from HttpClient 3.0 code base. These components will form the foundation of the future releases of Jakarta HttpClient and can also be used separately to build custom client- and server-side HTTP services.