Class URIPathDescriptor
- java.lang.Object
-
- org.apache.maven.doxia.site.decoration.inheritance.URIPathDescriptor
-
public class URIPathDescriptor extends Object
Describes a link that may be absolute or relative, and that is anchored to an absolute URI.- Since:
- 1.2
- Author:
- ltheussl
-
-
Constructor Summary
Constructors Constructor Description URIPathDescriptor(String baseURI, String link)
A URIPathDescriptor consists of a base URI and a link.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description URI
getBaseURI()
Return the base of this URIPathDescriptor as a URI.URI
getLink()
Return the link of this URIPathDescriptor as a URI.URI
rebaseLink(String newBase)
Calculate the link as viewed from a different base.URI
relativizeLink()
Calculate the relative link with respect to the base.URI
resolveLink()
Resolve the link to the base.boolean
sameSite(URI uri)
Check if this URIPathDescriptor lives on the same site as the given URI.String
toString()
Construct a string representation of this URIPathDescriptor.
-
-
-
Constructor Detail
-
URIPathDescriptor
public URIPathDescriptor(String baseURI, String link)
A URIPathDescriptor consists of a base URI and a link. Both arguments to this constructor have to be parsable to URIs. The baseURI parameter has to be absolute in the sense ofURI.isAbsolute()
. Before being parsed toURI
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.- Parameters:
baseURI
- The base URI. Has to be a valid absolute URI. In addition, the path of the URI should not have any file part, iehttp://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.- Throws:
IllegalArgumentException
- if either argument is not parsable as a URI, or if baseURI is not absolute.
-
-
Method Detail
-
getBaseURI
public URI getBaseURI()
Return the base of this URIPathDescriptor as a URI. This is alwaysnormalized
.- Returns:
- the normalized base URI.
-
getLink
public URI getLink()
Return the link of this URIPathDescriptor as a URI. This is alwaysnormalized
.- Returns:
- the normalized link URI.
-
resolveLink
public URI resolveLink()
Resolve the link to the base. This always returns an absolute URI. If link is absolute, link is returned.- Returns:
- the resolved link. This is equivalent to calling
getBaseURI()
.resolve
(getLink()
).
-
relativizeLink
public URI relativizeLink()
Calculate the relative link with respect to the base. The original link is returned if either link is relative; or link and base do not share thesame site
.- Returns:
- the link as a relative URI.
-
rebaseLink
public URI rebaseLink(String newBase)
Calculate the link as viewed from a different base. This returns the original link if link is absolute. This returnsresolveLink()
if either newBase == null, or newBase is not parsable as a URI, or newBase and thisgetBaseURI()
do not share thesame site
.- Parameters:
newBase
- the new base URI. Has to be parsable as a URI. .- Returns:
- a new relative link or the original link
resolved
, i.e. as an absolute link, if the link cannot be re-based.
-
sameSite
public boolean sameSite(URI uri)
Check if this URIPathDescriptor lives on the same site as the given URI.- Parameters:
uri
- a URI to compare with. May be null, in which case false is returned.- Returns:
- true if
getBaseURI()
shares the same scheme, host and port with the given URI where null values are allowed.
-
toString
public String toString()
Construct a string representation of this URIPathDescriptor. This is equivalent to callingresolveLink()
.toString().
-
-