|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
ObjectMutableURI
public class MutableURI
Mutable class for creating URIs.
There is no checking that an instance of this class produces a legal
URI reference as defined by
RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax.
The only minimal checking for syntax is on constructors that take a String
representation or the URI, a URI
, or a URL
.
To avoid the cost of continually checking the syntax, it is up to the
user to ensure that the components are set correctly.
The setters of this class also assume that the data components are
already encoded correctly for the given encoding of this URI, unless noted
otherwise as in the methods to add unecoded parameters to the query.
Then this class will handle the encoding.
See addParameter( String name, String value, boolean encoded )
and addParameters( Map newParams, boolean encoded )
There is static convenience method in this class so callers can easily encode unencoded components before setting in this URI.
TODO... We need to implement some conditions for opaque URIs like mailto, etc. to determine what to do about values of path when (path == null) => opaque and URI.getPath() would return "" for non-opaue URIs.
Field Summary | |
---|---|
static String |
DEFAULT_ENCODING
Value used to set the port as undefined. |
static int |
UNDEFINED_PORT
Value used to set the port as undefined. |
Constructor Summary | |
---|---|
MutableURI()
Constructs a MutableURI . |
|
MutableURI(String uriString)
Constructs a MutableURI . |
|
MutableURI(String scheme,
String userInfo,
String host,
int port,
String path,
String query,
String fragment)
Constructs a MutableURI . |
|
MutableURI(URI uri)
Constructs a MutableURI . |
|
MutableURI(URL url)
Constructs a MutableURI . |
Method Summary | |
---|---|
void |
addParameter(String name,
String value,
boolean encoded)
Add a parameter for the query string. |
void |
addParameters(Map newParams,
boolean encoded)
Add a parameter to the query string. |
static String |
encode(String url,
String encoding)
Convenience method to encode unencoded components of a URI. |
boolean |
equals(Object object)
Determines if the passed-in Object is equivalent to this MutableURI. |
String |
getDefaultParamDelimiter()
Returns the value of the delimiter used between each query parameter in the . |
String |
getEncoding()
Returns the encoding that is used when adding unencoded parameters. |
String |
getFragment()
Returns the fragment. |
String |
getHost()
Returns the host. |
String |
getParameter(String name)
Returns the value of the parameter. |
Map<String,List<String>> |
getParameters()
Returns an unmodifiable Map of all parameters. |
List<String> |
getParameters(String name)
Returns the values of the given parameter. |
String |
getPath()
Returns the path. |
int |
getPort()
Returns the port. |
String |
getQuery()
Returns the query string (encoded). |
String |
getQueryForXML()
Returns the query string (encoded) to be used in an XML document. |
String |
getScheme()
Returns the protocol/scheme. |
String |
getURIString()
Returns a string form of this URI. |
String |
getURIStringForXML()
Returns a string form of this URI suitable for an XML document. |
String |
getUserInfo()
Returns the userInfo. |
int |
hashCode()
Returns a hash code value for the object. |
boolean |
isAbsolute()
Tells whether or not this URI is absolute. |
void |
removeParameter(String name)
Removes the given parameter. |
void |
setAlwaysForXML(boolean alwaysForXml)
Sets the value of the delimiter used between each query parameter in the query to be the XML "&" entity, even for calls to the getQuery() and getURIString() methods. |
void |
setEncoding(String encoding)
Set the encoding used when adding unencoded parameters. |
void |
setFragment(String fragment)
Sets the fragment. |
void |
setHost(String host)
Sets the host. |
void |
setPath(String path)
Sets the path. |
void |
setPort(int port)
Sets the port. |
void |
setQuery(String query)
Sets (and resets) the query string. |
void |
setScheme(String scheme)
Sets the protocol/scheme. |
void |
setURI(String uriString)
Reset the value of the MutableURI . |
void |
setUserInfo(String userInfo)
Sets the userInfo. |
Methods inherited from class Object |
---|
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final int UNDEFINED_PORT
public static final String DEFAULT_ENCODING
Constructor Detail |
---|
public MutableURI()
MutableURI
.
public MutableURI(String uriString) throws URISyntaxException
MutableURI
.
uriString
- the string to be parsed into a URI
URISyntaxException
URI.URI(String)
public MutableURI(String scheme, String userInfo, String host, int port, String path, String query, String fragment)
MutableURI
.
scheme
- the name of the protocol to useuserInfo
- the username and passwordhost
- the name of the hostport
- the port number on the hostpath
- the file on the hostquery
- the query part of this URIfragment
- the fragment part of this URI (internal reference in the URL)public MutableURI(URI uri)
MutableURI
.
uri
- the initial value for this mutable URIpublic MutableURI(URL url) throws URISyntaxException
MutableURI
.
This is just a convenience constructor that functions the same as
MutableURI(URI)
constructor with
URL.toURI()
as the argument.
Note, any URL instance that complies with RFC 2396 can be converted
to a URI. However, some URLs that are not strictly in compliance
can not be converted to a URI. See URL
url
- the initial value for this mutable URI
URISyntaxException
- if this URL is not formatted strictly
to RFC2396 and cannot be converted to a URI.URL.toURI()
Method Detail |
---|
public void setURI(String uriString) throws URISyntaxException
MutableURI
.
This method can also be used to clear the MutableURI
.
uriString
- the string to be parsed into a URI
URISyntaxException
URI.URI(String)
public void setEncoding(String encoding)
encoding
- public String getEncoding()
public void setScheme(String scheme)
scheme
- protocol/schemepublic String getScheme()
public void setUserInfo(String userInfo)
userInfo
- userInfopublic String getUserInfo()
public void setHost(String host)
host
- hostpublic String getHost()
public void setPort(int port)
port
- portpublic int getPort()
public void setPath(String path)
path
- pathpublic String getPath()
public void setAlwaysForXML(boolean alwaysForXml)
getQuery()
and getURIString()
methods.
The getQueryForXML()
and getURIStringForXML()
methods
always use the XML "&" entity as the delimeter. However,
the getQuery()
and getURIString()
methods
use a default delimeter value which initially is set to be the
'&' character. This method lets a client override this value such
that even the getQuery()
and getURIString()
methods
will return strings with the XML "&" entity as the
delimiter between the parameters in the query .
alwaysForXml
- flag for choosing the query parameter delimiter.public String getDefaultParamDelimiter()
public void setQuery(String query)
query
- Query stringpublic String getQuery()
This uses a default delimiter to separate the parameters, usually the "&" character unless the instance has been set to always write the query for XML. In this case the delimiter value is the XML "&" entity.
public String getQueryForXML()
This uses the XML "&" entity as the demilimeter to separate the parameters.
public void addParameter(String name, String value, boolean encoded)
If the encoded flag is true then this method assumes that the name and value do not need encoding or are already encoded correctly. Otherwise, it translates the name and value with the character encoding of this URI and adds them to the set of parameters for the query. If the encoding for this URI has not been set, then the default encoding used is "UTF-8".
Multiple values for the same parameter can be set by calling this method multiple times with the same name.
name
- namevalue
- valueencoded
- Flag indicating whether the names and values are
already encoded.public void addParameters(Map newParams, boolean encoded)
If the encoded flag is true then this method assumes that the name and value do not need encoding or are already encoded correctly. Otherwise, it translates the name and value with the character encoding of this URI and adds them to the set of parameters for the query. If the encoding for this URI has not been set, then the default encoding used is "UTF-8".
newParams
- the map of new parameters to add to the URIencoded
- Flag indicating whether the names and values are
already encoded.public String getParameter(String name)
name
- name of the parameter
public List<String> getParameters(String name)
name
- name of the parameter
List
of values for the given parameter namepublic Map<String,List<String>> getParameters()
Map
of names and values for all parameterspublic void removeParameter(String name)
name
- namepublic void setFragment(String fragment)
fragment
- fragmentpublic String getFragment()
public boolean isAbsolute()
A URI is absolute if, and only if, it has a scheme component.
public String getURIString()
String
public String getURIStringForXML()
String
public static String encode(String url, String encoding)
url
- the string to be encoded by URLCodec
encoding
- the character encoding to use
public boolean equals(Object object)
equals
in class Object
object
- the Object to test for equality.
public int hashCode()
Implemented in conjunction with equals() override.
This is a mutable class implying that we're basing the hash code on the member data that can change. Therefor it's important not to use this class as a key in a hashtable as it would still appear with an enumeration but not when calling contains. I.E. The object could get lost in the hashtable. A call for the hashcode would return a different value than when it was first placed in the hashtable.
With this in mind, we simply return the same value to support the rules of equality.
hashCode
in class Object
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |