org.apache.hc.core5.http.impl.io

## Class AbstractMessageParser<T extends HttpMessage>

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

- All Implemented Interfaces:
    HttpMessageParser<T>
  Direct Known Subclasses:
    DefaultHttpRequestParser, DefaultHttpResponseParser

      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`.
  Since:
    4.0

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractMessageParser(LineParser lineParser, Http1Config http1Config)` Creates new instance of AbstractMessageParser.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected abstract IOException` | `createConnectionClosedException()` Subclasses must override this method to generate an appropriate exception in case of unexpected connection termination by the peer endpoint.
    `protected abstract T` | `createMessage(CharArrayBuffer buffer)` Subclasses must override this method to generate an instance of `HttpMessage` based on the initial input from the session buffer.
    `T` | `parse(SessionInputBuffer buffer, InputStream inputStream)` Generates an instance of `MessageHeaders` from the given input stream..
    `static Header[]` | `parseHeaders(SessionInputBuffer inBuffer, InputStream inputStream, int maxHeaderCount, int maxLineLen, LineParser lineParser)` Parses HTTP headers from the data receiver stream according to the generic format as specified by the HTTP/1.1 protocol specification.
    `static Header[]` | `parseHeaders(SessionInputBuffer inBuffer, InputStream inputStream, int maxHeaderCount, int maxLineLen, LineParser parser, List<CharArrayBuffer> headerLines)` Parses HTTP headers from the data receiver stream according to the generic format as specified by the HTTP/1.1 protocol specification.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### AbstractMessageParser

          public AbstractMessageParser(LineParser lineParser,
                               Http1Config http1Config)

      Creates new instance of AbstractMessageParser.
      Parameters:
        `lineParser` - the line parser. If `null` `LazyLineParser.INSTANCE` will be used.
        `http1Config` - the message http1Config. If `null` `Http1Config.DEFAULT` will be used.
      Since:
        4.3

  - ### Method Detail

    - #### parseHeaders

          public static Header[] parseHeaders(SessionInputBuffer inBuffer,
                              InputStream inputStream,
                              int maxHeaderCount,
                              int maxLineLen,
                              LineParser lineParser)
                                       throws HttpException,
                                              IOException

      Parses HTTP headers from the data receiver stream according to the generic format as specified by the HTTP/1.1 protocol specification.
      Parameters:
        `inBuffer` - Session input buffer
        `inputStream` - Input stream
        `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.
        `lineParser` - the line parser. If `null` `LazyLineParser.INSTANCE` 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,
                              InputStream inputStream,
                              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 specified by the HTTP/1.1 protocol specification.
      Parameters:
        `inBuffer` - Session input buffer
        `inputStream` - Input stream
        `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

    - #### createMessage

          protected abstract T createMessage(CharArrayBuffer buffer)
                                                          throws IOException,
                                                                 HttpException

      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:
        `buffer` - 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.
      Since:
        5.0

    - #### createConnectionClosedException

          protected abstract IOException createConnectionClosedException()

      Subclasses must override this method to generate an appropriate exception in case of unexpected connection termination by the peer endpoint.
      Since:
        5.0

    - #### parse

          public T parse(SessionInputBuffer buffer,
                InputStream inputStream)
                                      throws IOException,
                                             HttpException

      Description copied from interface: `HttpMessageParser`
      Generates an instance of `MessageHeaders` from the given input stream..
      Specified by:
        `parse` in interface `HttpMessageParser<T extends HttpMessage>`
      Parameters:
        `buffer` - Session input buffer
        `inputStream` - Input stream
      Returns:
        HTTP message head
      Throws:
        `IOException` - in case of an I/O error
        `HttpException` - in case of HTTP protocol violation

Copyright © 2005–2022 The Apache Software Foundation. All rights reserved.