org.mortbay.util
Class URI

java.lang.Object
  |
  +--org.mortbay.util.URI
All Implemented Interfaces:
java.lang.Cloneable

public class URI
extends java.lang.Object
implements java.lang.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.

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

Version:
$Id: URI.java,v 1.24.2.1 2003/07/09 11:48:01 gregwilkins Exp $
Author:
Greg Wilkins (gregw)
See Also:
UrlEncoded

Field Summary
static java.lang.String __CHARSET
           
 
Constructor Summary
URI(java.lang.String uri)
          Construct from a String.
URI(URI uri)
          Copy Constructor .
 
Method Summary
static java.lang.String addPaths(java.lang.String p1, java.lang.String p2)
          Add two URI path segments.
static java.lang.String canonicalPath(java.lang.String path)
          Convert a path to a cananonical form.
 void clearParameters()
          Clear the URI _parameters.
 java.lang.Object clone()
          Clone URI.
static java.lang.String decodePath(java.lang.String path)
           
static java.lang.String encodePath(java.lang.String path)
          Encode a URI path.
static java.lang.StringBuffer encodePath(java.lang.StringBuffer buf, java.lang.String path)
          Encode a URI path.
static java.lang.StringBuffer encodeString(java.lang.StringBuffer buf, java.lang.String path, java.lang.String encode)
          Encode a URI path.
 java.lang.String get(java.lang.String name)
          Get named value
 java.lang.String getEncodedPath()
          Get the encoded uri path.
 java.lang.String getHost()
          Get the uri host.
 java.util.Set getParameterNames()
          Get the uri query _parameters names.
 MultiMap getParameters()
          Get the uri query _parameters.
 java.lang.String getPath()
          Get the uri path.
 int getPort()
          Get the uri port.
 java.lang.String getQuery()
          Get the uri query String.
 java.lang.String getScheme()
          Get the uri scheme.
 java.util.Map getUnmodifiableParameters()
          Get the uri query _parameters.
 java.util.List getValues(java.lang.String name)
          Get named multiple values.
static boolean hasScheme(java.lang.String uri)
           
 boolean isAbsolute()
          Is the URI an absolute URL?
static java.lang.String parentPath(java.lang.String p)
          Return the parent Path.
 void put(java.util.Map values)
          Add dictionary to the uri query _parameters.
 java.lang.Object put(java.lang.Object name, java.lang.Object value)
          Add name value pair to the uri query _parameters.
 void put(java.lang.String encoded)
          Add encoded _parameters.
 void putParametersTo(MultiMap map)
          Add the uri query _parameters to a MultiMap
 void remove(java.lang.String name)
          Remove named value
 void setHost(java.lang.String host)
          Set the uri host.
 void setPath(java.lang.String path)
          Set the uri path.
 void setPort(int port)
          Set the uri port.
 void setQuery(java.lang.String query)
          Set the uri query String.
 void setScheme(java.lang.String scheme)
          Set the uri scheme.
 void setURI(java.lang.String uri)
           
static java.lang.String stripPath(java.lang.String path)
          Strip parameters from a path.
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

__CHARSET

public static final java.lang.String __CHARSET
Constructor Detail

URI

public URI(URI uri)
    throws java.lang.IllegalArgumentException
Copy Constructor .

Parameters:
uri -

URI

public URI(java.lang.String uri)
    throws java.lang.IllegalArgumentException
Construct from a String. The string must contain a URI path, but optionaly may contain a scheme, host, port and query string.

Parameters:
uri - [scheme://host[:port]]/path[?query]
Method Detail

setURI

public void setURI(java.lang.String uri)
            throws java.lang.IllegalArgumentException
java.lang.IllegalArgumentException

isAbsolute

public boolean isAbsolute()
Is the URI an absolute URL?

Returns:
True if the URI has a scheme or host

getScheme

public java.lang.String getScheme()
Get the uri scheme.

Returns:
the URI scheme

setScheme

public void setScheme(java.lang.String scheme)
Set the uri scheme.

Parameters:
scheme - the uri scheme

getHost

public java.lang.String getHost()
Get the uri host.

Returns:
the URI host

setHost

public void setHost(java.lang.String host)
Set the uri host.

Parameters:
host - the uri host

getPort

public int getPort()
Get the uri port.

Returns:
the URI port

setPort

public void setPort(int port)
Set the uri port. A port of 0 implies use the default port.

Parameters:
port - the uri port

getPath

public java.lang.String getPath()
Get the uri path.

Returns:
the URI path

getEncodedPath

public java.lang.String getEncodedPath()
Get the encoded uri path.

Returns:
the URI path

setPath

public void setPath(java.lang.String path)
Set the uri path.

Parameters:
path - the URI path

getQuery

public java.lang.String getQuery()
Get the uri query String.

Returns:
the URI query string

setQuery

public void setQuery(java.lang.String query)
Set the uri query String.

Parameters:
query - the URI query string

getParameterNames

public java.util.Set getParameterNames()
Get the uri query _parameters names.

Returns:
Unmodifiable set of URI query _parameters names

getParameters

public MultiMap getParameters()
Get the uri query _parameters.

Returns:
the URI query _parameters

getUnmodifiableParameters

public java.util.Map getUnmodifiableParameters()
Get the uri query _parameters.

Returns:
the URI query _parameters in an unmodifiable map.

putParametersTo

public void putParametersTo(MultiMap map)
Add the uri query _parameters to a MultiMap


clearParameters

public void clearParameters()
Clear the URI _parameters.


put

public void put(java.lang.String encoded)
Add encoded _parameters.

Parameters:
encoded - A HTTP encoded string of _parameters: e.g.. "a=1&b=2"

put

public java.lang.Object put(java.lang.Object name,
                            java.lang.Object value)
Add name value pair to the uri query _parameters.

Parameters:
name - name of value
value - The value, which may be a multi valued list or String array.

put

public void put(java.util.Map values)
Add dictionary to the uri query _parameters.


get

public java.lang.String get(java.lang.String name)
Get named value


getValues

public java.util.List getValues(java.lang.String name)
Get named multiple values.

Parameters:
name - The parameter name
Returns:
Umodifiable list of values or null

remove

public void remove(java.lang.String name)
Remove named value


toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object
Returns:
the URI string encoded.

encodePath

public static java.lang.String encodePath(java.lang.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 java.lang.StringBuffer encodePath(java.lang.StringBuffer buf,
                                                java.lang.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 java.lang.StringBuffer encodeString(java.lang.StringBuffer buf,
                                                  java.lang.String path,
                                                  java.lang.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 java.lang.String decodePath(java.lang.String path)

clone

public java.lang.Object clone()
Clone URI.

Overrides:
clone in class java.lang.Object
Returns:
cloned URI

addPaths

public static java.lang.String addPaths(java.lang.String p1,
                                        java.lang.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 java.lang.String parentPath(java.lang.String p)
Return the parent Path. Treat a URI like a directory path and return the parent directory.


stripPath

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


canonicalPath

public static java.lang.String canonicalPath(java.lang.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 it's root.

Parameters:
path -
Returns:
path or null.

hasScheme

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


Copyright ? 2000 Mortbay Consulting Pty. Ltd. All Rights Reserved.