Class BasicHeaderValueFormatter

java.lang.Object
org.apache.http.message.BasicHeaderValueFormatter
All Implemented Interfaces:
HeaderValueFormatter

@Contract(threading=IMMUTABLE) public class BasicHeaderValueFormatter extends Object implements HeaderValueFormatter
Basic implementation for formatting header value elements. Instances of this class are stateless and thread-safe. Derived classes are expected to maintain these properties.
Since:
4.0
  • Field Details

    • DEFAULT

      @Deprecated public static final BasicHeaderValueFormatter DEFAULT
      Deprecated.
      (4.3) use INSTANCE
      A default instance of this class, for use as default or fallback. Note that BasicHeaderValueFormatter 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.
    • INSTANCE

      public static final BasicHeaderValueFormatter INSTANCE
    • SEPARATORS

      public static final String SEPARATORS
      Special characters that can be used as separators in HTTP parameters. These special characters MUST be in a quoted string to be used within a parameter value .
      See Also:
    • UNSAFE_CHARS

      public static final String UNSAFE_CHARS
      Unsafe special characters that must be escaped using the backslash character
      See Also:
  • Constructor Details

    • BasicHeaderValueFormatter

      public BasicHeaderValueFormatter()
  • Method Details

    • formatElements

      public static String formatElements(HeaderElement[] elems, boolean quote, HeaderValueFormatter formatter)
      Formats an array of header elements.
      Parameters:
      elems - the header elements to format
      quote - true to always format with quoted values, false to use quotes only when necessary
      formatter - the formatter to use, or null for the default
      Returns:
      the formatted header elements
    • formatElements

      public CharArrayBuffer formatElements(CharArrayBuffer charBuffer, HeaderElement[] elems, boolean quote)
      Description copied from interface: HeaderValueFormatter
      Formats an array of header elements.
      Specified by:
      formatElements in interface HeaderValueFormatter
      Parameters:
      charBuffer - the buffer to append to, or null to create a new buffer
      elems - the header elements to format
      quote - true to always format with quoted values, false to use quotes only when necessary
      Returns:
      a buffer with the formatted header elements. If the buffer argument was not null, that buffer will be used and returned.
    • estimateElementsLen

      protected int estimateElementsLen(HeaderElement[] elems)
      Estimates the length of formatted header elements.
      Parameters:
      elems - the header elements to format, or null
      Returns:
      a length estimate, in number of characters
    • formatHeaderElement

      public static String formatHeaderElement(HeaderElement elem, boolean quote, HeaderValueFormatter formatter)
      Formats a header element.
      Parameters:
      elem - the header element to format
      quote - true to always format with quoted values, false to use quotes only when necessary
      formatter - the formatter to use, or null for the default
      Returns:
      the formatted header element
    • formatHeaderElement

      public CharArrayBuffer formatHeaderElement(CharArrayBuffer charBuffer, HeaderElement elem, boolean quote)
      Description copied from interface: HeaderValueFormatter
      Formats one header element.
      Specified by:
      formatHeaderElement in interface HeaderValueFormatter
      Parameters:
      charBuffer - the buffer to append to, or null to create a new buffer
      elem - the header element to format
      quote - true to always format with quoted values, false to use quotes only when necessary
      Returns:
      a buffer with the formatted header element. If the buffer argument was not null, that buffer will be used and returned.
    • estimateHeaderElementLen

      protected int estimateHeaderElementLen(HeaderElement elem)
      Estimates the length of a formatted header element.
      Parameters:
      elem - the header element to format, or null
      Returns:
      a length estimate, in number of characters
    • formatParameters

      public static String formatParameters(NameValuePair[] nvps, boolean quote, HeaderValueFormatter formatter)
      Formats a set of parameters.
      Parameters:
      nvps - the parameters to format
      quote - true to always format with quoted values, false to use quotes only when necessary
      formatter - the formatter to use, or null for the default
      Returns:
      the formatted parameters
    • formatParameters

      public CharArrayBuffer formatParameters(CharArrayBuffer charBuffer, NameValuePair[] nvps, boolean quote)
      Description copied from interface: HeaderValueFormatter
      Formats the parameters of a header element. That's a list of name-value pairs, to be separated by semicolons. This method will not generate a leading semicolon.
      Specified by:
      formatParameters in interface HeaderValueFormatter
      Parameters:
      charBuffer - the buffer to append to, or null to create a new buffer
      nvps - the parameters (name-value pairs) to format
      quote - true to always format with quoted values, false to use quotes only when necessary
      Returns:
      a buffer with the formatted parameters. If the buffer argument was not null, that buffer will be used and returned.
    • estimateParametersLen

      protected int estimateParametersLen(NameValuePair[] nvps)
      Estimates the length of formatted parameters.
      Parameters:
      nvps - the parameters to format, or null
      Returns:
      a length estimate, in number of characters
    • formatNameValuePair

      public static String formatNameValuePair(NameValuePair nvp, boolean quote, HeaderValueFormatter formatter)
      Formats a name-value pair.
      Parameters:
      nvp - the name-value pair to format
      quote - true to always format with a quoted value, false to use quotes only when necessary
      formatter - the formatter to use, or null for the default
      Returns:
      the formatted name-value pair
    • formatNameValuePair

      public CharArrayBuffer formatNameValuePair(CharArrayBuffer charBuffer, NameValuePair nvp, boolean quote)
      Description copied from interface: HeaderValueFormatter
      Formats one name-value pair, where the value is optional.
      Specified by:
      formatNameValuePair in interface HeaderValueFormatter
      Parameters:
      charBuffer - the buffer to append to, or null to create a new buffer
      nvp - the name-value pair to format
      quote - true to always format with a quoted value, false to use quotes only when necessary
      Returns:
      a buffer with the formatted name-value pair. If the buffer argument was not null, that buffer will be used and returned.
    • estimateNameValuePairLen

      protected int estimateNameValuePairLen(NameValuePair nvp)
      Estimates the length of a formatted name-value pair.
      Parameters:
      nvp - the name-value pair to format, or null
      Returns:
      a length estimate, in number of characters
    • doFormatValue

      protected void doFormatValue(CharArrayBuffer buffer, String value, boolean quote)
      Actually formats the value of a name-value pair. This does not include a leading = character. Called from formatNameValuePair.
      Parameters:
      buffer - the buffer to append to, never null
      value - the value to append, never null
      quote - true to always format with quotes, false to use quotes only when necessary
    • isSeparator

      protected boolean isSeparator(char ch)
      Checks whether a character is a separator.
      Parameters:
      ch - the character to check
      Returns:
      true if the character is a separator, false otherwise
    • isUnsafe

      protected boolean isUnsafe(char ch)
      Checks whether a character is unsafe.
      Parameters:
      ch - the character to check
      Returns:
      true if the character is unsafe, false otherwise