Class BasicHeaderValueParser

  • All Implemented Interfaces:
    HeaderValueParser

    @Contract(threading=IMMUTABLE)
    public class BasicHeaderValueParser
    extends java.lang.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
    • Field Detail

      • DEFAULT

        @Deprecated
        public static final BasicHeaderValueParser DEFAULT
        Deprecated.
        (4.3) use INSTANCE
        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 Detail

      • BasicHeaderValueParser

        public BasicHeaderValueParser()
    • Method Detail

      • parseElements

        public static HeaderElement[] parseElements​(java.lang.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 - in case of a parsing error
      • 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 HeaderElement parseHeaderElement​(java.lang.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
      • parseParameters

        public static NameValuePair[] parseParameters​(java.lang.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 ParseException.
        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 NameValuePair parseNameValuePair​(java.lang.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