|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectorg.eclipse.emf.common.util.URI
A representation of a Uniform Resource Identifier (URI), as specified by
RFC 2396, with certain
enhancements. A URI instance can be created by specifying
values for its components, or by providing a single URI string, which is
parsed into its components. Static factory methods whose names begin
with "create" are used for both forms of object creation. No public or
protected constructors are provided; this class can not be subclassed.
Like String, URI is an immutable class;
a URI instance offers several by-value methods that return a
new URI object based on its current state. Most useful,
a relative URI can be resolved against
a base absolute URI -- the latter typically identifies the
document in which the former appears. The inverse to this is deresolve, which answers the question, "what relative
URI will resolve, against the given base, to this absolute URI?"
In the RFC, much
attention is focused on a hierarchical naming system used widely to
locate resources via common protocols such as HTTP, FTP, and Gopher, and
to identify files on a local file system. Acordingly, most of this
class's functionality is for handling such URIs, which can be identified
via isHierarchical().
The primary enhancement beyond the RFC description is an optional
device component. Instead of treating the device as just another segment
in the path, it can be stored as a separate component (almost a
sub-authority), with the root below it. For example, resolving
/bar against file:///c:/foo would result in
file:///c:/bar being returned. Also, you cannot take
the parent of a device, so resolving .. against
file:///c:/ would not yield file:///, as you
might expect. This feature is useful when working with file-scheme
URIs, as devices do not typically occur in protocol-based ones. A
device-enabled URI is created by parsing a string with
createURI(java.lang.String); if the first segment of the path ends with the
: character, it is stored (including the colon) as the
device, instead. Alternately, either the no-path
or the absolute-path form of createHierarchicalURI()
can be used, in which a non-null device parameter can be
specified.
The other enhancement provides support for the almost-hierarchical
form used for files within archives, such as the JAR scheme, defined
for the Java Platform in the documentation for JarURLConnection. By default, this support is enabled for
absolute URIs with scheme equal to "jar" or "zip" (ignoring case), and
is implemented by a hierarchical URI, whose authority includes the
entire URI of the archive, up to and including the !
character. The URI of the archive must be absolute and have no
fragment. The whole archive URI must have no device and an absolute
path. Special handling is supported for creating,
validating, getting
the path from, and displaying archive URIs. In all
other operations, including resolving and deresolving, they are handled like any ordinary URI.
The schemes that identify archive URIs can be changed from their default
by setting the org.eclipse.emf.common.util.URI.archiveSchemes
system property. Multiple schemes should be space separated, and the test
of whether a URI's scheme matches is always case-insensitive.
Compared to the RFC description, this implementation is quite relaxed
about validity. Static methods whose names begin with "valid" test
whether a given string is a valid value for the various URI components.
Presently, these tests place no restrictions beyond what would have been
required in order for createURI(java.lang.String) to
have parsed them correctly from a single URI string. Note that all of
the static factory methods invoke the appropriate validation methods and
throw exceptions in response to a negative result, ensuring that
invalid URIs are never created.
Finally, note the difference between a null parameter to
the static factory methods and an empty string. The former signifies the
absense of a given URI component, while the latter simply makes the
component blank. This can have a significant effect when resolving. For
example, consider the following two URIs: /bar (with no
authority) and ///bar (with a blank authority). Imagine
resolving them against a base with an authority, such as
http://www.eclipse.org/. The former case will yield
http://www.eclipse.org/bar, as the base authority will be
preserved. In the latter case, the empty authority will override the
base authority, resulting in http:///bar!
| Method Summary | |
URI |
appendFileExtension(String fileExtension)
Returns the URI formed by appending a period (".") followed by the specified file extension to the last path segment of this URI, if it is hierarchical with a non-empty path ending in a non-empty segment; otherwise, this URI is returned unchanged. |
URI |
appendFragment(String fragment)
Returns the URI formed from this URI and the given fragment. |
URI |
appendQuery(String query)
Returns the URI formed from this URI and the given query. |
URI |
appendSegment(String segment)
Returns the URI formed by appending the specified segment on to the end of the path of this URI, if hierarchical; this URI unchanged, otherwise. |
URI |
appendSegments(String[] segments)
Returns the URI formed by appending the specified segments on to the end of the path of this URI, if hierarchical; this URI unchanged, otherwise. |
String |
authority()
If this is a hierarchical URI with an authority component, returns it; null otherwise. |
static URI |
createDeviceURI(String uri)
Deprecated. Use createURI(java.lang.String), which now has explicit device
support enabled. The two methods now operate identically. |
static URI |
createFileURI(String pathName)
Static factory method based on parsing a File path
string. |
static URI |
createGenericURI(String scheme,
String opaquePart,
String fragment)
Static factory method for a generic, non-hierarchical URI. |
static URI |
createHierarchicalURI(String[] segments,
String query,
String fragment)
Static factory method for a relative hierarchical URI with relative path. |
static URI |
createHierarchicalURI(String scheme,
String authority,
String device,
String[] segments,
String query,
String fragment)
Static factory method for a hierarchical URI with absolute path. |
static URI |
createHierarchicalURI(String scheme,
String authority,
String device,
String query,
String fragment)
Static factory method for a hierarchical URI with no path. |
static URI |
createPlatformResourceURI(String pathName)
Static factory method based on parsing a platform-relative path string. |
static URI |
createURI(String uri)
Static factory method based on parsing a URI string, with explicit device support and handling for archive URIs enabled. |
static URI |
createURIWithCache(String uri)
|
URI |
deresolve(URI base)
Finds the shortest relative or, if necessary, the absolute URI that, when resolved against the given base absolute hierarchical
URI using resolve(URI), will yield this absolute URI. |
URI |
deresolve(URI base,
boolean preserveRootParents,
boolean anyRelPath,
boolean shorterRelPath)
Finds an absolute URI that, when resolved against the given base absolute hierarchical URI using resolve(URI,
boolean), will yield this absolute URI. |
String |
device()
If this is a hierarchical URI with a device component, returns it; null otherwise. |
String |
devicePath()
If this is a hierarchical URI with a path, returns a string representation of the path, including the authority and the device component; null otherwise.
|
boolean |
equals(Object obj)
Returns true if obj is an instance of
URI equal to this one; false otherwise.
|
String |
fileExtension()
If this is a hierarchical URI whose path includes a file extension, that file extension is returned; null otherwise. |
String |
fragment()
If this URI has a fragment component, returns it; null
otherwise. |
boolean |
hasAbsolutePath()
Returns true if this is a hierarchical URI with an
absolute path, or false if it is non-hierarchical, has no
path, or has a relative path. |
boolean |
hasAuthority()
Returns true if this is a hierarcical URI with an authority
component; false otherwise. |
boolean |
hasDevice()
Returns true if this is a hierarchical URI with a device
component; false otherwise. |
boolean |
hasEmptyPath()
Returns true if this is a hierarchical URI with an empty
relative path; false otherwise.
|
boolean |
hasFragment()
Returns true if this URI has a fragment component;
false otherwise. |
int |
hashCode()
Returns the hash code. |
boolean |
hasOpaquePart()
Returns true if this is a non-hierarchical URI with an
opaque part component; false otherwise. |
boolean |
hasPath()
Returns true if this is a hierarchical URI with an
absolute or relative path; false otherwise. |
boolean |
hasQuery()
Returns true if this is a hierarchical URI with a query
component; false otherwise. |
boolean |
hasRelativePath()
Returns true if this is a hierarchical URI with a relative
path, or false if it is non-hierarchical, has no path, or
has an absolute path. |
boolean |
hasTrailingPathSeparator()
Returns true if this is a hierarchical URI that has a path
that ends with a trailing separator; false otherwise.
|
String |
host()
If this is a hierarchical URI with an authority component that has a host portion, returns it; null otherwise. |
boolean |
isCurrentDocumentReference()
Returns true if this is a current document reference; that
is, if it is a relative hierarchical URI with no authority, device or
query components, and no path segments; false is returned
otherwise. |
boolean |
isEmpty()
Returns true if this is a current document reference with no
fragment component; false otherwise. |
boolean |
isFile()
Returns true if this is a hierarchical URI that may refer
directly to a locally accessible file. |
boolean |
isHierarchical()
Returns true if this a a hierarchical URI, or
false if it is of the generic form. |
boolean |
isPrefix()
Returns true if this is a hierarchical URI that ends in a
slash; that is, it has a trailing path separator or is the root
absolute path, and has no query and no fragment; false
is returned otherwise. |
boolean |
isRelative()
Returns true if this is a relative URI, or
false if it is an absolute URI. |
String |
lastSegment()
Returns the last segment in the segment array, or null. |
String |
opaquePart()
If this is a non-hierarchical URI, returns the opaque part component; null otherwise. |
String |
path()
If this is a hierarchical URI with a path, returns a string representation of the path; null otherwise. |
String |
port()
If this is a hierarchical URI with an authority component that has a port portion, returns it; null otherwise. |
String |
query()
If this is a hierarchical URI with a query component, returns it; null otherwise. |
URI |
replacePrefix(URI oldPrefix,
URI newPrefix)
If this is a hierarchical URI reference and oldPrefix is a
prefix of it, this returns the URI formed by replacing it by
newPrefix; null otherwise.
|
URI |
resolve(URI base)
Resolves this URI reference against a base absolute
hierarchical URI, returning the resulting absolute URI. |
URI |
resolve(URI base,
boolean preserveRootParents)
Resolves this URI reference against a base absolute
hierarchical URI, returning the resulting absolute URI. |
String |
scheme()
If this is an absolute URI, returns the scheme component; null otherwise. |
String |
segment(int i)
Provides fast, indexed access to individual segments in the path segment array. |
int |
segmentCount()
Returns the number of elements in the segment array that would be returned by segments(). |
String[] |
segments()
If this is a hierarchical URI with a path, returns an array containing the segments of the path; an empty array otherwise. |
List |
segmentsList()
Returns an unmodifiable list containing the same segments as the array returned by segments(). |
String |
toFileString()
If this URI may refer directly to a locally accessible file, as determined by isFile(), returns the URI formatted as a
pathname to that file; null otherwise.
|
String |
toString()
Returns the string representation of this URI. |
URI |
trimFileExtension()
If this URI has a non-null fileExtension(), returns the URI
formed by removing it; this URI unchanged, otherwise. |
URI |
trimFragment()
If this URI has a non-null fragment(), returns the URI
formed by removing it; this URI unchanged, otherwise. |
URI |
trimQuery()
If this URI has a non-null query(), returns the URI
formed by removing it; this URI unchanged, otherwise. |
URI |
trimSegments(int i)
Returns the URI formed by trimming the specified number of segments (including empty segments, such as one representing a trailing separator) from the end of the path of this URI, if hierarchical; otherwise, this URI is returned unchanged. |
String |
userInfo()
If this is a hierarchical URI with an authority component that has a user info portion, returns it; null otherwise. |
static boolean |
validArchiveAuthority(String value)
Returns true if the specified value would be
valid as the authority component of an archive URI; false
otherwise.
|
static boolean |
validAuthority(String value)
Returns true if the specified value would be
valid as the authority component of a URI; false otherwise.
|
static boolean |
validDevice(String value)
Returns true if the specified value would be
valid as the device component of a URI; false otherwise.
|
static boolean |
validFragment(String value)
Returns true if the specified value would be
valid as the fragment component of a URI; false otherwise.
|
static boolean |
validJarAuthority(String value)
Deprecated. As of EMF 2.0, replaced by validArchiveAuthority(java.lang.String). |
static boolean |
validOpaquePart(String value)
Returns true if the specified value would be
valid as the opaque part component of a URI; false
otherwise.
|
static boolean |
validQuery(String value)
Returns true if the specified value would be
valid as the query component of a URI; false otherwise.
|
static boolean |
validScheme(String value)
Returns true if the specified value would be
valid as the scheme component of a URI; false otherwise.
|
static boolean |
validSegment(String value)
Returns true if the specified value would be
a valid path segment of a URI; false otherwise.
|
static boolean |
validSegments(String[] value)
Returns true if the specified value would be
a valid path segment array of a URI; false otherwise.
|
| Methods inherited from class java.lang.Object |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
| Method Detail |
public static URI createGenericURI(String scheme,
String opaquePart,
String fragment)
IllegalArgumentException - if scheme is
null, if scheme is an archive
URI scheme, or if scheme, opaquePart, or
fragment is not valid according to validScheme(java.lang.String),
validOpaquePart(java.lang.String), or validFragment(java.lang.String), respectively.
public static URI createHierarchicalURI(String scheme,
String authority,
String device,
String query,
String fragment)
scheme is non-null, and absolute
otherwise. An absolute URI with no path requires a non-null
authority and/or device.
IllegalArgumentException - if scheme is
non-null while authority and device are null,
if scheme is an archive
URI scheme, or if scheme, authority,
device, query, or fragment is not
valid according to validScheme(java.lang.String), validAuthority(java.lang.String), validDevice(java.lang.String), validQuery(java.lang.String), or validFragment(java.lang.String),
respectively.
public static URI createHierarchicalURI(String scheme,
String authority,
String device,
String[] segments,
String query,
String fragment)
scheme is non-null, and
absolute otherwise.
segments - an array of non-null strings, each representing one
segment of the path. As an absolute path, it is automatically
preceeded by a / separator. If desired, a trailing
separator should be represented by an empty-string segment as the last
element of the array.
IllegalArgumentException - if scheme is
an archive URI scheme and
device is non-null, or if scheme,
authority, device, segments,
query, or fragment is not valid according to
validScheme(java.lang.String), validAuthority(java.lang.String) or validArchiveAuthority(java.lang.String), validDevice(java.lang.String), validSegments(java.lang.String[]),
validQuery(java.lang.String), or validFragment(java.lang.String), as appropriate.
public static URI createHierarchicalURI(String[] segments,
String query,
String fragment)
segments - an array of non-null strings, each representing one
segment of the path. A trailing separator is represented by an
empty-string segment at the end of the array.
IllegalArgumentException - if segments,
query, or fragment is not valid according to
validSegments(java.lang.String[]), validQuery(java.lang.String), or validFragment(java.lang.String),
respectively.public static URI createURI(String uri)
URI is created and returned. Note that
validity testing is not as strict as in the RFC; essentially, only
separator characters are considered. So, for example, non-Latin
alphabet characters appearing in the scheme would not be considered an
error.
IllegalArgumentException - if any component parsed
from uri is not valid according to validScheme(java.lang.String),
validOpaquePart(java.lang.String), validAuthority(java.lang.String), validArchiveAuthority(java.lang.String), validDevice(java.lang.String), validSegments(java.lang.String[]),
validQuery(java.lang.String), or validFragment(java.lang.String), as appropriate.public static URI createDeviceURI(String uri)
createURI(java.lang.String), which now has explicit device
support enabled. The two methods now operate identically.
IllegalArgumentException - if any component parsed
from uri is not valid according to validScheme(java.lang.String),
validOpaquePart(java.lang.String), validAuthority(java.lang.String), validArchiveAuthority(java.lang.String), validDevice(java.lang.String), validSegments(java.lang.String[]),
validQuery(java.lang.String), or validFragment(java.lang.String), as appropriate.public static URI createURIWithCache(String uri)
public static URI createFileURI(String pathName)
File path
string. The pathName is converted into an appropriate form
(platform-specific path separators are converted to to /;
a "file" scheme and, if missing, a leading / are added to
an absolute path) and then parsed using createURI(java.lang.String).
A relative path with a specified device (something like
C:myfile.txt) cannot be expressed as a valid URI.
IllegalArgumentException - if pathName
specifies a device and a relative path, or if any component of the path
is not valid according to validAuthority(java.lang.String), validDevice(java.lang.String),
or validSegments(java.lang.String[]), validQuery(java.lang.String), or validFragment(java.lang.String).public static URI createPlatformResourceURI(String pathName)
The pathName must be of the form:
/project-name/path
If not included, the leading path separator will be added. The
result will be of this form, which is parsed using createURI(java.lang.String):
platform:/resource/project-name/path
This scheme supports relocatable projects in Eclipse and in stand-alone EMF.
IllegalArgumentException - if any component parsed
from the path is not valid according to validDevice(java.lang.String), validSegments(java.lang.String[]), validQuery(java.lang.String), or validFragment(java.lang.String).Platform.resolve(java.net.URL)public static boolean validScheme(String value)
true if the specified value would be
valid as the scheme component of a URI; false otherwise.
A valid scheme may be null or contain any characters except for the
following: : / ? #
public static boolean validOpaquePart(String value)
true if the specified value would be
valid as the opaque part component of a URI; false
otherwise.
A valid opaque part must be non-null, non-empty, and not contain the
# character. In addition, its first character must not be
/
public static boolean validAuthority(String value)
true if the specified value would be
valid as the authority component of a URI; false otherwise.
A valid authority may be null or contain any characters except for
the following: / ? #
public static boolean validArchiveAuthority(String value)
true if the specified value would be
valid as the authority component of an archive URI; false
otherwise.
To be valid, the authority, itself, must be an absolute URI with no
fragment, followed by the character !.
public static boolean validJarAuthority(String value)
validArchiveAuthority(java.lang.String).
value would be valid as the
authority component of an archive
URI. This method has been replaced by validArchiveAuthority(java.lang.String), since the same form of URI is now supported
for schemes other than "jar". This now simply calls that method.
public static boolean validDevice(String value)
true if the specified value would be
valid as the device component of a URI; false otherwise.
A valid device may be null or non-empty, containing any characters
except for the following: / ? # In addition, its last
character must be :
public static boolean validSegment(String value)
true if the specified value would be
a valid path segment of a URI; false otherwise.
A valid path segment must be non-null and not contain any of the
following characters: / ? #
public static boolean validSegments(String[] value)
true if the specified value would be
a valid path segment array of a URI; false otherwise.
A valid path segment array must be non-null and contain only path
segements that are valid, according to validSegment(java.lang.String).
public static boolean validQuery(String value)
true if the specified value would be
valid as the query component of a URI; false otherwise.
A valid query may be null or contain any characters except for
#
public static boolean validFragment(String value)
true if the specified value would be
valid as the fragment component of a URI; false otherwise.
A fragment is taken to be unconditionally valid.
public boolean isRelative()
true if this is a relative URI, or
false if it is an absolute URI.
public boolean isHierarchical()
true if this a a hierarchical URI, or
false if it is of the generic form.
public boolean hasAuthority()
true if this is a hierarcical URI with an authority
component; false otherwise.
public boolean hasOpaquePart()
true if this is a non-hierarchical URI with an
opaque part component; false otherwise.
public boolean hasDevice()
true if this is a hierarchical URI with a device
component; false otherwise.
public boolean hasPath()
true if this is a hierarchical URI with an
absolute or relative path; false otherwise.
public boolean hasAbsolutePath()
true if this is a hierarchical URI with an
absolute path, or false if it is non-hierarchical, has no
path, or has a relative path.
public boolean hasRelativePath()
true if this is a hierarchical URI with a relative
path, or false if it is non-hierarchical, has no path, or
has an absolute path.
public boolean hasEmptyPath()
true if this is a hierarchical URI with an empty
relative path; false otherwise.
Note that !hasEmpty() does not imply that this
URI has any path segments; however, hasRelativePath &&
!hasEmptyPath() does.
public boolean hasQuery()
true if this is a hierarchical URI with a query
component; false otherwise.
public boolean hasFragment()
true if this URI has a fragment component;
false otherwise.
public boolean isCurrentDocumentReference()
true if this is a current document reference; that
is, if it is a relative hierarchical URI with no authority, device or
query components, and no path segments; false is returned
otherwise.
public boolean isEmpty()
true if this is a current document reference with no
fragment component; false otherwise.
isCurrentDocumentReference()public boolean isFile()
true if this is a hierarchical URI that may refer
directly to a locally accessible file. This is considered to be the
case for a file-scheme absolute URI, or for a relative URI with no query;
false is returned otherwise.
public int hashCode()
public boolean equals(Object obj)
true if obj is an instance of
URI equal to this one; false otherwise.
Equality is determined strictly by comparing components, not by attempting to interpret what resource is being identified. The comparison of schemes is case-insensitive.
public String scheme()
null otherwise.
public String opaquePart()
null otherwise.
public String authority()
null otherwise.
public String userInfo()
null otherwise.
public String host()
null otherwise.
public String port()
null otherwise.
public String device()
null otherwise.
public String[] segments()
public List segmentsList()
segments().
public int segmentCount()
segments().
public String segment(int i)
IndexOutOfBoundsException - if i < 0 or
i >= segmentCount().public String lastSegment()
null.
public String path()
null otherwise. The path
consists of a leading segment separator character (a slash), if the
path is absolute, followed by the slash-separated path segments. If
this URI has a separate device
component, it is not included in the path.
public String devicePath()
null otherwise.
If there is no authority, the format of this string is:
device/pathSegment1/pathSegment2...
If there is an authority, it is:
//authority/device/pathSegment1/pathSegment2...
For an archive URI, it's just:
authority/pathSegment1/pathSegment2...
public String query()
null otherwise.
public URI appendQuery(String query)
IllegalArgumentException - if
query is not a valid query (portion) according
to validQuery(java.lang.String).public URI trimQuery()
query(), returns the URI
formed by removing it; this URI unchanged, otherwise.
public String fragment()
null
otherwise.
public URI appendFragment(String fragment)
IllegalArgumentException - if
fragment is not a valid fragment (portion) according
to validFragment(java.lang.String).public URI trimFragment()
fragment(), returns the URI
formed by removing it; this URI unchanged, otherwise.
public URI resolve(URI base)
base absolute
hierarchical URI, returning the resulting absolute URI. If already
absolute, the URI itself is returned. URI resolution is described in
detail in section 5.2 of RFC
2396, "Resolving Relative References to Absolute Form."
During resolution, empty segments, self references ("."), and parent
references ("..") are interpreted, so that they can be removed from the
path. Step 6(g) gives a choice of how to handle the case where parent
references point to a path above the root: the offending segments can
be preserved or discarded. This method preserves them. To have them
discarded, please use the resolve(URI, boolean) method.
IllegalArgumentException - if base is
non-hierarchical or is relative.
public URI resolve(URI base,
boolean preserveRootParents)
base absolute
hierarchical URI, returning the resulting absolute URI. If already
absolute, the URI itself is returned. URI resolution is described in
detail in section 5.2 of RFC
2396, "Resolving Relative References to Absolute Form."
During resultion, empty segments, self references ("."), and parent references ("..") are interpreted, so that they can be removed from the path. Step 6(g) gives a choice of how to handle the case where parent references point to a path above the root: the offending segments can be preserved or discarded. This method can do either.
IllegalArgumentException - if base is
non-hierarchical or is relative.public URI deresolve(URI base)
base absolute hierarchical
URI using resolve(URI), will yield this absolute URI.
IllegalArgumentException - if base is
non-hierarchical or is relative.
IllegalStateException - if this is
relative.
public URI deresolve(URI base,
boolean preserveRootParents,
boolean anyRelPath,
boolean shorterRelPath)
base absolute hierarchical URI using resolve(URI,
boolean), will yield this absolute URI.
preserveRootParents - the boolean argument to resolve(URI,
boolean) for which the returned URI should resolve to this URI.anyRelPath - if true, the returned URI's path (if
any) will be relative, if possible. If false, the form of
the result's path will depend upon the next parameter.shorterRelPath - if anyRelPath is false
and this parameter is true, the returned URI's path (if
any) will be relative, if one can be found that is no longer (by number
of segments) than the absolute path. If both anyRelPath
and this parameter are false, it will be absolute.
IllegalArgumentException - if base is
non-hierarchical or is relative.
IllegalStateException - if this is
relative.public String toString()
scheme:opaquePart#fragment
For a hierarchical URI, it looks like:
scheme://authority/device/pathSegment1/pathSegment2...?query#fragment
For an archive URI, it's just:
scheme:authority/pathSegment1/pathSegment2...?query#fragment
Of course, absent components and their separators will be omitted.
public String toFileString()
isFile(), returns the URI formatted as a
pathname to that file; null otherwise.
If there is no authority, the format of this string is:
device/pathSegment1/pathSegment2...
If there is an authority, it is:
//authority/device/pathSegment1/pathSegment2...
However, the character used as a separator is system-dependant and
obtained from File.separatorChar.
public URI appendSegment(String segment)
IllegalArgumentException - if segment
is not a valid segment according to validSegment(java.lang.String).public URI appendSegments(String[] segments)
segments - an array of non-null strings, each representing one
segment of the path. If desired, a trailing separator should be
represented by an empty-string segment as the last element of the
array.
IllegalArgumentException - if segments
is not a valid segment array according to validSegments(java.lang.String[]).public URI trimSegments(int i)
Note that if all segments are trimmed from an absolute path, the root absolute path remains.
i - the number of segments to be trimmed in the returned URI. If
less than 1, this URI is returned unchanged; if equal to or greater
than the number of segments in this URI's path, all segments are
trimmed.public boolean hasTrailingPathSeparator()
true if this is a hierarchical URI that has a path
that ends with a trailing separator; false otherwise.
A trailing separator is represented as an empty segment as the last segment in the path; note that this definition does not include the lone separator in the root absolute path.
public String fileExtension()
public URI appendFileExtension(String fileExtension)
The extension is appended regardless of whether the segment already contains an extension.
IllegalArgumentException - if
fileExtension is not a valid segment (portion) according
to validSegment(java.lang.String).public URI trimFileExtension()
fileExtension(), returns the URI
formed by removing it; this URI unchanged, otherwise.
public boolean isPrefix()
true if this is a hierarchical URI that ends in a
slash; that is, it has a trailing path separator or is the root
absolute path, and has no query and no fragment; false
is returned otherwise.
public URI replacePrefix(URI oldPrefix,
URI newPrefix)
oldPrefix is a
prefix of it, this returns the URI formed by replacing it by
newPrefix; null otherwise.
In order to be a prefix, the oldPrefix's
isPrefix() must return true, and it must match this
URI's scheme, authority, and device. Also, the paths must match, up to
prefix's end.
IllegalArgumentException - if either
oldPrefix or newPrefix is not a prefix URI
according to isPrefix().
|
Copyright 2001-2004 IBM Corporation and others. All Rights Reserved. |
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||