Package org.apache.http.message
Class BasicLineParser
java.lang.Object
org.apache.http.message.BasicLineParser
- All Implemented Interfaces:
LineParser
public class BasicLineParser extends Object implements LineParser
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.
- Author:
- Jeff Dever, Mike Bowler, Oleg Kalnichevski, and others
-
Field Summary
Fields Modifier and Type Field Description static BasicLineParserDEFAULTA default instance of this class, for use as default or fallback.protected ProtocolVersionprotocolA version of the protocol to parse. -
Constructor Summary
Constructors Constructor Description BasicLineParser()Creates a new line parser for HTTP.BasicLineParser(ProtocolVersion proto)Creates a new line parser for the given HTTP-like protocol. -
Method Summary
Modifier and Type Method Description protected ProtocolVersioncreateProtocolVersion(int major, int minor)Creates a protocol version.protected RequestLinecreateRequestLine(String method, String uri, ProtocolVersion ver)Instantiates a new request line.protected StatusLinecreateStatusLine(ProtocolVersion ver, int status, String reason)Instantiates a new status line.booleanhasProtocolVersion(CharArrayBuffer buffer, ParserCursor cursor)Checks whether there likely is a protocol version in a line.static HeaderparseHeader(String value, LineParser parser)HeaderparseHeader(CharArrayBuffer buffer)Creates a header from a line.static ProtocolVersionparseProtocolVersion(String value, LineParser parser)ProtocolVersionparseProtocolVersion(CharArrayBuffer buffer, ParserCursor cursor)Parses the textual representation of a protocol version.static RequestLineparseRequestLine(String value, LineParser parser)RequestLineparseRequestLine(CharArrayBuffer buffer, ParserCursor cursor)Parses a request line.static StatusLineparseStatusLine(String value, LineParser parser)StatusLineparseStatusLine(CharArrayBuffer buffer, ParserCursor cursor)Parses a status line.protected voidskipWhitespace(CharArrayBuffer buffer, ParserCursor cursor)Helper to skip whitespace.
-
Field Details
-
DEFAULT
A default instance of this class, for use as default or fallback. Note thatBasicLineParseris not a singleton, there can be many instances of the class itself and of derived classes. The instance here provides non-customized, default behavior. -
protocol
A version of the protocol to parse. The version is typically not relevant, but the protocol name.
-
-
Constructor Details
-
BasicLineParser
Creates a new line parser for the given HTTP-like protocol.- Parameters:
proto- a version of the protocol to parse, ornullfor HTTP. The actual version is not relevant, only the protocol name.
-
BasicLineParser
public BasicLineParser()Creates a new line parser for HTTP.
-
-
Method Details
-
parseProtocolVersion
public static final ProtocolVersion parseProtocolVersion(String value, LineParser parser) throws ParseException- Throws:
ParseException
-
parseProtocolVersion
public ProtocolVersion parseProtocolVersion(CharArrayBuffer buffer, ParserCursor cursor) throws ParseExceptionDescription copied from interface:LineParserParses the textual representation of a protocol version. This is needed for parsing request lines (last element) as well as status lines (first element).- Specified by:
parseProtocolVersionin interfaceLineParser- Parameters:
buffer- a buffer holding the protocol version to parsecursor- the parser cursor containing the current position and the bounds within the buffer for the parsing operation- Returns:
- the parsed protocol version
- Throws:
ParseException- in case of a parse error
-
createProtocolVersion
Creates a protocol version. Called fromparseProtocolVersion(java.lang.String, org.apache.http.message.LineParser).- Parameters:
major- the major version number, for example 1 in HTTP/1.0minor- the minor version number, for example 0 in HTTP/1.0- Returns:
- the protocol version
-
hasProtocolVersion
Description copied from interface:LineParserChecks 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 thatLineParser.parseProtocolVersion(org.apache.http.util.CharArrayBuffer, org.apache.http.message.ParserCursor)would not detect a parse error. This can be used to detect garbage lines before a request or status line.- Specified by:
hasProtocolVersionin interfaceLineParser- Parameters:
buffer- a buffer holding the line to inspectcursor- 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:
trueif there is a protocol version at the argument index (possibly ignoring whitespace),falseotherwise
-
parseRequestLine
public static final RequestLine parseRequestLine(String value, LineParser parser) throws ParseException- Throws:
ParseException
-
parseRequestLine
public RequestLine parseRequestLine(CharArrayBuffer buffer, ParserCursor cursor) throws ParseExceptionParses a request line.- Specified by:
parseRequestLinein interfaceLineParser- Parameters:
buffer- a buffer holding the line to parsecursor- 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
-
createRequestLine
Instantiates a new request line. Called fromparseRequestLine(java.lang.String, org.apache.http.message.LineParser).- Parameters:
method- the request methoduri- the requested URIver- the protocol version- Returns:
- a new status line with the given data
-
parseStatusLine
public static final StatusLine parseStatusLine(String value, LineParser parser) throws ParseException- Throws:
ParseException
-
parseStatusLine
public StatusLine parseStatusLine(CharArrayBuffer buffer, ParserCursor cursor) throws ParseExceptionDescription copied from interface:LineParserParses a status line.- Specified by:
parseStatusLinein interfaceLineParser- Parameters:
buffer- a buffer holding the line to parsecursor- the parser cursor containing the current position and the bounds within the buffer for the parsing operation- Returns:
- the parsed status line
- Throws:
ParseException- in case of a parse error
-
createStatusLine
Instantiates a new status line. Called fromparseStatusLine(java.lang.String, org.apache.http.message.LineParser).- Parameters:
ver- the protocol versionstatus- the status codereason- the reason phrase- Returns:
- a new status line with the given data
-
parseHeader
- Throws:
ParseException
-
parseHeader
Description copied from interface:LineParserCreates 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.- Specified by:
parseHeaderin interfaceLineParser- 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.
- Throws:
ParseException- in case of a parse error
-
skipWhitespace
Helper to skip whitespace.
-