Class HeaderUtils


  • public class HeaderUtils
    extends java.lang.Object
    HTTP-style header utilities.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static java.util.Set<java.lang.String> STANDARD_HEADERS
      Standard set of headers which cannot be modified.
      private static java.util.Set<java.lang.String> UNSUPPORTED_STANDARD_HEADERS
      Set of unsupported headers that will be covered in future versions.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private HeaderUtils()
      Private constructor to ensure that the class acts as a true utility class i.e.
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static void addEntityHeaders​(Representation entity, Series<Header> headers)
      Adds the entity headers based on the Representation to the Series.
      static void addExtensionHeaders​(Series<Header> existingHeaders, Series<Header> additionalHeaders)
      Adds extension headers if they are non-standard headers.
      static void addGeneralHeaders​(Message message, Series<Header> headers)
      Adds the general headers from the Message to the Series.
      static void addHeader​(java.lang.String headerName, java.lang.String headerValue, Series<Header> headers)
      Adds a header to the given list.
      static void addNotModifiedEntityHeaders​(Representation entity, Series<Header> headers)
      Adds the entity headers based on the Representation to the Series when a 304 (Not Modified) status is returned.
      static void addRequestHeaders​(Request request, Series<Header> headers)
      Adds the headers based on the Request to the given Series .
      static void addResponseHeaders​(Response response, Series<Header> headers)
      Adds the headers based on the Response to the given Series.
      static void copyExtensionHeaders​(Series<Header> headers, Message message)
      Copies extension headers into a request or a response.
      static void copyResponseTransportHeaders​(Series<Header> headers, Response response)
      Copies headers into a response.
      static Representation extractEntityHeaders​(java.lang.Iterable<Header> headers, Representation representation)
      Extracts entity headers and updates a given representation or create an empty one when at least one entity header is present.
      static long getContentLength​(Series<Header> headers)
      Returns the content length of the request entity if know, Representation.UNKNOWN_SIZE otherwise.
      static boolean isAlpha​(int character)
      Indicates if the given character is alphabetical (a-z or A-Z).
      static boolean isAsciiChar​(int character)
      Indicates if the given character is in ASCII range.
      static boolean isCarriageReturn​(int character)
      Indicates if the given character is a carriage return.
      static boolean isChunkedEncoding​(Series<Header> headers)
      Indicates if the entity is chunked.
      static boolean isComma​(int character)
      Indicates if the given character is a comma, the character used as header value separator.
      static boolean isCommentText​(int character)
      Indicates if the given character is a comment text.
      static boolean isConnectionClose​(Series<Header> headers)
      Indicates if the connection must be closed.
      static boolean isControlChar​(int character)
      Indicates if the given character is a control character.
      static boolean isDigit​(int character)
      Indicates if the given character is a digit (0-9).
      static boolean isDoubleQuote​(int character)
      Indicates if the given character is a double quote.
      static boolean isHorizontalTab​(int character)
      Indicates if the given character is an horizontal tab.
      static boolean isLatin1Char​(int character)
      Indicates if the given character is in ISO Latin 1 (8859-1) range.
      static boolean isLinearWhiteSpace​(int character)
      Indicates if the given character is a value separator.
      static boolean isLineFeed​(int character)
      Indicates if the given character is a line feed.
      static boolean isLowerCase​(int character)
      Indicates if the given character is lower case (a-z).
      static boolean isQuoteCharacter​(int character)
      Indicates if the given character marks the start of a quoted pair.
      static boolean isQuotedText​(int character)
      Indicates if the given character is a quoted text.
      static boolean isSemiColon​(int character)
      Indicates if the given character is a semicolon, the character used as header parameter separator.
      static boolean isSeparator​(int character)
      Indicates if the given character is a separator.
      static boolean isSpace​(int character)
      Indicates if the given character is a space.
      static boolean isText​(int character)
      Indicates if the given character is textual (ISO Latin 1 and not a control character).
      static boolean isToken​(java.lang.CharSequence token)
      Indicates if the token is valid.
      Only contains valid token characters.
      static boolean isTokenChar​(int character)
      Indicates if the given character is a token character (text and not a separator).
      static boolean isUpperCase​(int character)
      Indicates if the given character is upper case (A-Z).
      static void keepExtensionHeadersOnly​(Message message)
      Remove the headers that are mapped to the framework's API from the given message's list of headers.
      static void writeCRLF​(java.io.OutputStream os)
      Writes a new line.
      static void writeHeaderLine​(Header header, java.io.OutputStream os)
      Writes a header line.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • STANDARD_HEADERS

        private static final java.util.Set<java.lang.String> STANDARD_HEADERS
        Standard set of headers which cannot be modified.
      • UNSUPPORTED_STANDARD_HEADERS

        private static final java.util.Set<java.lang.String> UNSUPPORTED_STANDARD_HEADERS
        Set of unsupported headers that will be covered in future versions.
    • Constructor Detail

      • HeaderUtils

        private HeaderUtils()
        Private constructor to ensure that the class acts as a true utility class i.e. it isn't instantiable and extensible.
    • Method Detail

      • addExtensionHeaders

        public static void addExtensionHeaders​(Series<Header> existingHeaders,
                                               Series<Header> additionalHeaders)
        Adds extension headers if they are non-standard headers.
        Parameters:
        existingHeaders - The headers to update.
        additionalHeaders - The headers to add.
      • addGeneralHeaders

        public static void addGeneralHeaders​(Message message,
                                             Series<Header> headers)
        Adds the general headers from the Message to the Series.
        Parameters:
        message - The source Message.
        headers - The target headers Series.
      • addHeader

        public static void addHeader​(java.lang.String headerName,
                                     java.lang.String headerValue,
                                     Series<Header> headers)
        Adds a header to the given list. Checks for exceptions and logs them.
        Parameters:
        headerName - The header name.
        headerValue - The header value.
        headers - The headers list.
      • addNotModifiedEntityHeaders

        public static void addNotModifiedEntityHeaders​(Representation entity,
                                                       Series<Header> headers)
        Adds the entity headers based on the Representation to the Series when a 304 (Not Modified) status is returned.
        Parameters:
        entity - The source entity Representation.
        headers - The target headers Series.
      • addRequestHeaders

        public static void addRequestHeaders​(Request request,
                                             Series<Header> headers)
        Adds the headers based on the Request to the given Series .
        Parameters:
        request - The Request to copy the headers from.
        headers - The Series to copy the headers to.
      • addResponseHeaders

        public static void addResponseHeaders​(Response response,
                                              Series<Header> headers)
        Adds the headers based on the Response to the given Series.
        Parameters:
        response - The Response to copy the headers from.
        headers - The Series to copy the headers to.
      • keepExtensionHeadersOnly

        public static void keepExtensionHeadersOnly​(Message message)
        Remove the headers that are mapped to the framework's API from the given message's list of headers.
        Parameters:
        message - The message to update.
      • copyExtensionHeaders

        public static void copyExtensionHeaders​(Series<Header> headers,
                                                Message message)
        Copies extension headers into a request or a response.
        Parameters:
        headers - The headers to copy.
        message - The message to update.
      • copyResponseTransportHeaders

        public static void copyResponseTransportHeaders​(Series<Header> headers,
                                                        Response response)
        Copies headers into a response.
        Parameters:
        headers - The headers to copy.
        response - The response to update.
      • extractEntityHeaders

        public static Representation extractEntityHeaders​(java.lang.Iterable<Header> headers,
                                                          Representation representation)
                                                   throws java.lang.NumberFormatException
        Extracts entity headers and updates a given representation or create an empty one when at least one entity header is present.
        Parameters:
        headers - The headers to copy.
        representation - The representation to update or null.
        Returns:
        a representation updated with the given entity headers.
        Throws:
        java.lang.NumberFormatException
        See Also:
        copyResponseTransportHeaders(Series, Response)
      • getContentLength

        public static long getContentLength​(Series<Header> headers)
        Returns the content length of the request entity if know, Representation.UNKNOWN_SIZE otherwise.
        Returns:
        The request content length.
      • isAlpha

        public static boolean isAlpha​(int character)
        Indicates if the given character is alphabetical (a-z or A-Z).
        Parameters:
        character - The character to test.
        Returns:
        True if the given character is alphabetical (a-z or A-Z).
      • isAsciiChar

        public static boolean isAsciiChar​(int character)
        Indicates if the given character is in ASCII range.
        Parameters:
        character - The character to test.
        Returns:
        True if the given character is in ASCII range.
      • isCarriageReturn

        public static boolean isCarriageReturn​(int character)
        Indicates if the given character is a carriage return.
        Parameters:
        character - The character to test.
        Returns:
        True if the given character is a carriage return.
      • isChunkedEncoding

        public static boolean isChunkedEncoding​(Series<Header> headers)
        Indicates if the entity is chunked.
        Returns:
        True if the entity is chunked.
      • isComma

        public static boolean isComma​(int character)
        Indicates if the given character is a comma, the character used as header value separator.
        Parameters:
        character - The character to test.
        Returns:
        True if the given character is a comma.
      • isCommentText

        public static boolean isCommentText​(int character)
        Indicates if the given character is a comment text. It means isText(int) returns true and the character is not '(' or ')'.
        Parameters:
        character - The character to test.
        Returns:
        True if the given character is a quoted text.
      • isConnectionClose

        public static boolean isConnectionClose​(Series<Header> headers)
        Indicates if the connection must be closed.
        Parameters:
        headers - The headers to test.
        Returns:
        True if the connection must be closed.
      • isControlChar

        public static boolean isControlChar​(int character)
        Indicates if the given character is a control character.
        Parameters:
        character - The character to test.
        Returns:
        True if the given character is a control character.
      • isDigit

        public static boolean isDigit​(int character)
        Indicates if the given character is a digit (0-9).
        Parameters:
        character - The character to test.
        Returns:
        True if the given character is a digit (0-9).
      • isDoubleQuote

        public static boolean isDoubleQuote​(int character)
        Indicates if the given character is a double quote.
        Parameters:
        character - The character to test.
        Returns:
        True if the given character is a double quote.
      • isHorizontalTab

        public static boolean isHorizontalTab​(int character)
        Indicates if the given character is an horizontal tab.
        Parameters:
        character - The character to test.
        Returns:
        True if the given character is an horizontal tab.
      • isLatin1Char

        public static boolean isLatin1Char​(int character)
        Indicates if the given character is in ISO Latin 1 (8859-1) range. Note that this range is a superset of ASCII and a subrange of Unicode (UTF-8).
        Parameters:
        character - The character to test.
        Returns:
        True if the given character is in ISO Latin 1 range.
      • isLinearWhiteSpace

        public static boolean isLinearWhiteSpace​(int character)
        Indicates if the given character is a value separator.
        Parameters:
        character - The character to test.
        Returns:
        True if the given character is a value separator.
      • isLineFeed

        public static boolean isLineFeed​(int character)
        Indicates if the given character is a line feed.
        Parameters:
        character - The character to test.
        Returns:
        True if the given character is a line feed.
      • isLowerCase

        public static boolean isLowerCase​(int character)
        Indicates if the given character is lower case (a-z).
        Parameters:
        character - The character to test.
        Returns:
        True if the given character is lower case (a-z).
      • isQuoteCharacter

        public static boolean isQuoteCharacter​(int character)
        Indicates if the given character marks the start of a quoted pair.
        Parameters:
        character - The character to test.
        Returns:
        True if the given character marks the start of a quoted pair.
      • isQuotedText

        public static boolean isQuotedText​(int character)
        Indicates if the given character is a quoted text. It means isText(int) returns true and isDoubleQuote(int) returns false.
        Parameters:
        character - The character to test.
        Returns:
        True if the given character is a quoted text.
      • isSemiColon

        public static boolean isSemiColon​(int character)
        Indicates if the given character is a semicolon, the character used as header parameter separator.
        Parameters:
        character - The character to test.
        Returns:
        True if the given character is a semicolon.
      • isSeparator

        public static boolean isSeparator​(int character)
        Indicates if the given character is a separator.
        Parameters:
        character - The character to test.
        Returns:
        True if the given character is a separator.
      • isSpace

        public static boolean isSpace​(int character)
        Indicates if the given character is a space.
        Parameters:
        character - The character to test.
        Returns:
        True if the given character is a space.
      • isText

        public static boolean isText​(int character)
        Indicates if the given character is textual (ISO Latin 1 and not a control character).
        Parameters:
        character - The character to test.
        Returns:
        True if the given character is textual.
      • isToken

        public static boolean isToken​(java.lang.CharSequence token)
        Indicates if the token is valid.
        Only contains valid token characters.
        Parameters:
        token - The token to check
        Returns:
        True if the token is valid.
      • isTokenChar

        public static boolean isTokenChar​(int character)
        Indicates if the given character is a token character (text and not a separator).
        Parameters:
        character - The character to test.
        Returns:
        True if the given character is a token character (text and not a separator).
      • isUpperCase

        public static boolean isUpperCase​(int character)
        Indicates if the given character is upper case (A-Z).
        Parameters:
        character - The character to test.
        Returns:
        True if the given character is upper case (A-Z).
      • writeCRLF

        public static void writeCRLF​(java.io.OutputStream os)
                              throws java.io.IOException
        Writes a new line.
        Parameters:
        os - The output stream.
        Throws:
        java.io.IOException
      • writeHeaderLine

        public static void writeHeaderLine​(Header header,
                                           java.io.OutputStream os)
                                    throws java.io.IOException
        Writes a header line.
        Parameters:
        header - The header to write.
        os - The output stream.
        Throws:
        java.io.IOException