org.mortbay.util
Class URIUtil

java.lang.Object
  extended by org.mortbay.util.URIUtil
All Implemented Interfaces:
Cloneable

public class URIUtil
extends Object
implements Cloneable

URI Holder. This class assists with the decoding and encoding or HTTP URI's. It differs from the java.net.URL class as it does not provide communications ability, but it does assist with query string formatting.

UTF-8 encoding is used by default for % encoded characters. This may be overridden with the org.mortbay.util.URI.charset system property.

Author:
Greg Wilkins (gregw)
See Also:
UrlEncoded

Field Summary
static String __CHARSET
           
static String HTTP
           
static String HTTP_COLON
           
static String HTTPS
           
static String HTTPS_COLON
           
static String SLASH
           
 
Method Summary
static String addPaths(String p1, String p2)
          Add two URI path segments.
static String canonicalPath(String path)
          Convert a path to a cananonical form.
static String decodePath(byte[] buf, int offset, int length)
           
static String decodePath(String path)
           
static String encodePath(String path)
          Encode a URI path.
static StringBuffer encodePath(StringBuffer buf, String path)
          Encode a URI path.
static StringBuffer encodeString(StringBuffer buf, String path, String encode)
          Encode a URI path.
static boolean hasScheme(String uri)
           
static String parentPath(String p)
          Return the parent Path.
static String stripPath(String path)
          Strip parameters from a path.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SLASH

public static final String SLASH
See Also:
Constant Field Values

HTTP

public static final String HTTP
See Also:
Constant Field Values

HTTP_COLON

public static final String HTTP_COLON
See Also:
Constant Field Values

HTTPS

public static final String HTTPS
See Also:
Constant Field Values

HTTPS_COLON

public static final String HTTPS_COLON
See Also:
Constant Field Values

__CHARSET

public static final String __CHARSET
Method Detail

encodePath

public static String encodePath(String path)
Encode a URI path. This is the same encoding offered by URLEncoder, except that the '/' character is not encoded.

Parameters:
path - The path the encode
Returns:
The encoded path

encodePath

public static StringBuffer encodePath(StringBuffer buf,
                                      String path)
Encode a URI path.

Parameters:
path - The path the encode
buf - StringBuffer to encode path into (or null)
Returns:
The StringBuffer or null if no substitutions required.

encodeString

public static StringBuffer encodeString(StringBuffer buf,
                                        String path,
                                        String encode)
Encode a URI path.

Parameters:
path - The path the encode
buf - StringBuffer to encode path into (or null)
encode - String of characters to encode. % is always encoded.
Returns:
The StringBuffer or null if no substitutions required.

decodePath

public static String decodePath(String path)

decodePath

public static String decodePath(byte[] buf,
                                int offset,
                                int length)

addPaths

public static String addPaths(String p1,
                              String p2)
Add two URI path segments. Handles null and empty paths, path and query params (eg ?a=b or ;JSESSIONID=xxx) and avoids duplicate '/'

Parameters:
p1 - URI path segment
p2 - URI path segment
Returns:
Legally combined path segments.

parentPath

public static String parentPath(String p)
Return the parent Path. Treat a URI like a directory path and return the parent directory.


stripPath

public static String stripPath(String path)
Strip parameters from a path. Return path upto any semicolon parameters.


canonicalPath

public static String canonicalPath(String path)
Convert a path to a cananonical form. All instances of "." and ".." are factored out. Null is returned if the path tries to .. above its root.

Parameters:
path -
Returns:
path or null.

hasScheme

public static boolean hasScheme(String uri)
Parameters:
uri - URI
Returns:
True if the uri has a scheme