org.jboss.netty.handler.codec.http2
Class QueryStringDecoder

java.lang.Object
  extended by org.jboss.netty.handler.codec.http2.QueryStringDecoder

public class QueryStringDecoder
extends Object

Splits an HTTP query string into a path string and key-value parameter pairs. This decoder is for one time use only. Create a new instance for each URI:

 QueryStringDecoder decoder = new QueryStringDecoder("/hello?recipient=world");
 assert decoder.getPath().equals("/hello");
 assert decoder.getParameters().get("recipient").equals("world");
 

Version:
$Rev: 1107 $, $Date: 2012-04-15 19:00:57 +0200 (dim., 15 avr. 2012) $
Author:
The Netty Project, Andy Taylor (andy.taylor@jboss.org), Trustin Lee, Benoit Sigoure
See Also:
QueryStringEncoder

Constructor Summary
QueryStringDecoder(String uri)
          Creates a new decoder that decodes the specified URI.
QueryStringDecoder(String uri, boolean hasPath)
          Creates a new decoder that decodes the specified URI encoded in the specified charset.
QueryStringDecoder(String uri, Charset charset)
          Creates a new decoder that decodes the specified URI encoded in the specified charset.
QueryStringDecoder(String uri, Charset charset, boolean hasPath)
          Creates a new decoder that decodes the specified URI encoded in the specified charset.
QueryStringDecoder(String uri, Charset charset, boolean hasPath, int maxParams)
          Creates a new decoder that decodes the specified URI encoded in the specified charset.
QueryStringDecoder(String uri, String charset)
          Deprecated. Use QueryStringDecoder(String, Charset) instead.
QueryStringDecoder(URI uri)
          Creates a new decoder that decodes the specified URI.
QueryStringDecoder(URI uri, Charset charset)
          Creates a new decoder that decodes the specified URI encoded in the specified charset.
QueryStringDecoder(URI uri, Charset charset, int maxParams)
          Creates a new decoder that decodes the specified URI encoded in the specified charset.
QueryStringDecoder(URI uri, String charset)
          Deprecated. Use QueryStringDecoder(URI, Charset) instead.
 
Method Summary
static String decodeComponent(String s)
          Decodes a bit of an URL encoded by a browser.
static String decodeComponent(String s, Charset charset)
          Decodes a bit of an URL encoded by a browser.
 Map<String,List<String>> getParameters()
          Returns the decoded key-value parameter pairs of the URI.
 String getPath()
          Returns the decoded path string of the URI.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

QueryStringDecoder

public QueryStringDecoder(String uri)
Creates a new decoder that decodes the specified URI. The decoder will assume that the query string is encoded in UTF-8.


QueryStringDecoder

public QueryStringDecoder(String uri,
                          boolean hasPath)
Creates a new decoder that decodes the specified URI encoded in the specified charset.


QueryStringDecoder

public QueryStringDecoder(String uri,
                          Charset charset)
Creates a new decoder that decodes the specified URI encoded in the specified charset.


QueryStringDecoder

public QueryStringDecoder(String uri,
                          Charset charset,
                          boolean hasPath)
Creates a new decoder that decodes the specified URI encoded in the specified charset.


QueryStringDecoder

public QueryStringDecoder(String uri,
                          Charset charset,
                          boolean hasPath,
                          int maxParams)
Creates a new decoder that decodes the specified URI encoded in the specified charset.


QueryStringDecoder

@Deprecated
public QueryStringDecoder(String uri,
                                     String charset)
Deprecated. Use QueryStringDecoder(String, Charset) instead.


QueryStringDecoder

public QueryStringDecoder(URI uri)
Creates a new decoder that decodes the specified URI. The decoder will assume that the query string is encoded in UTF-8.


QueryStringDecoder

public QueryStringDecoder(URI uri,
                          Charset charset)
Creates a new decoder that decodes the specified URI encoded in the specified charset.


QueryStringDecoder

public QueryStringDecoder(URI uri,
                          Charset charset,
                          int maxParams)
Creates a new decoder that decodes the specified URI encoded in the specified charset.


QueryStringDecoder

@Deprecated
public QueryStringDecoder(URI uri,
                                     String charset)
Deprecated. Use QueryStringDecoder(URI, Charset) instead.

Method Detail

getPath

public String getPath()
Returns the decoded path string of the URI.


getParameters

public Map<String,List<String>> getParameters()
Returns the decoded key-value parameter pairs of the URI.


decodeComponent

public static String decodeComponent(String s)
Decodes a bit of an URL encoded by a browser.

This is equivalent to calling decodeComponent(String, Charset) with the UTF-8 charset (recommended to comply with RFC 3986, Section 2).

Parameters:
s - The string to decode (can be empty).
Returns:
The decoded string, or s if there's nothing to decode. If the string to decode is null, returns an empty string.
Throws:
IllegalArgumentException - if the string contains a malformed escape sequence.

decodeComponent

public static String decodeComponent(String s,
                                     Charset charset)
Decodes a bit of an URL encoded by a browser.

The string is expected to be encoded as per RFC 3986, Section 2. This is the encoding used by JavaScript functions encodeURI and encodeURIComponent, but not escape. For example in this encoding, é (in Unicode U+00E9 or in UTF-8 0xC3 0xA9) is encoded as %C3%A9 or %c3%a9.

This is essentially equivalent to calling URLDecoder.decode(s, charset.name()) except that it's over 2x faster and generates less garbage for the GC. Actually this function doesn't allocate any memory if there's nothing to decode, the argument itself is returned.

Parameters:
s - The string to decode (can be empty).
charset - The charset to use to decode the string (should really be CharsetUtil.UTF_8.
Returns:
The decoded string, or s if there's nothing to decode. If the string to decode is null, returns an empty string.
Throws:
IllegalArgumentException - if the string contains a malformed escape sequence.


Copyright © 2009-2012 Frederic Bregier. All Rights Reserved.