## org.apache.http.impl.io
Class AbstractMessageParser<T extends HttpMessage>

    java.lang.Object
      org.apache.http.impl.io.AbstractMessageParser<T>

All Implemented Interfaces:
  HttpMessageParser<T>

Direct Known Subclasses:
  DefaultHttpRequestParser, DefaultHttpResponseParser, HttpRequestParser, HttpResponseParser

    @NotThreadSafe
    public abstract class AbstractMessageParser<T extends HttpMessage>

extends Object
implements HttpMessageParser<T>

Abstract base class for HTTP message parsers that obtain input from an instance of `SessionInputBuffer`.

The following parameters can be used to customize the behavior of this class:

- `CoreConnectionPNames.MAX_HEADER_COUNT`
- `CoreConnectionPNames.MAX_LINE_LENGTH`

Since:
  4.0

Field Summary
`protected LineParser` `lineParser`

Constructor Summary
`AbstractMessageParser(SessionInputBuffer buffer, LineParser parser, HttpParams params)` Creates an instance of this class.

Method Summary
`T` `parse()` Generates an instance of `HttpMessage` from the underlying data source.
`protected abstract T` `parseHead(SessionInputBuffer sessionBuffer)` Subclasses must override this method to generate an instance of `HttpMessage` based on the initial input from the session buffer.
`static Header[]` `parseHeaders(SessionInputBuffer inbuffer, int maxHeaderCount, int maxLineLen, LineParser parser)` 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.
`static Header[]` `parseHeaders(SessionInputBuffer inbuffer, int maxHeaderCount, int maxLineLen, LineParser parser, List<CharArrayBuffer> headerLines)` 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.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### lineParser

    protected final LineParser lineParser

Constructor Detail

### AbstractMessageParser

    public AbstractMessageParser(SessionInputBuffer buffer,
                                 LineParser parser,
                                 HttpParams params)

  Creates an instance of this class.

  Parameters:
    `buffer` - the session input buffer.
    `parser` - the line parser.
    `params` - HTTP parameters.

Method Detail

### parseHeaders

    public static Header[] parseHeaders(SessionInputBuffer inbuffer,
                                        int maxHeaderCount,
                                        int maxLineLen,
                                        LineParser parser)
                                 throws HttpException,
                                        IOException

  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.

  Parameters:
    `inbuffer` - Session input buffer
    `maxHeaderCount` - maximum number of headers allowed. If the number of headers received from the data stream exceeds maxCount value, an IOException will be thrown. Setting this parameter to a negative value or zero will disable the check.
    `maxLineLen` - maximum number of characters for a header line, including the continuation lines. Setting this parameter to a negative value or zero will disable the check.
    `parser` - line parser to use. Can be `null`, in which case the default implementation of this interface will be used.
  Returns:
    array of HTTP headers
  Throws:
    `IOException` - in case of an I/O error
    `HttpException` - in case of HTTP protocol violation

### parseHeaders

    public static Header[] parseHeaders(SessionInputBuffer inbuffer,
                                        int maxHeaderCount,
                                        int maxLineLen,
                                        LineParser parser,
                                        List<CharArrayBuffer> headerLines)
                                 throws HttpException,
                                        IOException

  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.

  Parameters:
    `inbuffer` - Session input buffer
    `maxHeaderCount` - maximum number of headers allowed. If the number of headers received from the data stream exceeds maxCount value, an IOException will be thrown. Setting this parameter to a negative value or zero will disable the check.
    `maxLineLen` - maximum number of characters for a header line, including the continuation lines. Setting this parameter to a negative value or zero will disable the check.
    `parser` - line parser to use.
    `headerLines` - List of header lines. This list will be used to store intermediate results. This makes it possible to resume parsing of headers in case of a `InterruptedIOException`.
  Returns:
    array of HTTP headers
  Throws:
    `IOException` - in case of an I/O error
    `HttpException` - in case of HTTP protocol violation
  Since:
    4.1

### parseHead

    protected abstract T parseHead(SessionInputBuffer sessionBuffer)
                                                throws IOException,
                                                       HttpException,
                                                       ParseException

  Subclasses must override this method to generate an instance of `HttpMessage` based on the initial input from the session buffer.

  Usually this method is expected to read just the very first line or the very first valid from the data stream and based on the input generate an appropriate instance of `HttpMessage`.

  Parameters:
    `sessionBuffer` - the session input buffer.
  Returns:
    HTTP message based on the input from the session buffer.
  Throws:
    `IOException` - in case of an I/O error.
    `HttpException` - in case of HTTP protocol violation.
    `ParseException` - in case of a parse error.

### parse

    public T parse()
                                throws IOException,
                                       HttpException

  Description copied from interface: `HttpMessageParser`
  Generates an instance of `HttpMessage` from the underlying data source.

  Specified by:
    `parse` in interface `HttpMessageParser<T extends HttpMessage>`
  Returns:
    HTTP message
  Throws:
    `IOException` - in case of an I/O error
    `HttpException` - in case of HTTP protocol violation

Copyright © 2005-2013 The Apache Software Foundation. All Rights Reserved.