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 2012/09/09 19:14:57 UTC

svn commit: r1382543 - in /httpcomponents/httpcore/trunk: httpcore-nio/src/main/java/org/apache/http/impl/nio/ httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/ httpcore-nio/src/test/java/org/apache/http/impl/nio/codecs/ httpcore/src/main/jav...

Author: olegk
Date: Sun Sep  9 17:14:56 2012
New Revision: 1382543

URL: http://svn.apache.org/viewvc?rev=1382543&view=rev
Log:
Decoupled HttpParams and HTTP message parsers / writers

Added:
    httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/DefaultHttpRequestWriter.java
      - copied, changed from r1379062, httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/HttpRequestWriter.java
    httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/DefaultHttpResponseWriter.java
      - copied, changed from r1379062, httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/HttpResponseWriter.java
Modified:
    httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/DefaultNHttpClientConnection.java
    httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/DefaultNHttpServerConnection.java
    httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/AbstractMessageParser.java
    httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/AbstractMessageWriter.java
    httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/DefaultHttpRequestParser.java
    httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/DefaultHttpRequestWriter.java
    httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/DefaultHttpResponseParser.java
    httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/DefaultHttpResponseWriter.java
    httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/impl/nio/codecs/TestHttpMessageParser.java
    httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/AbstractMessageParser.java
    httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/AbstractMessageWriter.java
    httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/DefaultHttpRequestParser.java
    httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/DefaultHttpResponseParser.java
    httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/HttpRequestWriter.java
    httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/HttpResponseWriter.java
    httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/impl/io/TestRequestParser.java
    httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/impl/io/TestResponseParser.java

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/DefaultNHttpClientConnection.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/DefaultNHttpClientConnection.java?rev=1382543&r1=1382542&r2=1382543&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/DefaultNHttpClientConnection.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/DefaultNHttpClientConnection.java Sun Sep  9 17:14:56 2012
@@ -50,6 +50,7 @@ import org.apache.http.nio.reactor.IOSes
 import org.apache.http.nio.reactor.SessionInputBuffer;
 import org.apache.http.nio.reactor.SessionOutputBuffer;
 import org.apache.http.nio.util.ByteBufferAllocator;
+import org.apache.http.params.CoreConnectionPNames;
 import org.apache.http.params.HttpParams;
 import org.apache.http.util.Args;
 
@@ -111,7 +112,9 @@ public class DefaultNHttpClientConnectio
             final HttpResponseFactory responseFactory,
             final HttpParams params) {
         // override in derived class to specify a line parser
-        return new DefaultHttpResponseParser(buffer, null, responseFactory, params);
+        int maxLineLen = params.getIntParameter(CoreConnectionPNames.MAX_LINE_LENGTH, -1);
+        int maxHeaderCount = params.getIntParameter(CoreConnectionPNames.MAX_HEADER_COUNT, -1);
+        return new DefaultHttpResponseParser(buffer, maxHeaderCount, maxLineLen, null, responseFactory);
     }
 
     /**
@@ -127,7 +130,7 @@ public class DefaultNHttpClientConnectio
             final SessionOutputBuffer buffer,
             final HttpParams params) {
         // override in derived class to specify a line formatter
-        return new DefaultHttpRequestWriter(buffer, null, params);
+        return new DefaultHttpRequestWriter(buffer, null);
     }
 
     /**

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/DefaultNHttpServerConnection.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/DefaultNHttpServerConnection.java?rev=1382543&r1=1382542&r2=1382543&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/DefaultNHttpServerConnection.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/DefaultNHttpServerConnection.java Sun Sep  9 17:14:56 2012
@@ -53,6 +53,7 @@ import org.apache.http.nio.reactor.IOSes
 import org.apache.http.nio.reactor.SessionInputBuffer;
 import org.apache.http.nio.reactor.SessionOutputBuffer;
 import org.apache.http.nio.util.ByteBufferAllocator;
+import org.apache.http.params.CoreConnectionPNames;
 import org.apache.http.params.HttpParams;
 import org.apache.http.util.Args;
 
@@ -115,8 +116,9 @@ public class DefaultNHttpServerConnectio
             final SessionInputBuffer buffer,
             final HttpRequestFactory requestFactory,
             final HttpParams params) {
-        // override in derived class to specify a line parser
-        return new DefaultHttpRequestParser(buffer, null, requestFactory, params);
+        int maxLineLen = params.getIntParameter(CoreConnectionPNames.MAX_LINE_LENGTH, -1);
+        int maxHeaderCount = params.getIntParameter(CoreConnectionPNames.MAX_HEADER_COUNT, -1);
+        return new DefaultHttpRequestParser(buffer, maxHeaderCount, maxLineLen, null, requestFactory);
     }
 
     /**
@@ -133,7 +135,7 @@ public class DefaultNHttpServerConnectio
             final SessionOutputBuffer buffer,
             final HttpParams params) {
         // override in derived class to specify a line formatter
-        return new DefaultHttpResponseWriter(buffer, null, params);
+        return new DefaultHttpResponseWriter(buffer, null);
     }
 
     /**

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/AbstractMessageParser.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/AbstractMessageParser.java?rev=1382543&r1=1382542&r2=1382543&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/AbstractMessageParser.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/AbstractMessageParser.java Sun Sep  9 17:14:56 2012
@@ -49,13 +49,6 @@ import org.apache.http.util.CharArrayBuf
 /**
  * Abstract {@link NHttpMessageParser} that serves as a base for all message
  * parser implementations.
- * <p>
- * The following parameters can be used to customize the behavior of this
- * class:
- * <ul>
- *  <li>{@link org.apache.http.params.CoreConnectionPNames#MAX_HEADER_COUNT}</li>
- *  <li>{@link org.apache.http.params.CoreConnectionPNames#MAX_LINE_LENGTH}</li>
- * </ul>
  *
  * @since 4.0
  */
@@ -85,8 +78,13 @@ public abstract class AbstractMessagePar
      * @param buffer the session input buffer.
      * @param parser the line parser.
      * @param params HTTP parameters.
+     * 
+     * @deprecated (4.3) use 
+     *   {@link AbstractMessageParser#AbstractMessageParser(SessionInputBuffer, int, int, LineParser)}
      */
-    public AbstractMessageParser(final SessionInputBuffer buffer, final LineParser parser, final HttpParams params) {
+    @Deprecated
+    public AbstractMessageParser(final SessionInputBuffer buffer, final LineParser parser, 
+            final HttpParams params) {
         super();
         Args.notNull(buffer, "Session input buffer");
         Args.notNull(params, "HTTP parameters");
@@ -101,6 +99,35 @@ public abstract class AbstractMessagePar
         this.lineParser = (parser != null) ? parser : BasicLineParser.INSTANCE;
     }
 
+    /**
+     * Creates an instance of AbstractMessageParser.
+     *
+     * @param buffer the session input buffer.
+     * @param maxHeaderCount maximum header count limit. If set to a positive value, total number of 
+     *   headers in a message exceeding this limit will cause an I/O error. A negative value will 
+     *   disable the check.
+     * @param maxLineLen maximum line length limit. If set to a positive value, any line exceeding
+     *   this limit will cause an I/O error. A negative value will disable the check.
+     * @param parser the line parser. If <code>null</code> {@link BasicLineParser#INSTANCE} will
+     *   be used. 
+     * 
+     * @since 4.3
+     */
+    public AbstractMessageParser(
+            final SessionInputBuffer buffer, 
+            int maxHeaderCount,
+            int maxLineLen,
+            final LineParser parser) {
+        super();
+        this.sessionBuffer = Args.notNull(buffer, "Session input buffer");
+        this.maxHeaderCount = maxHeaderCount;
+        this.maxLineLen = maxLineLen;
+        this.lineParser = (parser != null) ? parser : BasicLineParser.INSTANCE;
+        this.headerBufs = new ArrayList<CharArrayBuffer>();
+        this.state = READ_HEAD_LINE;
+        this.endOfStream = false;
+    }
+
     public void reset() {
         this.state = READ_HEAD_LINE;
         this.endOfStream = false;

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/AbstractMessageWriter.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/AbstractMessageWriter.java?rev=1382543&r1=1382542&r2=1382543&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/AbstractMessageWriter.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/AbstractMessageWriter.java Sun Sep  9 17:14:56 2012
@@ -61,7 +61,11 @@ public abstract class AbstractMessageWri
      * @param buffer the session output buffer.
      * @param formatter the line formatter.
      * @param params HTTP parameters.
+     * 
+     * @deprecated (4.3) use 
+     *   {@link AbstractMessageWriter#AbstractMessageWriter(SessionOutputBuffer, LineFormatter)}
      */
+    @Deprecated
     public AbstractMessageWriter(final SessionOutputBuffer buffer,
                                  final LineFormatter formatter,
                                  final HttpParams params) {
@@ -72,6 +76,24 @@ public abstract class AbstractMessageWri
         this.lineFormatter = (formatter != null) ? formatter : BasicLineFormatter.INSTANCE;
     }
 
+    /**
+     * Creates an instance of AbstractMessageWriter.
+     *
+     * @param buffer the session output buffer.
+     * @param formatter the line formatter If <code>null</code> {@link BasicLineFormatter#INSTANCE}
+     *   will be used.
+     * 
+     * @since 4.3
+     */
+    public AbstractMessageWriter(
+            final SessionOutputBuffer buffer,
+            final LineFormatter formatter) {
+        super();
+        this.sessionBuffer = Args.notNull(buffer, "Session input buffer");
+        this.lineFormatter = (formatter != null) ? formatter : BasicLineFormatter.INSTANCE;
+        this.lineBuf = new CharArrayBuffer(64);
+    }
+
     public void reset() {
     }
 

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/DefaultHttpRequestParser.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/DefaultHttpRequestParser.java?rev=1382543&r1=1382542&r2=1382543&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/DefaultHttpRequestParser.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/DefaultHttpRequestParser.java Sun Sep  9 17:14:56 2012
@@ -33,6 +33,8 @@ import org.apache.http.HttpRequestFactor
 import org.apache.http.ParseException;
 import org.apache.http.RequestLine;
 import org.apache.http.annotation.NotThreadSafe;
+import org.apache.http.impl.DefaultHttpRequestFactory;
+import org.apache.http.message.BasicLineParser;
 import org.apache.http.message.LineParser;
 import org.apache.http.message.ParserCursor;
 import org.apache.http.nio.NHttpMessageParser;
@@ -43,13 +45,6 @@ import org.apache.http.util.CharArrayBuf
 
 /**
  * Default {@link NHttpMessageParser} implementation for {@link HttpRequest}s.
- * <p>
- * The following parameters can be used to customize the behavior of this
- * class:
- * <ul>
- *  <li>{@link org.apache.http.params.CoreConnectionPNames#MAX_HEADER_COUNT}</li>
- *  <li>{@link org.apache.http.params.CoreConnectionPNames#MAX_LINE_LENGTH}</li>
- * </ul>
  *
  * @since 4.1
  */
@@ -58,6 +53,17 @@ public class DefaultHttpRequestParser ex
 
     private final HttpRequestFactory requestFactory;
 
+    /**
+     * Creates an instance of this class.
+     *
+     * @param buffer the session input buffer.
+     * @param parser the line parser.
+     * @param params HTTP parameters.
+     * 
+     * @deprecated (4.3) use 
+     *   {@link DefaultHttpRequestParser#DefaultHttpRequestParser(SessionInputBuffer, int, int, LineParser, HttpRequestFactory)}
+     */
+    @Deprecated
     public DefaultHttpRequestParser(
             final SessionInputBuffer buffer,
             final LineParser parser,
@@ -68,6 +74,39 @@ public class DefaultHttpRequestParser ex
         this.requestFactory = requestFactory;
     }
 
+    /**
+     * Creates an instance of DefaultHttpRequestParser.
+     *
+     * @param buffer the session input buffer.
+     * @param maxHeaderCount maximum header count limit. If set to a positive value, total number of 
+     *   headers in a message exceeding this limit will cause an I/O error. A negative value will 
+     *   disable the check.
+     * @param maxLineLen maximum line length limit. If set to a positive value, any line exceeding
+     *   this limit will cause an I/O error. A negative value will disable the check.
+     * @param parser the line parser. If <code>null</code> {@link BasicLineParser#INSTANCE} will
+     *   be used. 
+     * @param requestFactory the request factory. If <code>null</code> 
+     *   {@link DefaultHttpRequestFactory#INSTANCE} will be used.
+     * 
+     * @since 4.3
+     */
+    public DefaultHttpRequestParser(
+            final SessionInputBuffer buffer,
+            int maxHeaderCount,
+            int maxLineLen,
+            final LineParser parser,
+            final HttpRequestFactory requestFactory) {
+        super(buffer, maxHeaderCount, maxLineLen, parser);
+        this.requestFactory = requestFactory != null ? requestFactory : DefaultHttpRequestFactory.INSTANCE;
+    }
+
+    /**
+    * @since 4.3
+    */
+    public DefaultHttpRequestParser(final SessionInputBuffer buffer) {
+        this(buffer, -1, -1, null, null);
+    }
+    
     @Override
     protected HttpRequest createMessage(final CharArrayBuffer buffer)
             throws HttpException, ParseException {

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/DefaultHttpRequestWriter.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/DefaultHttpRequestWriter.java?rev=1382543&r1=1382542&r2=1382543&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/DefaultHttpRequestWriter.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/DefaultHttpRequestWriter.java Sun Sep  9 17:14:56 2012
@@ -31,6 +31,7 @@ import java.io.IOException;
 
 import org.apache.http.HttpRequest;
 import org.apache.http.annotation.NotThreadSafe;
+import org.apache.http.message.BasicLineFormatter;
 import org.apache.http.message.LineFormatter;
 import org.apache.http.nio.NHttpMessageWriter;
 import org.apache.http.nio.reactor.SessionOutputBuffer;
@@ -45,12 +46,33 @@ import org.apache.http.util.CharArrayBuf
 @NotThreadSafe
 public class DefaultHttpRequestWriter extends AbstractMessageWriter<HttpRequest> {
 
+    /**
+     * @deprecated (4.3) use 
+     *   {@link DefaultHttpRequestWriter#DefaultHttpRequestWriter(SessionOutputBuffer, LineFormatter)}
+     */
+    @Deprecated
     public DefaultHttpRequestWriter(final SessionOutputBuffer buffer,
                              final LineFormatter formatter,
                              final HttpParams params) {
         super(buffer, formatter, params);
     }
 
+    
+    /**
+     * Creates an instance of DefaultHttpRequestWriter.
+     *
+     * @param buffer the session output buffer.
+     * @param formatter the line formatter If <code>null</code> {@link BasicLineFormatter#INSTANCE}
+     *   will be used.
+     * 
+     * @since 4.3
+     */
+    public DefaultHttpRequestWriter(
+            final SessionOutputBuffer buffer,
+            final LineFormatter formatter) {
+        super(buffer, formatter);
+    }
+
     @Override
     protected void writeHeadLine(final HttpRequest message) throws IOException {
         CharArrayBuffer buffer = lineFormatter.formatRequestLine(

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/DefaultHttpResponseParser.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/DefaultHttpResponseParser.java?rev=1382543&r1=1382542&r2=1382543&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/DefaultHttpResponseParser.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/DefaultHttpResponseParser.java Sun Sep  9 17:14:56 2012
@@ -33,6 +33,8 @@ import org.apache.http.HttpResponseFacto
 import org.apache.http.ParseException;
 import org.apache.http.StatusLine;
 import org.apache.http.annotation.NotThreadSafe;
+import org.apache.http.impl.DefaultHttpResponseFactory;
+import org.apache.http.message.BasicLineParser;
 import org.apache.http.message.LineParser;
 import org.apache.http.message.ParserCursor;
 import org.apache.http.nio.NHttpMessageParser;
@@ -43,13 +45,6 @@ import org.apache.http.util.CharArrayBuf
 
 /**
  * Default {@link NHttpMessageParser} implementation for {@link HttpResponse}s.
- * <p>
- * The following parameters can be used to customize the behavior of this
- * class:
- * <ul>
- *  <li>{@link org.apache.http.params.CoreConnectionPNames#MAX_HEADER_COUNT}</li>
- *  <li>{@link org.apache.http.params.CoreConnectionPNames#MAX_LINE_LENGTH}</li>
- * </ul>
  *
  * @since 4.1
  */
@@ -58,6 +53,11 @@ public class DefaultHttpResponseParser e
 
     private final HttpResponseFactory responseFactory;
 
+    /**
+     * @deprecated (4.3) use 
+     *   {@link DefaultHttpResponseParser#DefaultHttpResponseParser(SessionInputBuffer, int, int, LineParser, HttpResponseFactory)}
+     */
+    @Deprecated
     public DefaultHttpResponseParser(
             final SessionInputBuffer buffer,
             final LineParser parser,
@@ -68,6 +68,40 @@ public class DefaultHttpResponseParser e
         this.responseFactory = responseFactory;
     }
 
+    /**
+     * Creates an instance of DefaultHttpResponseParser.
+     *
+     * @param buffer the session input buffer.
+     * @param maxHeaderCount maximum header count limit. If set to a positive value, total number of 
+     *   headers in a message exceeding this limit will cause an I/O error. A negative value will 
+     *   disable the check.
+     * @param maxLineLen maximum line length limit. If set to a positive value, any line exceeding
+     *   this limit will cause an I/O error. A negative value will disable the check.
+     * @param parser the line parser. If <code>null</code> {@link BasicLineParser#INSTANCE} will
+     *   be used. 
+     * @param responseFactory the response factory. If <code>null</code> 
+     *   {@link DefaultHttpResponseFactory#INSTANCE} will be used. 
+     * 
+     * @since 4.3
+     */
+    public DefaultHttpResponseParser(
+            final SessionInputBuffer buffer,
+            int maxHeaderCount,
+            int maxLineLen,
+            final LineParser parser,
+            final HttpResponseFactory responseFactory) {
+        super(buffer, maxHeaderCount, maxLineLen, parser);
+        this.responseFactory = responseFactory != null ? responseFactory : 
+            DefaultHttpResponseFactory.INSTANCE;
+    }
+
+    /**
+     * @since 4.3
+     */
+    public DefaultHttpResponseParser(final SessionInputBuffer buffer) {
+        this(buffer, -1, -1, null, null);
+    }
+
     @Override
     protected HttpResponse createMessage(final CharArrayBuffer buffer)
             throws HttpException, ParseException {

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/DefaultHttpResponseWriter.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/DefaultHttpResponseWriter.java?rev=1382543&r1=1382542&r2=1382543&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/DefaultHttpResponseWriter.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/DefaultHttpResponseWriter.java Sun Sep  9 17:14:56 2012
@@ -31,6 +31,7 @@ import java.io.IOException;
 
 import org.apache.http.HttpResponse;
 import org.apache.http.annotation.NotThreadSafe;
+import org.apache.http.message.BasicLineFormatter;
 import org.apache.http.message.LineFormatter;
 import org.apache.http.nio.NHttpMessageWriter;
 import org.apache.http.nio.reactor.SessionOutputBuffer;
@@ -45,12 +46,32 @@ import org.apache.http.util.CharArrayBuf
 @NotThreadSafe
 public class DefaultHttpResponseWriter extends AbstractMessageWriter<HttpResponse> {
 
+    /**
+     * @deprecated (4.3) use 
+     *   {@link DefaultHttpResponseWriter#DefaultHttpResponseWriter(SessionOutputBuffer, LineFormatter)}
+     */
+    @Deprecated
     public DefaultHttpResponseWriter(final SessionOutputBuffer buffer,
                               final LineFormatter formatter,
                               final HttpParams params) {
         super(buffer, formatter, params);
     }
 
+    /**
+     * Creates an instance of DefaultHttpResponseWriter.
+     *
+     * @param buffer the session output buffer.
+     * @param formatter the line formatter If <code>null</code> {@link BasicLineFormatter#INSTANCE}
+     *   will be used.
+     * 
+     * @since 4.3
+     */
+    public DefaultHttpResponseWriter(
+            final SessionOutputBuffer buffer,
+            final LineFormatter formatter) {
+        super(buffer, formatter);
+    }
+
     @Override
     protected void writeHeadLine(final HttpResponse message) throws IOException {
         CharArrayBuffer buffer = lineFormatter.formatStatusLine(

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/impl/nio/codecs/TestHttpMessageParser.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/impl/nio/codecs/TestHttpMessageParser.java?rev=1382543&r1=1382542&r2=1382543&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/impl/nio/codecs/TestHttpMessageParser.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/impl/nio/codecs/TestHttpMessageParser.java Sun Sep  9 17:14:56 2012
@@ -35,18 +35,11 @@ import java.nio.channels.ReadableByteCha
 
 import org.apache.http.HttpException;
 import org.apache.http.HttpRequest;
-import org.apache.http.HttpRequestFactory;
 import org.apache.http.HttpResponse;
-import org.apache.http.HttpResponseFactory;
 import org.apache.http.HttpVersion;
-import org.apache.http.impl.DefaultHttpRequestFactory;
-import org.apache.http.impl.DefaultHttpResponseFactory;
 import org.apache.http.impl.nio.reactor.SessionInputBufferImpl;
 import org.apache.http.nio.NHttpMessageParser;
 import org.apache.http.nio.reactor.SessionInputBuffer;
-import org.apache.http.params.BasicHttpParams;
-import org.apache.http.params.CoreConnectionPNames;
-import org.apache.http.params.HttpParams;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -67,10 +60,8 @@ public class TestHttpMessageParser {
 
     @Test
     public void testSimpleParsing() throws Exception {
-        HttpParams params = new BasicHttpParams();
         SessionInputBuffer inbuf = new SessionInputBufferImpl(1024, 128);
-        HttpRequestFactory requestFactory = DefaultHttpRequestFactory.INSTANCE;
-        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf, null, requestFactory, params);
+        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf);
         requestParser.fillBuffer(newChannel("GET /whatever HTTP/1.1\r\nSome header: stuff\r\n\r\n"));
         HttpRequest request = requestParser.parse();
         Assert.assertNotNull(request);
@@ -80,10 +71,8 @@ public class TestHttpMessageParser {
 
     @Test
     public void testParsingChunkedMessages() throws Exception {
-        HttpParams params = new BasicHttpParams();
         SessionInputBuffer inbuf = new SessionInputBufferImpl(1024, 128);
-        HttpRequestFactory requestFactory = DefaultHttpRequestFactory.INSTANCE;
-        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf, null, requestFactory, params);
+        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf);
 
         requestParser.fillBuffer(newChannel("GET /whatev"));
         HttpRequest request = requestParser.parse();
@@ -102,10 +91,8 @@ public class TestHttpMessageParser {
 
     @Test
     public void testParsingFoldedHeaders() throws Exception {
-        HttpParams params = new BasicHttpParams();
         SessionInputBuffer inbuf = new SessionInputBufferImpl(1024, 128);
-        HttpRequestFactory requestFactory = DefaultHttpRequestFactory.INSTANCE;
-        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf, null, requestFactory, params);
+        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf);
 
         requestParser.fillBuffer(newChannel("GET /whatev"));
         HttpRequest request = requestParser.parse();
@@ -133,10 +120,8 @@ public class TestHttpMessageParser {
 
     @Test
     public void testParsingBadlyFoldedFirstHeader() throws Exception {
-        HttpParams params = new BasicHttpParams();
         SessionInputBuffer inbuf = new SessionInputBufferImpl(1024, 128);
-        HttpRequestFactory requestFactory = DefaultHttpRequestFactory.INSTANCE;
-        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf, null, requestFactory, params);
+        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf);
 
         requestParser.fillBuffer(newChannel("GET /whatev"));
         HttpRequest request = requestParser.parse();
@@ -161,10 +146,8 @@ public class TestHttpMessageParser {
 
     @Test
     public void testParsingEmptyFoldedHeader() throws Exception {
-        HttpParams params = new BasicHttpParams();
         SessionInputBuffer inbuf = new SessionInputBufferImpl(1024, 128);
-        HttpRequestFactory requestFactory = DefaultHttpRequestFactory.INSTANCE;
-        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf, null, requestFactory, params);
+        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf);
 
         requestParser.fillBuffer(newChannel("GET /whatev"));
         HttpRequest request = requestParser.parse();
@@ -192,10 +175,8 @@ public class TestHttpMessageParser {
 
     @Test
     public void testParsingIncompleteRequestLine() throws Exception {
-        HttpParams params = new BasicHttpParams();
         SessionInputBuffer inbuf = new SessionInputBufferImpl(1024, 128);
-        HttpRequestFactory requestFactory = DefaultHttpRequestFactory.INSTANCE;
-        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf, null, requestFactory, params);
+        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf);
 
         ReadableByteChannel channel = newChannel("GET /whatever HTTP/1.0");
         requestParser.fillBuffer(channel);
@@ -207,10 +188,8 @@ public class TestHttpMessageParser {
 
     @Test
     public void testParsingIncompleteHeader() throws Exception {
-        HttpParams params = new BasicHttpParams();
         SessionInputBuffer inbuf = new SessionInputBufferImpl(1024, 128);
-        HttpRequestFactory requestFactory = DefaultHttpRequestFactory.INSTANCE;
-        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf, null, requestFactory, params);
+        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf);
 
         ReadableByteChannel channel = newChannel("GET /whatever HTTP/1.0\r\nHeader: whatever");
         requestParser.fillBuffer(channel);
@@ -223,10 +202,8 @@ public class TestHttpMessageParser {
 
     @Test
     public void testParsingInvalidRequestLine() throws Exception {
-        HttpParams params = new BasicHttpParams();
         SessionInputBuffer inbuf = new SessionInputBufferImpl(1024, 128);
-        HttpRequestFactory requestFactory = DefaultHttpRequestFactory.INSTANCE;
-        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf, null, requestFactory, params);
+        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf);
 
         ReadableByteChannel channel = newChannel("GET garbage\r\n");
         requestParser.fillBuffer(channel);
@@ -240,10 +217,8 @@ public class TestHttpMessageParser {
 
     @Test
     public void testParsingInvalidStatusLine() throws Exception {
-        HttpParams params = new BasicHttpParams();
         SessionInputBuffer inbuf = new SessionInputBufferImpl(1024, 128);
-        HttpResponseFactory responseFactory = DefaultHttpResponseFactory.INSTANCE;
-        NHttpMessageParser<HttpResponse> responseParser = new DefaultHttpResponseParser(inbuf, null, responseFactory, params);
+        NHttpMessageParser<HttpResponse> responseParser = new DefaultHttpResponseParser(inbuf);
 
         ReadableByteChannel channel = newChannel("HTTP 200 OK\r\n");
         responseParser.fillBuffer(channel);
@@ -257,10 +232,8 @@ public class TestHttpMessageParser {
 
     @Test
     public void testParsingInvalidHeader() throws Exception {
-        HttpParams params = new BasicHttpParams();
         SessionInputBuffer inbuf = new SessionInputBufferImpl(1024, 128);
-        HttpResponseFactory responseFactory = DefaultHttpResponseFactory.INSTANCE;
-        NHttpMessageParser<HttpResponse> responseParser = new DefaultHttpResponseParser(inbuf, null, responseFactory, params);
+        NHttpMessageParser<HttpResponse> responseParser = new DefaultHttpResponseParser(inbuf);
 
         ReadableByteChannel channel = newChannel("HTTP/1.0 200 OK\r\nstuff\r\n\r\n");
         responseParser.fillBuffer(channel);
@@ -274,10 +247,8 @@ public class TestHttpMessageParser {
 
     @Test
     public void testResetParser() throws Exception {
-        HttpParams params = new BasicHttpParams();
         SessionInputBuffer inbuf = new SessionInputBufferImpl(1024, 128);
-        HttpRequestFactory requestFactory = DefaultHttpRequestFactory.INSTANCE;
-        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf, null, requestFactory, params);
+        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf);
 
         ReadableByteChannel channel = newChannel("GET /whatever HTTP/1.0\r\nHeader: one\r\n\r\n");
         requestParser.fillBuffer(channel);
@@ -298,28 +269,8 @@ public class TestHttpMessageParser {
 
     @Test
     public void testInvalidConstructor() {
-        HttpParams params = new BasicHttpParams();
-        SessionInputBuffer inbuf = new SessionInputBufferImpl(1024, 128);
         try {
-            new DefaultHttpRequestParser(null, null, null, params);
-            Assert.fail("IllegalArgumentException should have been thrown");
-        } catch (IllegalArgumentException ex) {
-            // ignore
-        }
-        try {
-            new DefaultHttpRequestParser(inbuf, null, null, params);
-            Assert.fail("IllegalArgumentException should have been thrown");
-        } catch (IllegalArgumentException ex) {
-            // ignore
-        }
-        try {
-            new DefaultHttpResponseParser(null, null, null, params);
-            Assert.fail("IllegalArgumentException should have been thrown");
-        } catch (IllegalArgumentException ex) {
-            // ignore
-        }
-        try {
-            new DefaultHttpResponseParser(inbuf, null, null, params);
+            new DefaultHttpRequestParser(null);
             Assert.fail("IllegalArgumentException should have been thrown");
         } catch (IllegalArgumentException ex) {
             // ignore
@@ -328,18 +279,13 @@ public class TestHttpMessageParser {
 
     @Test
     public void testLineLimitForStatus() throws Exception {
-        HttpParams params = new BasicHttpParams();
         SessionInputBuffer inbuf = new SessionInputBufferImpl(1024, 128);
-        HttpRequestFactory requestFactory = DefaultHttpRequestFactory.INSTANCE;
-
-        params.setIntParameter(CoreConnectionPNames.MAX_LINE_LENGTH, 0);
-        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf, null, requestFactory, params);
+        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf, -1, 0, null, null);
         requestParser.fillBuffer(newChannel("GET /whatever HTTP/1.0\r\nHeader: one\r\n\r\n"));
         requestParser.parse();
         requestParser.reset();
 
-        params.setIntParameter(CoreConnectionPNames.MAX_LINE_LENGTH, 15);
-        requestParser = new DefaultHttpRequestParser(inbuf, null, requestFactory, params);
+        requestParser = new DefaultHttpRequestParser(inbuf, -1, 15, null, null);
         try {
             requestParser.fillBuffer(newChannel("GET /loooooooooooooooong HTTP/1.0\r\nHeader: one\r\n\r\n"));
             requestParser.parse();
@@ -350,18 +296,14 @@ public class TestHttpMessageParser {
 
     @Test
     public void testLineLimitForHeader() throws Exception {
-        HttpParams params = new BasicHttpParams();
         SessionInputBuffer inbuf = new SessionInputBufferImpl(1024, 128);
-        HttpRequestFactory requestFactory = DefaultHttpRequestFactory.INSTANCE;
 
-        params.setIntParameter(CoreConnectionPNames.MAX_LINE_LENGTH, 0);
-        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf, null, requestFactory, params);
+        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf, -1, 0, null, null);
         requestParser.fillBuffer(newChannel("GET /whatever HTTP/1.0\r\nHeader: one\r\n\r\n"));
         requestParser.parse();
         requestParser.reset();
 
-        params.setIntParameter(CoreConnectionPNames.MAX_LINE_LENGTH, 15);
-        requestParser = new DefaultHttpRequestParser(inbuf, null, requestFactory, params);
+        requestParser = new DefaultHttpRequestParser(inbuf, -1, 15, null, null);
         requestParser.fillBuffer(newChannel("GET / HTTP/1.0\r\nHeader: 9012345\r\n\r\n"));
         requestParser.parse();
         requestParser.reset();
@@ -375,13 +317,9 @@ public class TestHttpMessageParser {
 
     @Test
     public void testLineLimitForFoldedHeader() throws Exception {
-        HttpParams params = new BasicHttpParams();
         SessionInputBuffer inbuf = new SessionInputBufferImpl(1024, 128);
-        HttpRequestFactory requestFactory = DefaultHttpRequestFactory.INSTANCE;
 
-        params.setIntParameter(CoreConnectionPNames.MAX_HEADER_COUNT, 2);
-        params.setIntParameter(CoreConnectionPNames.MAX_LINE_LENGTH, 15);
-        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf, null, requestFactory, params);
+        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf, 2, 15, null, null);
         try {
             requestParser.fillBuffer(newChannel("GET / HTTP/1.0\r\nHeader: 9012345\r\n 23456789012345\r\n 23456789012345\r\n 23456789012345\r\n\r\n"));
             requestParser.parse();
@@ -392,12 +330,9 @@ public class TestHttpMessageParser {
 
     @Test
     public void testMaxHeaderCount() throws Exception {
-        HttpParams params = new BasicHttpParams();
         SessionInputBuffer inbuf = new SessionInputBufferImpl(1024, 128);
-        HttpRequestFactory requestFactory = DefaultHttpRequestFactory.INSTANCE;
 
-        params.setIntParameter(CoreConnectionPNames.MAX_HEADER_COUNT, 2);
-        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf, null, requestFactory, params);
+        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf, 2, -1, null, null);
         requestParser.fillBuffer(newChannel("GET /whatever HTTP/1.0\r\nHeader: one\r\nHeader: two\r\n\r\n"));
         requestParser.parse();
         requestParser.reset();
@@ -412,12 +347,9 @@ public class TestHttpMessageParser {
 
     @Test
     public void testDetectLineLimitEarly() throws Exception {
-        HttpParams params = new BasicHttpParams();
         SessionInputBuffer inbuf = new SessionInputBufferImpl(2, 128);
-        HttpRequestFactory requestFactory = DefaultHttpRequestFactory.INSTANCE;
 
-        params.setIntParameter(CoreConnectionPNames.MAX_LINE_LENGTH, 2);
-        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf, null, requestFactory, params);
+        NHttpMessageParser<HttpRequest> requestParser = new DefaultHttpRequestParser(inbuf, -1, 2, null, null);
         ReadableByteChannel channel = newChannel("GET / HTTP/1.0\r\nHeader: one\r\n\r\n");
         Assert.assertEquals(2, requestParser.fillBuffer(channel));
         Assert.assertNull(requestParser.parse());

Modified: httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/AbstractMessageParser.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/AbstractMessageParser.java?rev=1382543&r1=1382542&r2=1382543&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/AbstractMessageParser.java (original)
+++ httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/AbstractMessageParser.java Sun Sep  9 17:14:56 2012
@@ -49,13 +49,6 @@ import org.apache.http.util.CharArrayBuf
 /**
  * Abstract base class for HTTP message parsers that obtain input from
  * an instance of {@link SessionInputBuffer}.
- * <p>
- * The following parameters can be used to customize the behavior of this
- * class:
- * <ul>
- *  <li>{@link org.apache.http.params.CoreConnectionPNames#MAX_HEADER_COUNT}</li>
- *  <li>{@link org.apache.http.params.CoreConnectionPNames#MAX_LINE_LENGTH}</li>
- * </ul>
  *
  * @since 4.0
  */
@@ -75,12 +68,15 @@ public abstract class AbstractMessagePar
     private T message;
 
     /**
-     * Creates an instance of this class.
+     * Creates an instance of AbstractMessageParser.
      *
      * @param buffer the session input buffer.
      * @param parser the line parser.
      * @param params HTTP parameters.
+     * 
+     * @deprecated (4.3)
      */
+    @Deprecated
     public AbstractMessageParser(
             final SessionInputBuffer buffer,
             final LineParser parser,
@@ -99,6 +95,34 @@ public abstract class AbstractMessagePar
     }
 
     /**
+     * Creates new instance of AbstractMessageParser.
+     *
+     * @param buffer the session input buffer.
+     * @param maxHeaderCount maximum header count limit. If set to a positive value, total number of 
+     *   headers in a message exceeding this limit will cause an I/O error. A negative value will 
+     *   disable the check.
+     * @param maxLineLen maximum line length limit. If set to a positive value, any line exceeding
+     *   this limit will cause an I/O error. A negative value will disable the check.
+     * @param parser the line parser. If <code>null</code> {@link BasicLineParser#INSTANCE} 
+     *   will be used
+     * 
+     * @since 4.3
+     */
+    public AbstractMessageParser(
+            final SessionInputBuffer buffer,
+            int maxHeaderCount,
+            int maxLineLen,
+            final LineParser parser) {
+        super();
+        this.sessionBuffer = Args.notNull(buffer, "Session input buffer");
+        this.lineParser = (parser != null) ? parser : BasicLineParser.INSTANCE;
+        this.maxHeaderCount = maxHeaderCount;
+        this.maxLineLen = maxLineLen;
+        this.headerLines = new ArrayList<CharArrayBuffer>();
+        this.state = HEAD_LINE;
+    }
+
+    /**
      * Parses HTTP headers from the data receiver stream according to the generic
      * format as given in Section 3.1 of RFC 822, RFC-2616 Section 4 and 19.3.
      *

Modified: httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/AbstractMessageWriter.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/AbstractMessageWriter.java?rev=1382543&r1=1382542&r2=1382543&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/AbstractMessageWriter.java (original)
+++ httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/AbstractMessageWriter.java Sun Sep  9 17:14:56 2012
@@ -61,7 +61,11 @@ public abstract class AbstractMessageWri
      * @param buffer the session output buffer.
      * @param formatter the line formatter.
      * @param params HTTP parameters.
+     * 
+     * @deprecated (4.3) use 
+     *   {@link AbstractMessageWriter#AbstractMessageWriter(SessionOutputBuffer, LineFormatter)}
      */
+    @Deprecated
     public AbstractMessageWriter(final SessionOutputBuffer buffer,
                                  final LineFormatter formatter,
                                  final HttpParams params) {
@@ -73,6 +77,24 @@ public abstract class AbstractMessageWri
     }
 
     /**
+     * Creates an instance of AbstractMessageWriter.
+     *
+     * @param buffer the session output buffer.
+     * @param formatter the line formatter If <code>null</code> {@link BasicLineFormatter#INSTANCE}
+     *   will be used.
+     * 
+     * @since 4.3
+     */
+    public AbstractMessageWriter(
+            final SessionOutputBuffer buffer,
+            final LineFormatter formatter) {
+        super();
+        this.sessionBuffer = Args.notNull(buffer, "Session input buffer");
+        this.lineFormatter = (formatter != null) ? formatter : BasicLineFormatter.INSTANCE;
+        this.lineBuf = new CharArrayBuffer(128);
+    }
+
+    /**
      * Subclasses must override this method to write out the first header line
      * based on the {@link HttpMessage} passed as a parameter.
      *

Modified: httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/DefaultHttpRequestParser.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/DefaultHttpRequestParser.java?rev=1382543&r1=1382542&r2=1382543&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/DefaultHttpRequestParser.java (original)
+++ httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/DefaultHttpRequestParser.java Sun Sep  9 17:14:56 2012
@@ -36,7 +36,10 @@ import org.apache.http.HttpRequestFactor
 import org.apache.http.ParseException;
 import org.apache.http.RequestLine;
 import org.apache.http.annotation.NotThreadSafe;
+import org.apache.http.impl.DefaultHttpRequestFactory;
+import org.apache.http.impl.DefaultHttpResponseFactory;
 import org.apache.http.io.SessionInputBuffer;
+import org.apache.http.message.BasicLineParser;
 import org.apache.http.message.LineParser;
 import org.apache.http.message.ParserCursor;
 import org.apache.http.params.HttpParams;
@@ -46,13 +49,6 @@ import org.apache.http.util.CharArrayBuf
 /**
  * HTTP request parser that obtain its input from an instance
  * of {@link SessionInputBuffer}.
- * <p>
- * The following parameters can be used to customize the behavior of this
- * class:
- * <ul>
- *  <li>{@link org.apache.http.params.CoreConnectionPNames#MAX_HEADER_COUNT}</li>
- *  <li>{@link org.apache.http.params.CoreConnectionPNames#MAX_LINE_LENGTH}</li>
- * </ul>
  *
  * @since 4.2
  */
@@ -70,7 +66,11 @@ public class DefaultHttpRequestParser ex
      * @param requestFactory the factory to use to create
      *    {@link HttpRequest}s.
      * @param params HTTP parameters.
+     * 
+     * @deprecated (4.3) use 
+     *   {@link DefaultHttpRequestParser#DefaultHttpRequestParser(SessionInputBuffer, int, int, LineParser, HttpRequestFactory)}
      */
+    @Deprecated
     public DefaultHttpRequestParser(
             final SessionInputBuffer buffer,
             final LineParser parser,
@@ -80,6 +80,34 @@ public class DefaultHttpRequestParser ex
         this.requestFactory = Args.notNull(requestFactory, "Request factory");
         this.lineBuf = new CharArrayBuffer(128);
     }
+    
+    /**
+     * Creates new instance of DefaultHttpRequestParser.
+     *
+     * @param buffer the session input buffer.
+     * @param maxHeaderCount maximum header count limit. If set to a positive value, total number of 
+     *   headers in a message exceeding this limit will cause an I/O error. A negative value will 
+     *   disable the check.
+     * @param maxLineLen maximum line length limit. If set to a positive value, any line exceeding
+     *   this limit will cause an I/O error. A negative value will disable the check.
+     * @param parser the line parser. If <code>null</code> {@link BasicLineParser#INSTANCE} will
+     *   be used. 
+     * @param responseFactory the response factory. If <code>null</code> 
+     *   {@link DefaultHttpResponseFactory#INSTANCE} will be used. 
+     * 
+     * @since 4.3
+     */
+    public DefaultHttpRequestParser(
+            final SessionInputBuffer buffer,
+            int maxHeaderCount,
+            int maxLineLen,
+            final LineParser parser,
+            final HttpRequestFactory requestFactory) {
+        super(buffer, maxHeaderCount, maxLineLen, parser);
+        this.requestFactory = requestFactory != null ? requestFactory : 
+            DefaultHttpRequestFactory.INSTANCE;
+        this.lineBuf = new CharArrayBuffer(128);
+    }
 
     @Override
     protected HttpRequest parseHead(

Copied: httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/DefaultHttpRequestWriter.java (from r1379062, httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/HttpRequestWriter.java)
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/DefaultHttpRequestWriter.java?p2=httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/DefaultHttpRequestWriter.java&p1=httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/HttpRequestWriter.java&r1=1379062&r2=1382543&rev=1382543&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/HttpRequestWriter.java (original)
+++ httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/DefaultHttpRequestWriter.java Sun Sep  9 17:14:56 2012
@@ -32,22 +32,28 @@ import java.io.IOException;
 import org.apache.http.HttpRequest;
 import org.apache.http.annotation.NotThreadSafe;
 import org.apache.http.io.SessionOutputBuffer;
+import org.apache.http.message.BasicLineFormatter;
 import org.apache.http.message.LineFormatter;
-import org.apache.http.params.HttpParams;
 
 /**
- * HTTP request writer that serializes its output to an instance
- * of {@link SessionOutputBuffer}.
+ * HTTP request writer that serializes its output to an instance of {@link SessionOutputBuffer}.
  *
- * @since 4.0
+ * @since 4.3
  */
 @NotThreadSafe
-public class HttpRequestWriter extends AbstractMessageWriter<HttpRequest> {
+public class DefaultHttpRequestWriter extends AbstractMessageWriter<HttpRequest> {
 
-    public HttpRequestWriter(final SessionOutputBuffer buffer,
-                             final LineFormatter formatter,
-                             final HttpParams params) {
-        super(buffer, formatter, params);
+    /**
+     * Creates an instance of DefaultHttpRequestWriter.
+     *
+     * @param buffer the session output buffer.
+     * @param formatter the line formatter If <code>null</code> {@link BasicLineFormatter#INSTANCE}
+     *   will be used.
+     */
+    public DefaultHttpRequestWriter(
+            final SessionOutputBuffer buffer,
+            final LineFormatter formatter) {
+        super(buffer, formatter);
     }
 
     @Override

Modified: httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/DefaultHttpResponseParser.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/DefaultHttpResponseParser.java?rev=1382543&r1=1382542&r2=1382543&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/DefaultHttpResponseParser.java (original)
+++ httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/DefaultHttpResponseParser.java Sun Sep  9 17:14:56 2012
@@ -36,7 +36,9 @@ import org.apache.http.NoHttpResponseExc
 import org.apache.http.ParseException;
 import org.apache.http.StatusLine;
 import org.apache.http.annotation.NotThreadSafe;
+import org.apache.http.impl.DefaultHttpResponseFactory;
 import org.apache.http.io.SessionInputBuffer;
+import org.apache.http.message.BasicLineParser;
 import org.apache.http.message.LineParser;
 import org.apache.http.message.ParserCursor;
 import org.apache.http.params.HttpParams;
@@ -46,13 +48,6 @@ import org.apache.http.util.CharArrayBuf
 /**
  * HTTP response parser that obtain its input from an instance
  * of {@link SessionInputBuffer}.
- * <p>
- * The following parameters can be used to customize the behavior of this
- * class:
- * <ul>
- *  <li>{@link org.apache.http.params.CoreConnectionPNames#MAX_HEADER_COUNT}</li>
- *  <li>{@link org.apache.http.params.CoreConnectionPNames#MAX_LINE_LENGTH}</li>
- * </ul>
  *
  * @since 4.2
  */
@@ -70,7 +65,11 @@ public class DefaultHttpResponseParser e
      * @param responseFactory the factory to use to create
      *    {@link HttpResponse}s.
      * @param params HTTP parameters.
+     * 
+     * @deprecated (4.3) use 
+     *   {@link DefaultHttpResponseParser#DefaultHttpResponseParser(SessionInputBuffer, int, int, LineParser, HttpResponseFactory)}
      */
+    @Deprecated
     public DefaultHttpResponseParser(
             final SessionInputBuffer buffer,
             final LineParser parser,
@@ -81,6 +80,34 @@ public class DefaultHttpResponseParser e
         this.lineBuf = new CharArrayBuffer(128);
     }
 
+    /**
+     * Creates new instance of DefaultHttpResponseParser.
+     *
+     * @param buffer the session input buffer.
+     * @param maxHeaderCount maximum header count limit. If set to a positive value, total number of 
+     *   headers in a message exceeding this limit will cause an I/O error. A negative value will 
+     *   disable the check.
+     * @param maxLineLen maximum line length limit. If set to a positive value, any line exceeding
+     *   this limit will cause an I/O error. A negative value will disable the check.
+     * @param parser the line parser. If <code>null</code> {@link BasicLineParser#INSTANCE} 
+     *   will be used
+     * @param responseFactory the response factory. If <code>null</code> 
+     *   {@link DefaultHttpResponseFactory#INSTANCE} will be used. 
+     * 
+     * @since 4.3
+     */
+    public DefaultHttpResponseParser(
+            final SessionInputBuffer buffer,
+            int maxHeaderCount,
+            int maxLineLen,
+            final LineParser parser,
+            final HttpResponseFactory responseFactory) {
+        super(buffer, maxHeaderCount, maxLineLen, parser);
+        this.responseFactory = responseFactory != null ? responseFactory : 
+            DefaultHttpResponseFactory.INSTANCE;
+        this.lineBuf = new CharArrayBuffer(128);
+    }
+
     @Override
     protected HttpResponse parseHead(
             final SessionInputBuffer sessionBuffer)

Copied: httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/DefaultHttpResponseWriter.java (from r1379062, httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/HttpResponseWriter.java)
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/DefaultHttpResponseWriter.java?p2=httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/DefaultHttpResponseWriter.java&p1=httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/HttpResponseWriter.java&r1=1379062&r2=1382543&rev=1382543&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/HttpResponseWriter.java (original)
+++ httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/DefaultHttpResponseWriter.java Sun Sep  9 17:14:56 2012
@@ -32,22 +32,28 @@ import java.io.IOException;
 import org.apache.http.HttpResponse;
 import org.apache.http.annotation.NotThreadSafe;
 import org.apache.http.io.SessionOutputBuffer;
+import org.apache.http.message.BasicLineFormatter;
 import org.apache.http.message.LineFormatter;
-import org.apache.http.params.HttpParams;
 
 /**
- * HTTP response writer that serializes its output to an instance
- * of {@link SessionOutputBuffer}.
+ * HTTP response writer that serializes its output to an instance of {@link SessionOutputBuffer}.
  *
- * @since 4.0
+ * @since 4.3
  */
 @NotThreadSafe
-public class HttpResponseWriter extends AbstractMessageWriter<HttpResponse> {
+public class DefaultHttpResponseWriter extends AbstractMessageWriter<HttpResponse> {
 
-    public HttpResponseWriter(final SessionOutputBuffer buffer,
-                              final LineFormatter formatter,
-                              final HttpParams params) {
-        super(buffer, formatter, params);
+    /**
+     * Creates an instance of DefaultHttpResponseWriter.
+     *
+     * @param buffer the session output buffer.
+     * @param formatter the line formatter If <code>null</code> {@link BasicLineFormatter#INSTANCE}
+     *   will be used.
+     */
+    public DefaultHttpResponseWriter(
+            final SessionOutputBuffer buffer,
+            final LineFormatter formatter) {
+        super(buffer, formatter);
     }
 
     @Override

Modified: httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/HttpRequestWriter.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/HttpRequestWriter.java?rev=1382543&r1=1382542&r2=1382543&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/HttpRequestWriter.java (original)
+++ httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/HttpRequestWriter.java Sun Sep  9 17:14:56 2012
@@ -40,8 +40,11 @@ import org.apache.http.params.HttpParams
  * of {@link SessionOutputBuffer}.
  *
  * @since 4.0
+ * 
+ * @deprecated (4.3) use {@link DefaultHttpRequestWriter}
  */
 @NotThreadSafe
+@Deprecated
 public class HttpRequestWriter extends AbstractMessageWriter<HttpRequest> {
 
     public HttpRequestWriter(final SessionOutputBuffer buffer,

Modified: httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/HttpResponseWriter.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/HttpResponseWriter.java?rev=1382543&r1=1382542&r2=1382543&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/HttpResponseWriter.java (original)
+++ httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/io/HttpResponseWriter.java Sun Sep  9 17:14:56 2012
@@ -40,8 +40,11 @@ import org.apache.http.params.HttpParams
  * of {@link SessionOutputBuffer}.
  *
  * @since 4.0
+ * 
+ * @deprecated (4.3) use {@link DefaultHttpResponseWriter}
  */
 @NotThreadSafe
+@Deprecated
 public class HttpResponseWriter extends AbstractMessageWriter<HttpResponse> {
 
     public HttpResponseWriter(final SessionOutputBuffer buffer,

Modified: httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/impl/io/TestRequestParser.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/impl/io/TestRequestParser.java?rev=1382543&r1=1382542&r2=1382543&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/impl/io/TestRequestParser.java (original)
+++ httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/impl/io/TestRequestParser.java Sun Sep  9 17:14:56 2012
@@ -43,7 +43,6 @@ import org.apache.http.impl.DefaultHttpR
 import org.apache.http.impl.SessionInputBufferMock;
 import org.apache.http.io.SessionInputBuffer;
 import org.apache.http.message.BasicLineParser;
-import org.apache.http.params.BasicHttpParams;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -57,31 +56,9 @@ public class TestRequestParser {
         try {
             new DefaultHttpRequestParser(
                     null,
+                    -1, -1,
                     BasicLineParser.INSTANCE,
-                    DefaultHttpRequestFactory.INSTANCE,
-                    new BasicHttpParams());
-            Assert.fail("IllegalArgumentException should have been thrown");
-        } catch (IllegalArgumentException ex) {
-            // expected
-        }
-        try {
-            SessionInputBuffer inbuffer = new SessionInputBufferMock(new byte[] {});
-            new DefaultHttpRequestParser(
-                    inbuffer,
-                    BasicLineParser.INSTANCE,
-                    null,
-                    new BasicHttpParams());
-            Assert.fail("IllegalArgumentException should have been thrown");
-        } catch (IllegalArgumentException ex) {
-            // expected
-        }
-        try {
-            SessionInputBuffer inbuffer = new SessionInputBufferMock(new byte[] {});
-            new DefaultHttpRequestParser(
-                    inbuffer,
-                    BasicLineParser.INSTANCE,
-                    DefaultHttpRequestFactory.INSTANCE,
-                    null);
+                    DefaultHttpRequestFactory.INSTANCE);
             Assert.fail("IllegalArgumentException should have been thrown");
         } catch (IllegalArgumentException ex) {
             // expected
@@ -100,9 +77,9 @@ public class TestRequestParser {
 
         DefaultHttpRequestParser parser = new DefaultHttpRequestParser(
                 inbuffer,
+                -1, -1,
                 BasicLineParser.INSTANCE,
-                DefaultHttpRequestFactory.INSTANCE,
-                new BasicHttpParams());
+                DefaultHttpRequestFactory.INSTANCE);
 
         HttpRequest httprequest = parser.parse();
 
@@ -121,9 +98,9 @@ public class TestRequestParser {
 
         DefaultHttpRequestParser parser = new DefaultHttpRequestParser(
                 inbuffer,
+                -1, -1,
                 BasicLineParser.INSTANCE,
-                DefaultHttpRequestFactory.INSTANCE,
-                new BasicHttpParams());
+                DefaultHttpRequestFactory.INSTANCE);
 
         try {
             parser.parse();
@@ -145,9 +122,9 @@ public class TestRequestParser {
 
         DefaultHttpRequestParser parser = new DefaultHttpRequestParser(
                 inbuffer,
+                -1, -1,
                 BasicLineParser.INSTANCE,
-                DefaultHttpRequestFactory.INSTANCE,
-                new BasicHttpParams());
+                DefaultHttpRequestFactory.INSTANCE);
 
         int timeoutCount = 0;
 

Modified: httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/impl/io/TestResponseParser.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/impl/io/TestResponseParser.java?rev=1382543&r1=1382542&r2=1382543&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/impl/io/TestResponseParser.java (original)
+++ httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/impl/io/TestResponseParser.java Sun Sep  9 17:14:56 2012
@@ -39,7 +39,6 @@ import org.apache.http.impl.DefaultHttpR
 import org.apache.http.impl.SessionInputBufferMock;
 import org.apache.http.io.SessionInputBuffer;
 import org.apache.http.message.BasicLineParser;
-import org.apache.http.params.BasicHttpParams;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -53,31 +52,9 @@ public class TestResponseParser {
         try {
             new DefaultHttpResponseParser(
                     null,
+                    -1, -1,
                     BasicLineParser.INSTANCE,
-                    DefaultHttpResponseFactory.INSTANCE,
-                    new BasicHttpParams());
-            Assert.fail("IllegalArgumentException should have been thrown");
-        } catch (IllegalArgumentException ex) {
-            // expected
-        }
-        try {
-            SessionInputBuffer inbuffer = new SessionInputBufferMock(new byte[] {});
-            new DefaultHttpResponseParser(
-                    inbuffer,
-                    BasicLineParser.INSTANCE,
-                    null,
-                    new BasicHttpParams());
-            Assert.fail("IllegalArgumentException should have been thrown");
-        } catch (IllegalArgumentException ex) {
-            // expected
-        }
-        try {
-            SessionInputBuffer inbuffer = new SessionInputBufferMock(new byte[] {});
-            new DefaultHttpResponseParser(
-                    inbuffer,
-                    BasicLineParser.INSTANCE,
-                    DefaultHttpResponseFactory.INSTANCE,
-                    null);
+                    DefaultHttpResponseFactory.INSTANCE);
             Assert.fail("IllegalArgumentException should have been thrown");
         } catch (IllegalArgumentException ex) {
             // expected
@@ -96,9 +73,9 @@ public class TestResponseParser {
 
         DefaultHttpResponseParser parser = new DefaultHttpResponseParser(
                 inbuffer,
+                -1, -1,
                 BasicLineParser.INSTANCE,
-                DefaultHttpResponseFactory.INSTANCE,
-                new BasicHttpParams());
+                DefaultHttpResponseFactory.INSTANCE);
 
         HttpResponse httpresponse = parser.parse();
 
@@ -117,10 +94,9 @@ public class TestResponseParser {
 
         DefaultHttpResponseParser parser = new DefaultHttpResponseParser(
                 inbuffer,
+                -1, -1,
                 BasicLineParser.INSTANCE,
-                DefaultHttpResponseFactory.INSTANCE,
-                new BasicHttpParams());
-
+                DefaultHttpResponseFactory.INSTANCE);
         try {
             parser.parse();
             Assert.fail("NoHttpResponseException should have been thrown");
@@ -141,9 +117,9 @@ public class TestResponseParser {
 
         DefaultHttpResponseParser parser = new DefaultHttpResponseParser(
                 inbuffer,
+                -1, -1,
                 BasicLineParser.INSTANCE,
-                DefaultHttpResponseFactory.INSTANCE,
-                new BasicHttpParams());
+                DefaultHttpResponseFactory.INSTANCE);
 
         int timeoutCount = 0;