public class URIPathDescriptor
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
private java.net.URI |
baseURI |
private java.net.URI |
link |
Constructor and Description |
---|
URIPathDescriptor(java.lang.String baseURI,
java.lang.String link)
A URIPathDescriptor consists of a base URI and a link.
|
Modifier and Type | Method and Description |
---|---|
private static java.lang.String |
correctRelativePath(java.lang.String relativePath) |
java.net.URI |
getBaseURI()
Return the base of this URIPathDescriptor as a URI.
|
java.net.URI |
getLink()
Return the link of this URIPathDescriptor as a URI.
|
java.net.URI |
rebaseLink(java.lang.String newBase)
Calculate the link as viewed from a different base.
|
java.net.URI |
relativizeLink()
Calculate the relative link with respect to the base.
|
private static java.net.URI |
relativizeLink(java.lang.String base,
java.net.URI link) |
java.net.URI |
resolveLink()
Resolve the link to the base.
|
boolean |
sameSite(java.net.URI uri)
Check if this URIPathDescriptor lives on the same site as the given URI.
|
private static boolean |
sameSite(java.net.URI baseURI,
java.net.URI newBaseURI) |
private static java.lang.String |
sanitizeBase(java.lang.String base) |
private static java.lang.String |
sanitizeLink(java.lang.String link) |
java.lang.String |
toString()
Construct a string representation of this URIPathDescriptor.
|
public URIPathDescriptor(java.lang.String baseURI, java.lang.String link)
URI.isAbsolute()
.
Before being parsed to URI
s, the arguments are modified to catch
some common bad practices: first all Windows-style backslashes '\' are replaced by
forward slashes '/'.
If the baseURI does not end with '/', a slash is appended.
If the link starts with a '/', the first character is stripped.baseURI
- The base URI. Has to be a valid absolute URI.
In addition, the path of the URI should not have any file part,
ie http://maven.apache.org/
is valid,
http://maven.apache.org/index.html
is not.
Even though the latter form is accepted without warning,
the methods in this class will not return what is probably expected,
because a slash is appended during construction, as noted above.link
- the link. This may be a relative link or an absolute link.
Note that URIs that start with a "/", ie don't specify a scheme, are considered relative.java.lang.IllegalArgumentException
- if either argument is not parsable as a URI,
or if baseURI is not absolute.public java.net.URI getBaseURI()
normalized
.public java.net.URI getLink()
normalized
.public java.net.URI resolveLink()
getBaseURI()
.resolve
( getLink()
).public java.net.URI relativizeLink()
same site
.private static java.net.URI relativizeLink(java.lang.String base, java.net.URI link)
public java.net.URI rebaseLink(java.lang.String newBase)
resolveLink()
if either
newBase == null,
or newBase is not parsable as a URI,
or newBase and this getBaseURI()
do not share the
same site
.newBase
- the new base URI. Has to be parsable as a URI.
.resolved
,
i.e. as an absolute link, if the link cannot be re-based.private static java.lang.String correctRelativePath(java.lang.String relativePath)
public boolean sameSite(java.net.URI uri)
uri
- a URI to compare with.
May be null, in which case false is returned.getBaseURI()
shares the same scheme, host and port with the given URI
where null values are allowed.private static boolean sameSite(java.net.URI baseURI, java.net.URI newBaseURI)
public java.lang.String toString()
resolveLink()
.toString().toString
in class java.lang.Object
private static java.lang.String sanitizeBase(java.lang.String base)
private static java.lang.String sanitizeLink(java.lang.String link)