Interface UriInfo
-
public interface UriInfo
An injectable interface that provides access to application and request URI information. Relative URIs are relative to the base URI of the application, seegetBaseUri()
.All methods throw
java.lang.IllegalStateException
if called outside the scope of a request (e.g. from a provider constructor).- Since:
- 1.0
- Author:
- Paul Sandoz, Marc Hadley
- See Also:
Context
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description URI
getAbsolutePath()
Get the absolute path of the request.UriBuilder
getAbsolutePathBuilder()
Get the absolute path of the request in the form of a UriBuilder.URI
getBaseUri()
Get the base URI of the application.UriBuilder
getBaseUriBuilder()
Get the base URI of the application in the form of a UriBuilder.List<Object>
getMatchedResources()
Get a read-only list of the currently matched resource class instances.List<String>
getMatchedURIs()
Get a read-only list of URIs for matched resources.List<String>
getMatchedURIs(boolean decode)
Get a read-only list of URIs for matched resources.String
getPath()
Get the path of the current request relative to the base URI as a string.String
getPath(boolean decode)
Get the path of the current request relative to the base URI as a string.MultivaluedMap<String,String>
getPathParameters()
Get the values of any embedded URI template parameters.MultivaluedMap<String,String>
getPathParameters(boolean decode)
Get the values of any embedded URI template parameters.List<PathSegment>
getPathSegments()
Get the path of the current request relative to the base URI as a list ofPathSegment
.List<PathSegment>
getPathSegments(boolean decode)
Get the path of the current request relative to the base URI as a list ofPathSegment
.MultivaluedMap<String,String>
getQueryParameters()
Get the URI query parameters of the current request.MultivaluedMap<String,String>
getQueryParameters(boolean decode)
Get the URI query parameters of the current request.URI
getRequestUri()
Get the absolute request URI including any query parameters.UriBuilder
getRequestUriBuilder()
Get the absolute request URI in the form of a UriBuilder.URI
relativize(URI uri)
Relativize a URI with respect to the current request URI.URI
resolve(URI uri)
Resolve a relative URI with respect to the base URI of the application.
-
-
-
Method Detail
-
getPath
String getPath()
Get the path of the current request relative to the base URI as a string. All sequences of escaped octets are decoded, equivalent togetPath(true)
.- Returns:
- the relative URI path.
- Throws:
IllegalStateException
- if called outside the scope of a request.
-
getPath
String getPath(boolean decode)
Get the path of the current request relative to the base URI as a string.- Parameters:
decode
- controls whether sequences of escaped octets are decoded (true
) or not (false
).- Returns:
- the relative URI path
- Throws:
IllegalStateException
- if called outside the scope of a request.
-
getPathSegments
List<PathSegment> getPathSegments()
Get the path of the current request relative to the base URI as a list ofPathSegment
. This method is useful when the path needs to be parsed, particularly when matrix parameters may be present in the path. All sequences of escaped octets in path segments and matrix parameter values are decoded, equivalent togetPathSegments(true)
.- Returns:
- an unmodifiable list of
PathSegment
. The matrix parameter map of each path segment is also unmodifiable. - Throws:
IllegalStateException
- if called outside the scope of a request- See Also:
PathSegment
, Matrix URIs
-
getPathSegments
List<PathSegment> getPathSegments(boolean decode)
Get the path of the current request relative to the base URI as a list ofPathSegment
. This method is useful when the path needs to be parsed, particularly when matrix parameters may be present in the path.- Parameters:
decode
- controls whether sequences of escaped octets in path segments and matrix parameter values are decoded (true
) or not (false
).- Returns:
- an unmodifiable list of
PathSegment
. The matrix parameter map of each path segment is also unmodifiable. - Throws:
IllegalStateException
- if called outside the scope of a request- See Also:
PathSegment
, Matrix URIs
-
getRequestUri
URI getRequestUri()
Get the absolute request URI including any query parameters.- Returns:
- the absolute request URI
- Throws:
IllegalStateException
- if called outside the scope of a request
-
getRequestUriBuilder
UriBuilder getRequestUriBuilder()
Get the absolute request URI in the form of a UriBuilder.- Returns:
- a UriBuilder initialized with the absolute request URI.
- Throws:
IllegalStateException
- if called outside the scope of a request.
-
getAbsolutePath
URI getAbsolutePath()
Get the absolute path of the request. This includes everything preceding the path (host, port etc) but excludes query parameters. This is a shortcut foruriInfo.getBaseUri().resolve(uriInfo.getPath(false))
.- Returns:
- the absolute path of the request.
- Throws:
IllegalStateException
- if called outside the scope of a request.
-
getAbsolutePathBuilder
UriBuilder getAbsolutePathBuilder()
Get the absolute path of the request in the form of a UriBuilder. This includes everything preceding the path (host, port etc) but excludes query parameters.- Returns:
- a UriBuilder initialized with the absolute path of the request.
- Throws:
IllegalStateException
- if called outside the scope of a request.
-
getBaseUri
URI getBaseUri()
Get the base URI of the application. URIs of root resource classes are all relative to this base URI.- Returns:
- the base URI of the application.
-
getBaseUriBuilder
UriBuilder getBaseUriBuilder()
Get the base URI of the application in the form of a UriBuilder.- Returns:
- a UriBuilder initialized with the base URI of the application.
-
getPathParameters
MultivaluedMap<String,String> getPathParameters()
Get the values of any embedded URI template parameters. All sequences of escaped octets are decoded, equivalent togetPathParameters(true)
.- Returns:
- an unmodifiable map of parameter names and values.
- Throws:
IllegalStateException
- if called outside the scope of a request.- See Also:
Path
,PathParam
-
getPathParameters
MultivaluedMap<String,String> getPathParameters(boolean decode)
Get the values of any embedded URI template parameters.- Parameters:
decode
- controls whether sequences of escaped octets are decoded (true
) or not (false
).- Returns:
- an unmodifiable map of parameter names and values
- Throws:
IllegalStateException
- if called outside the scope of a request.- See Also:
Path
,PathParam
-
getQueryParameters
MultivaluedMap<String,String> getQueryParameters()
Get the URI query parameters of the current request. The map keys are the names of the query parameters with any escaped characters decoded. All sequences of escaped octets in parameter names and values are decoded, equivalent togetQueryParameters(true)
.- Returns:
- an unmodifiable map of query parameter names and values.
- Throws:
IllegalStateException
- if called outside the scope of a request.
-
getQueryParameters
MultivaluedMap<String,String> getQueryParameters(boolean decode)
Get the URI query parameters of the current request. The map keys are the names of the query parameters with any escaped characters decoded.- Parameters:
decode
- controls whether sequences of escaped octets in parameter names and values are decoded (true
) or not (false
).- Returns:
- an unmodifiable map of query parameter names and values.
- Throws:
IllegalStateException
- if called outside the scope of a request.
-
getMatchedURIs
List<String> getMatchedURIs()
Get a read-only list of URIs for matched resources. Each entry is a relative URI that matched a resource class, a sub-resource method or a sub-resource locator. All sequences of escaped octets are decoded, equivalent togetMatchedURIs(true)
. Entries do not include query parameters but do include matrix parameters if present in the request URI. Entries are ordered in reverse request URI matching order, with the current resource URI first. E.g. given the following resource classes:@Path("foo") public class FooResource { @GET public String getFoo() {...} @Path("bar") public BarResource getBarResource() {...} } public class BarResource { @GET public String getBar() {...} }
The values returned by this method based on request uri and where the method is called from are:
Matched URIs from requests Request Called from Value(s) GET /foo FooResource.getFoo foo GET /foo/bar FooResource.getBarResource foo/bar, foo GET /foo/bar BarResource.getBar foo/bar, foo - Returns:
- a read-only list of URI paths for matched resources.
-
getMatchedURIs
List<String> getMatchedURIs(boolean decode)
Get a read-only list of URIs for matched resources. Each entry is a relative URI that matched a resource class, a sub-resource method or a sub-resource locator. Entries do not include query parameters but do include matrix parameters if present in the request URI. Entries are ordered in reverse request URI matching order, with the current resource URI first. SeegetMatchedURIs()
for an example. In case the method is invoked prior to the request matching (e.g. from a pre-matching filter), the method returns an empty list.- Parameters:
decode
- controls whether sequences of escaped octets are decoded (true
) or not (false
).- Returns:
- a read-only list of URI paths for matched resources.
-
getMatchedResources
List<Object> getMatchedResources()
Get a read-only list of the currently matched resource class instances. Each entry is a resource class instance that matched the request URI either directly or via a sub-resource method or a sub-resource locator. Entries are ordered according to reverse request URI matching order, with the current resource first. E.g. given the following resource classes:@Path("foo") public class FooResource { @GET public String getFoo() {...} @Path("bar") public BarResource getBarResource() {...} } public class BarResource { @GET public String getBar() {...} }
The values returned by this method based on request uri and where the method is called from are:
Matched resources from requests Request Called from Value(s) GET /foo FooResource.getFoo FooResource GET /foo/bar FooResource.getBarResource FooResource GET /foo/bar BarResource.getBar BarResource, FooResource - Returns:
- a read-only list of matched resource class instances.
-
resolve
URI resolve(URI uri)
Resolve a relative URI with respect to the base URI of the application. The resolved URI returned by this method is normalized. If the supplied URI is already resolved, it is just returned.- Parameters:
uri
- URI to resolve against the base URI of the application.- Returns:
- newly resolved URI or supplied URI if already resolved.
- Since:
- 2.0
-
relativize
URI relativize(URI uri)
Relativize a URI with respect to the current request URI. Relativization works as follows:- If the URI to relativize is already relative, it is first resolved using
resolve(java.net.URI)
. - The resulting URI is relativized with respect to the current request URI. If the two URIs do not share a prefix, the URI computed in step 1 is returned.
Examples (for base URI
http://example.com:8080/app/root/
):
Request URI:http://example.com:8080/app/root/a/b/c/resource.html
Supplied URI:a/b/c/d/file.txt
Returned URI:d/file.txt
Request URI:http://example.com:8080/app/root/a/b/c/resource.html
Supplied URI:http://example2.com:9090/app2/root2/a/d/file.txt
Returned URI:http://example2.com:9090/app2/root2/a/d/file.txt
In the second example, the supplied URI is returned given that it is absolute and there is no common prefix between it and the request URI.
- Parameters:
uri
- URI to relativize against the request URI.- Returns:
- newly relativized URI.
- Throws:
IllegalStateException
- if called outside the scope of a request.- Since:
- 2.0
- If the URI to relativize is already relative, it is first resolved using
-
-