Class BasicHeaderValueParser

java.lang.Object
org.apache.http.message.BasicHeaderValueParser
All Implemented Interfaces:
HeaderValueParser

public class BasicHeaderValueParser
extends Object
implements HeaderValueParser
Basic implementation for parsing header values into elements. Instances of this class are stateless and thread-safe. Derived classes are expected to maintain these properties.
Since:
4.0
Version:
$Revision: 595670 $
Author:
B.C. Holmes, Park, Sung-Gu, Mike Bowler, Oleg Kalnichevski, and others
  • Field Details

    • DEFAULT

      public static final BasicHeaderValueParser DEFAULT
      A default instance of this class, for use as default or fallback. Note that BasicHeaderValueParser 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.
  • Constructor Details

    • BasicHeaderValueParser

      public BasicHeaderValueParser()
  • Method Details

    • parseElements

      public static final HeaderElement[] parseElements​(String value, HeaderValueParser parser) throws ParseException
      Parses elements with the given parser.
      Parameters:
      value - the header value to parse
      parser - the parser to use, or null for default
      Returns:
      array holding the header elements, never null
      Throws:
      ParseException
    • parseElements

      public HeaderElement[] parseElements​(CharArrayBuffer buffer, ParserCursor cursor)
      Description copied from interface: HeaderValueParser
      Parses a header value into elements. Parse errors are indicated as RuntimeException.

      Some HTTP headers (such as the set-cookie header) have values that can be decomposed into multiple elements. In order to be processed by this parser, such headers must be in the following form:

       header  = [ element ] *( "," [ element ] )
       element = name [ "=" [ value ] ] *( ";" [ param ] )
       param   = name [ "=" [ value ] ]
      
       name    = token
       value   = ( token | quoted-string )
      
       token         = 1*<any char except "=", ",", ";", <"> and
                             white space>
       quoted-string = <"> *( text | quoted-char ) <">
       text          = any char except <">
       quoted-char   = "\" char
       

      Any amount of white space is allowed between any part of the header, element or param and is ignored. A missing value in any element or param will be stored as the empty String; if the "=" is also missing null will be stored instead.

      Specified by:
      parseElements in interface HeaderValueParser
      Parameters:
      buffer - buffer holding the header value to parse
      cursor - the parser cursor containing the current position and the bounds within the buffer for the parsing operation
      Returns:
      an array holding all elements of the header value
    • parseHeaderElement

      public static final HeaderElement parseHeaderElement​(String value, HeaderValueParser parser) throws ParseException
      Parses an element with the given parser.
      Parameters:
      value - the header element to parse
      parser - the parser to use, or null for default
      Returns:
      the parsed header element
      Throws:
      ParseException
    • parseHeaderElement

      public HeaderElement parseHeaderElement​(CharArrayBuffer buffer, ParserCursor cursor)
      Description copied from interface: HeaderValueParser
      Parses a single header element. A header element consist of a semicolon-separate list of name=value definitions.
      Specified by:
      parseHeaderElement in interface HeaderValueParser
      Parameters:
      buffer - buffer holding the element to parse
      cursor - the parser cursor containing the current position and the bounds within the buffer for the parsing operation
      Returns:
      the parsed element
    • createHeaderElement

      protected HeaderElement createHeaderElement​(String name, String value, NameValuePair[] params)
      Returns:
      a header element representing the argument
    • parseParameters

      public static final NameValuePair[] parseParameters​(String value, HeaderValueParser parser) throws ParseException
      Parses parameters with the given parser.
      Parameters:
      value - the parameter list to parse
      parser - the parser to use, or null for default
      Returns:
      array holding the parameters, never null
      Throws:
      ParseException
    • parseParameters

      public NameValuePair[] parseParameters​(CharArrayBuffer buffer, ParserCursor cursor)
      Description copied from interface: HeaderValueParser
      Parses a list of name-value pairs. These lists are used to specify parameters to a header element. Parse errors are indicated as RuntimeException.

      This method comforms to the generic grammar and formatting rules outlined in the Section 2.2 and Section 3.6 of RFC 2616.

      2.2 Basic Rules

      The following rules are used throughout this specification to describe basic parsing constructs. The US-ASCII coded character set is defined by ANSI X3.4-1986.

           OCTET          = 
           CHAR           = 
           UPALPHA        = 
           LOALPHA        = 
           ALPHA          = UPALPHA | LOALPHA
           DIGIT          = 
           CTL            = 
           CR             = 
           LF             = 
           SP             = 
           HT             = 
           <">            = 
       

      Many HTTP/1.1 header field values consist of words separated by LWS or special characters. These special characters MUST be in a quoted string to be used within a parameter value (as defined in section 3.6).

       token          = 1*
       separators     = "(" | ")" | "<" | ">" | "@"
                      | "," | ";" | ":" | "\" | <">
                      | "/" | "[" | "]" | "?" | "="
                      | "{" | "}" | SP | HT
       

      A string of text is parsed as a single word if it is quoted using double-quote marks.

       quoted-string  = ( <"> *(qdtext | quoted-pair ) <"> )
       qdtext         = >
       

      The backslash character ("\") MAY be used as a single-character quoting mechanism only within quoted-string and comment constructs.

       quoted-pair    = "\" CHAR
       
      3.6 Transfer Codings

      Parameters are in the form of attribute/value pairs.

       parameter               = attribute "=" value
       attribute               = token
       value                   = token | quoted-string
       
      Specified by:
      parseParameters in interface HeaderValueParser
      Parameters:
      buffer - buffer holding the name-value list to parse
      cursor - the parser cursor containing the current position and the bounds within the buffer for the parsing operation
      Returns:
      an array holding all items of the name-value list
    • parseNameValuePair

      public static final NameValuePair parseNameValuePair​(String value, HeaderValueParser parser) throws ParseException
      Parses a name-value-pair with the given parser.
      Parameters:
      value - the NVP to parse
      parser - the parser to use, or null for default
      Returns:
      the parsed name-value pair
      Throws:
      ParseException
    • parseNameValuePair

      public NameValuePair parseNameValuePair​(CharArrayBuffer buffer, ParserCursor cursor)
      Description copied from interface: HeaderValueParser
      Parses a name=value specification, where the = and value are optional.
      Specified by:
      parseNameValuePair in interface HeaderValueParser
      Parameters:
      buffer - the buffer holding the name-value pair to parse
      cursor - the parser cursor containing the current position and the bounds within the buffer for the parsing operation
      Returns:
      the name-value pair, where the value is null if no value is specified
    • parseNameValuePair

      public NameValuePair parseNameValuePair​(CharArrayBuffer buffer, ParserCursor cursor, char[] delimiters)
    • createNameValuePair

      protected NameValuePair createNameValuePair​(String name, String value)
      Parameters:
      name - the name
      value - the value, or null
      Returns:
      a name-value pair representing the arguments