simple.util.net
Interface URI

All Known Implementing Classes:
URIParser

public interface URI

The URI interface is used to represent a generic uniform resource identifier . This interface allows each section of the uniform resource identifier to be represented. A generic uniform resource identifier syntax is represented in RFC 2616 section 3.2.2 for the HTTP protocol, this allows similar URI's for example ftp, gopher, https, tftp. The syntax is


    URI = [scheme "://"] host [ ":" port ] [ path [ "?" query ]]

 
This interface reprenents the host, port, path and query part of the uniform resource identifier. The parameters are also represented by the URI. The parameters in a URI consist of name and value pairs in the path segment of the URI.

This will normalize the path part of the uniform resource identifier. A normalized path is one that contains no back references like "./" and "../". The normalized path will not contain the path parameters.

The setPath method is used to reset the path this uniform resource identifier has, it also resets the parameters. The parameters are extracted from the new path given.

Author:
Niall Gallagher

Method Summary
 java.lang.String getDomain()
          This is used to retrive the domain of this URI.
 java.lang.String getParameter(java.lang.String name)
          This will return the value of the parameter with the given name.
 java.util.Enumeration getParameterNames()
          This extracts the parameter names from the uniform resource identifier represented by this object.
 Path getPath()
          This is used to retrive the path of this URI.
 int getPort()
          This is used to retrive the port of the uniform resource identifier.
 Parameters getQuery()
          This is used to retrive the query of this URI.
 java.lang.String getScheme()
          This allows the scheme of the URL given to be returned.
 void setDomain(java.lang.String domain)
          This will set the domain to whatever value is in the string parameter.
 void setPath(Path path)
          This will set the path to whatever value it is given.
 void setPath(java.lang.String path)
          This will set the path to whatever value it is given.
 void setPort(int port)
          This will set the port to whatever value it is given.
 void setQuery(Parameters query)
          This will set the query to whatever value it is given.
 void setQuery(java.lang.String query)
          This will set the query to whatever value it is given.
 void setScheme(java.lang.String scheme)
          This allows the scheme for the uri to be specified.
 java.lang.String toString()
          This is used to convert this URI object into a String object.
 

Method Detail

getScheme

java.lang.String getScheme()
This allows the scheme of the URL given to be returned. If the URI does not contain a scheme then this will return null. The scheme of the URI is the part that specifies the type of protocol that the URI is used for, an example gopher://domain/path is a URI that is intended for the gopher protocol. The scheme is the string gopher.

Returns:
this returns the scheme tag for the URI if there is one specified for it

setScheme

void setScheme(java.lang.String scheme)
This allows the scheme for the uri to be specified. If the URI does not contain a scheme then this will attach the scheme and the :// identifier to ensure that the URI.toString will produce the correct syntax.

Caution must be taken to ensure that the port and the scheme are consistant. So if the original URI was http://domain:80/path and the scheme was changed to ftp the port number that remains is the standard HTTP port not the FTP port.

Parameters:
scheme - this specifies the protocol this URI is intended for

getDomain

java.lang.String getDomain()
This is used to retrive the domain of this URI. The domain part in the URI is an optional part, an example http://domain/path?querypart. This will return the value of the domain part. If there is no domain part then this will return null otherwise the domain value found in the uniform resource identifier.

Returns:
the domain part of this uniform resource identifier this represents

setDomain

void setDomain(java.lang.String domain)
This will set the domain to whatever value is in the string parameter. If the string is null then this URI objects toString method will not contain the domain. The result of the toString method will be /path/path?query. If the path is non-null this URI will contain the path.

Parameters:
domain - this will be the new domain of this uniform resource identifier, if it is not null

getPort

int getPort()
This is used to retrive the port of the uniform resource identifier. The port part in this is an optional part, an example http://host:port/path?querypart. This will return the value of the port. If there is no port then this will return -1 because this represents an impossible uniform resource identifier port. The port is an optional part.

Returns:
this returns the port of the uniform resource identifier

setPort

void setPort(int port)
This will set the port to whatever value it is given. If the value is 0 or less then the toString will will not contain the optional port. If port number is above 0 then the toString method will produce a URI like http://host:123/path but only if there is a valid domain.

Parameters:
port - the port value that this URI is to have

getPath

Path getPath()
This is used to retrive the path of this URI. The path part is the most fundemental part of the URI. This will return the value of the path. If there is no path part then this will return a Path implementation that represents the root path represented by /.

Returns:
the path that this URI contains, this value will not contain any back references such as "./" and "../" or any path parameters

setPath

void setPath(java.lang.String path)
This will set the path to whatever value it is given. If the value is null then this URI.toString method will not contain the path, that is if path is null then it will be interpreted as /.

This will reset the parameters this URI has. If the value given to this method has embedded parameters these will form the parameters of this URI. The value given may not be the same value that the getPath produces. The path will have all back references and parameters stripped.

Parameters:
path - the path that this URI is to be set with

setPath

void setPath(Path path)
This will set the path to whatever value it is given. If the value is null then this URI.toString method will not contain the path, that is if path is null then it will be interpreted as /.

This will reset the parameters this URI has. If the value given to this method has embedded parameters these will form the parameters of this URI. The value given may not be the same value that the getPath produces. The path will have all back references and parameters stripped.

Parameters:
path - the path that this URI is to be set with

getQuery

Parameters getQuery()
This is used to retrive the query of this URI. The query part in the URI is an optional part. This will return the value of the query part. If there is no query part then this will return an empty Parameters object. The query is an optional member of a URI and comes after the path part, it is preceeded by a question mark, ? character. For example the following URI contains query for its query part, http://host:port/path?query.

This returns a simple.util.net.Parameters object that can be used to interact directly with the query values. The Parameters object is a read-only interface to the query parameters, and so will not affect the URI.

Returns:
a Parameters object for the query part

setQuery

void setQuery(java.lang.String query)
This will set the query to whatever value it is given. If the value is null then this URI.toString method will not contain the query. If the query was abc then the toString method would produca a string like http://host:port/path?abc. If the query is null this URI would have no query part.

Parameters:
query - the query that this uniform resource identifier is to be set to if it is non-null

setQuery

void setQuery(Parameters query)
This will set the query to whatever value it is given. If the value is null then this URI.toString method will not contain the query. If the Parameters.toString returns null then the query will be empty. This is basically the setQuery(String) method with the string value from the issued Parameters.toString method.

Parameters:
query - a Parameters object that contains the name value parameters for the query

getParameterNames

java.util.Enumeration getParameterNames()
This extracts the parameter names from the uniform resource identifier represented by this object. The parameters that a uniform resource identifier contains are embedded in the path part of the URI. If the path contains no parameters then this will return an empty Enumeration.

This will produce unique name and value parameters. Thus if the URI contains several path segments with similar parameter names this will return the deepest parameter. For example if the URI represented was http://domain/path1;x=y/path2;x=z the value for the parameter named x would be z.

Returns:
this will return the parameter names found in the URI

getParameter

java.lang.String getParameter(java.lang.String name)
This will return the value of the parameter with the given name. The parameters stored by this URI will bve unique so this will produce the parameter found deepest within the path segment, see getParameterNames. This will return null if the parameter does not exist. The setPath method will reset the parameters the URI contains.

Parameters:
name - this is the name of the parameter to be retrived
Returns:
this will return the parameter value or null if the parameter does not exist

toString

java.lang.String toString()
This is used to convert this URI object into a String object. This will only convert the parts of the URI that exist, so the URI may not contain the domain or the query part and it will not contain the path parameters. If the URI contains all these parts then it will return somthing like
 scheme://host:port/path/path?querypart
 

It can return /path/path?querypart style relative URI's. If any of the parts are set to null then that part will be missing, for example if setDomain method is invoked with a null parameter then the domain and port will be missing from the resulting URI. If the path part is set to null using the setPath then the path will be /. An example URI with the path part of null would be

 scheme://host:port/?querypart
 

Overrides:
toString in class java.lang.Object
Returns:
the URI with only the path part and the non-null optional parts of the uniform resource identifier