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;