Class QuoteUtil

java.lang.Object
org.eclipse.jetty.websocket.api.util.QuoteUtil

public class QuoteUtil extends Object
Provide some consistent Http header value and Extension configuration parameter quoting support.

While QuotedStringTokenizer exists in jetty-util, and works great with http header values, using it in websocket-api is undesired.

  • Using QuotedStringTokenizer would introduce a dependency to jetty-util that would need to be exposed via the WebAppContext classloader
  • ABNF defined extension parameter parsing requirements of RFC-6455 (WebSocket) ABNF, is slightly different than the ABNF parsing defined in RFC-2616 (HTTP/1.1).
  • Future HTTPbis ABNF changes for parsing will impact QuotedStringTokenizer
It was decided to keep this implementation separate for the above reasons.
  • Field Details

    • ABNF_REQUIRED_QUOTING

      public static final String ABNF_REQUIRED_QUOTING
      ABNF from RFC 2616, RFC 822, and RFC 6455 specified characters requiring quoting.
      See Also:
    • UNICODE_TAG

      private static final char UNICODE_TAG
      See Also:
    • escapes

      private static final char[] escapes
  • Constructor Details

    • QuoteUtil

      public QuoteUtil()
  • Method Details

    • dehex

      private static int dehex(byte b)
    • dequote

      public static String dequote(String str)
      Remove quotes from a string, only if the input string start with and end with the same quote character.
      Parameters:
      str - the string to remove surrounding quotes from
      Returns:
      the de-quoted string
    • escape

      public static void escape(StringBuilder buf, String str)
    • quote

      public static void quote(StringBuilder buf, String str)
      Simple quote of a string, escaping where needed.
      Parameters:
      buf - the StringBuilder to append to
      str - the string to quote
    • quoteIfNeeded

      public static void quoteIfNeeded(StringBuilder buf, String str, String delim)
      Append into buf the provided string, adding quotes if needed.

      Quoting is determined if any of the characters in the delim are found in the input str.

      Parameters:
      buf - the buffer to append to
      str - the string to possibly quote
      delim - the delimiter characters that will trigger automatic quoting
    • splitAt

      public static Iterator<String> splitAt(String str, String delims)
      Create an iterator of the input string, breaking apart the string at the provided delimiters, removing quotes and triming the parts of the string as needed.
      Parameters:
      str - the input string to split apart
      delims - the delimiter characters to split the string on
      Returns:
      the iterator of the parts of the string, trimmed, with quotes around the string part removed, and unescaped
    • unescape

      public static String unescape(String str)
    • join

      public static String join(Object[] objs, String delim)
    • join

      public static String join(Collection<?> objs, String delim)