public class

BasicLineParser

extends Object
implements LineParser
java.lang.Object
   ↳ org.apache.http.message.BasicLineParser

Class Overview

Basic parser for lines in the head section of an HTTP message. There are individual methods for parsing a request line, a status line, or a header line. The lines to parse are passed in memory, the parser does not depend on any specific IO mechanism. Instances of this class are stateless and thread-safe. Derived classes MUST maintain these properties.

Note: This class was created by refactoring parsing code located in various other classes. The author tags from those other classes have been replicated here, although the association with the parsing code taken from there has not been traced.

Summary

Constants
BasicLineParser DEFAULT A default instance of this class, for use as default or fallback.
Fields
protected final ProtocolVersion protocol A version of the protocol to parse.
Public Constructors
BasicLineParser(ProtocolVersion proto)
Creates a new line parser for the given HTTP-like protocol.
BasicLineParser()
Creates a new line parser for HTTP.
Public Methods
boolean hasProtocolVersion(CharArrayBuffer buffer, ParserCursor cursor)
Checks whether there likely is a protocol version in a line.
Header parseHeader(CharArrayBuffer buffer)
Creates a header from a line.
final static Header parseHeader(String value, LineParser parser)
ProtocolVersion parseProtocolVersion(CharArrayBuffer buffer, ParserCursor cursor)
Parses the textual representation of a protocol version.
final static ProtocolVersion parseProtocolVersion(String value, LineParser parser)
final static RequestLine parseRequestLine(String value, LineParser parser)
RequestLine parseRequestLine(CharArrayBuffer buffer, ParserCursor cursor)
Parses a request line.
final static StatusLine parseStatusLine(String value, LineParser parser)
StatusLine parseStatusLine(CharArrayBuffer buffer, ParserCursor cursor)
Parses a status line.
Protected Methods
ProtocolVersion createProtocolVersion(int major, int minor)
Creates a protocol version.
RequestLine createRequestLine(String method, String uri, ProtocolVersion ver)
Instantiates a new request line.
StatusLine createStatusLine(ProtocolVersion ver, int status, String reason)
Instantiates a new status line.
void skipWhitespace(CharArrayBuffer buffer, ParserCursor cursor)
Helper to skip whitespace.
[Expand]
Inherited Methods
From class java.lang.Object
From interface org.apache.http.message.LineParser

Constants

public static final BasicLineParser DEFAULT

Since: API Level 1

A default instance of this class, for use as default or fallback. Note that BasicLineParser is not a singleton, there can be many instances of the class itself and of derived classes. The instance here provides non-customized, default behavior.

Fields

protected final ProtocolVersion protocol

Since: API Level 1

A version of the protocol to parse. The version is typically not relevant, but the protocol name.

Public Constructors

public BasicLineParser (ProtocolVersion proto)

Since: API Level 1

Creates a new line parser for the given HTTP-like protocol.

Parameters
proto a version of the protocol to parse, or null for HTTP. The actual version is not relevant, only the protocol name.

public BasicLineParser ()

Since: API Level 1

Creates a new line parser for HTTP.

Public Methods

public boolean hasProtocolVersion (CharArrayBuffer buffer, ParserCursor cursor)

Since: API Level 1

Checks whether there likely is a protocol version in a line. This method implements a heuristic to check for a likely protocol version specification. It does not guarantee that parseProtocolVersion(CharArrayBuffer, ParserCursor) would not detect a parse error. This can be used to detect garbage lines before a request or status line.

Parameters
buffer a buffer holding the line to inspect
cursor the cursor at which to check for a protocol version, or negative for "end of line". Whether the check tolerates whitespace before or after the protocol version is implementation dependent.
Returns
  • true if there is a protocol version at the argument index (possibly ignoring whitespace), false otherwise

public Header parseHeader (CharArrayBuffer buffer)

Since: API Level 1

Creates a header from a line. The full header line is expected here. Header continuation lines must be joined by the caller before invoking this method.

Parameters
buffer a buffer holding the full header line. This buffer MUST NOT be re-used afterwards, since the returned object may reference the contents later.
Returns
  • the header in the argument buffer. The returned object MAY be a wrapper for the argument buffer. The argument buffer MUST NOT be re-used or changed afterwards.

public static final Header parseHeader (String value, LineParser parser)

Since: API Level 1

public ProtocolVersion parseProtocolVersion (CharArrayBuffer buffer, ParserCursor cursor)

Since: API Level 1

Parses the textual representation of a protocol version. This is needed for parsing request lines (last element) as well as status lines (first element).

Parameters
buffer a buffer holding the protocol version to parse
cursor the parser cursor containing the current position and the bounds within the buffer for the parsing operation
Returns
  • the parsed protocol version

public static final ProtocolVersion parseProtocolVersion (String value, LineParser parser)

Since: API Level 1

public static final RequestLine parseRequestLine (String value, LineParser parser)

Since: API Level 1

public RequestLine parseRequestLine (CharArrayBuffer buffer, ParserCursor cursor)

Since: API Level 1

Parses a request line.

Parameters
buffer a buffer holding the line to parse
cursor the parser cursor containing the current position and the bounds within the buffer for the parsing operation
Returns
  • the parsed request line
Throws
ParseException in case of a parse error

public static final StatusLine parseStatusLine (String value, LineParser parser)

Since: API Level 1

public StatusLine parseStatusLine (CharArrayBuffer buffer, ParserCursor cursor)

Since: API Level 1

Parses a status line.

Parameters
buffer a buffer holding the line to parse
cursor the parser cursor containing the current position and the bounds within the buffer for the parsing operation
Returns
  • the parsed status line

Protected Methods

protected ProtocolVersion createProtocolVersion (int major, int minor)

Since: API Level 1

Creates a protocol version. Called from parseProtocolVersion(String, LineParser).

Parameters
major the major version number, for example 1 in HTTP/1.0
minor the minor version number, for example 0 in HTTP/1.0
Returns
  • the protocol version

protected RequestLine createRequestLine (String method, String uri, ProtocolVersion ver)

Since: API Level 1

Instantiates a new request line. Called from parseRequestLine(String, LineParser).

Parameters
method the request method
uri the requested URI
ver the protocol version
Returns
  • a new status line with the given data

protected StatusLine createStatusLine (ProtocolVersion ver, int status, String reason)

Since: API Level 1

Instantiates a new status line. Called from parseStatusLine(String, LineParser).

Parameters
ver the protocol version
status the status code
reason the reason phrase
Returns
  • a new status line with the given data

protected void skipWhitespace (CharArrayBuffer buffer, ParserCursor cursor)

Since: API Level 1

Helper to skip whitespace.