Package org.jboss.resteasy.specimpl
Class ResteasyUriInfo
- java.lang.Object
-
- org.jboss.resteasy.specimpl.ResteasyUriInfo
-
- All Implemented Interfaces:
UriInfo
public class ResteasyUriInfo extends Object implements UriInfo
UriInfo implementation with some added extra methods to help process requests.- Version:
- $Revision: 1 $
- Author:
- Bill Burke
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classResteasyUriInfo.InitDataHolds the data that is needed to initialize ResteasyUriInfo The reason to extract this data into a separate class is that it's expensive to produce and can be cached under certain circumstances
-
Constructor Summary
Constructors Constructor Description ResteasyUriInfo(String absoluteUri, String contextPath)ResteasyUriInfo(String absoluteUri, String contextPath, ResteasyUriInfo.InitData initData)Meant to be called by a layer that know that the absoluteUri will result in the successful invocation of a JAX-RS endpoint.ResteasyUriInfo(URI requestURI)ResteasyUriInfo(URI base, URI relative)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddEncodedPathParameter(String name, String value)protected voidextractParameters()URIgetAbsolutePath()Get the absolute path of the request.UriBuildergetAbsolutePathBuilder()Get the absolute path of the request in the form of a UriBuilder.URIgetBaseUri()Get the base URI of the application.UriBuildergetBaseUriBuilder()Get the base URI of the application in the form of a UriBuilder.StringgetContextPath()i.e.List<String>getEncodedMatchedPaths()MultivaluedMap<String,PathSegment[]>getEncodedPathParameterPathSegments()protected MultivaluedMap<String,String>getEncodedQueryParameters()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.StringgetMatchingPath()Encoded path without matrix parameters.StringgetPath()Get the path of the current request relative to the base URI as a string.StringgetPath(boolean decode)Get the path of the current request relative to the base URI as a string.MultivaluedMap<String,PathSegment[]>getPathParameterPathSegments()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.URIgetRequestUri()Get the absolute request URI including any query parameters.UriBuildergetRequestUriBuilder()Get the absolute request URI in the form of a UriBuilder.protected voidinitialize(CharSequence absoluteUri, String queryString, String contextPath)protected voidinitialize(String absoluteUri, String contextPath, ResteasyUriInfo.InitData initData)voidinitializeFromRequest(URI requestURI)voidpopMatchedPath()protected voidprocessPath()voidpushCurrentResource(Object resource)voidpushMatchedPath(String encoded)voidpushMatchedURI(String encoded)URIrelativize(URI uri)Relativize a URI with respect to the current request URI.URIresolve(URI uri)Resolve a relative URI with respect to the base URI of the application.voidsetRequestUri(URI relative)Create a UriInfo from the baseURI.voidsetUri(URI base, URI relative)
-
-
-
Constructor Detail
-
ResteasyUriInfo
public ResteasyUriInfo(String absoluteUri, String contextPath, ResteasyUriInfo.InitData initData)
Meant to be called by a layer that know that the absoluteUri will result in the successful invocation of a JAX-RS endpoint. The caller is also expected to ensure that InitData is cacheable
-
ResteasyUriInfo
public ResteasyUriInfo(URI requestURI)
-
-
Method Detail
-
initialize
protected void initialize(String absoluteUri, String contextPath, ResteasyUriInfo.InitData initData)
-
initialize
protected void initialize(CharSequence absoluteUri, String queryString, String contextPath)
-
processPath
protected void processPath()
-
initializeFromRequest
public void initializeFromRequest(URI requestURI)
-
getContextPath
public String getContextPath()
i.e. servlet context path. May not be set.- Returns:
-
getMatchingPath
public String getMatchingPath()
Encoded path without matrix parameters.- Returns:
- matching path
-
setRequestUri
public void setRequestUri(URI relative)
Create a UriInfo from the baseURI.- Parameters:
relative- relative uri
-
getPath
public String getPath()
Description copied from interface:UriInfoGet the path of the current request relative to the base URI as a string. All sequences of escaped octets are decoded, equivalent togetPath(true).
-
getPath
public String getPath(boolean decode)
Description copied from interface:UriInfoGet the path of the current request relative to the base URI as a string.
-
getPathSegments
public List<PathSegment> getPathSegments()
Description copied from interface:UriInfoGet 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).- Specified by:
getPathSegmentsin interfaceUriInfo- Returns:
- an unmodifiable list of
PathSegment. The matrix parameter map of each path segment is also unmodifiable. - See Also:
PathSegment, Matrix URIs
-
getPathSegments
public List<PathSegment> getPathSegments(boolean decode)
Description copied from interface:UriInfoGet 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.- Specified by:
getPathSegmentsin interfaceUriInfo- 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. - See Also:
PathSegment, Matrix URIs
-
getRequestUri
public URI getRequestUri()
Description copied from interface:UriInfoGet the absolute request URI including any query parameters.- Specified by:
getRequestUriin interfaceUriInfo- Returns:
- the absolute request URI
-
getRequestUriBuilder
public UriBuilder getRequestUriBuilder()
Description copied from interface:UriInfoGet the absolute request URI in the form of a UriBuilder.- Specified by:
getRequestUriBuilderin interfaceUriInfo- Returns:
- a UriBuilder initialized with the absolute request URI.
-
getAbsolutePath
public URI getAbsolutePath()
Description copied from interface:UriInfoGet 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)).- Specified by:
getAbsolutePathin interfaceUriInfo- Returns:
- the absolute path of the request.
-
getAbsolutePathBuilder
public UriBuilder getAbsolutePathBuilder()
Description copied from interface:UriInfoGet 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.- Specified by:
getAbsolutePathBuilderin interfaceUriInfo- Returns:
- a UriBuilder initialized with the absolute path of the request.
-
getBaseUri
public URI getBaseUri()
Description copied from interface:UriInfoGet the base URI of the application. URIs of root resource classes are all relative to this base URI.- Specified by:
getBaseUriin interfaceUriInfo- Returns:
- the base URI of the application.
-
getBaseUriBuilder
public UriBuilder getBaseUriBuilder()
Description copied from interface:UriInfoGet the base URI of the application in the form of a UriBuilder.- Specified by:
getBaseUriBuilderin interfaceUriInfo- Returns:
- a UriBuilder initialized with the base URI of the application.
-
getPathParameters
public MultivaluedMap<String,String> getPathParameters()
Description copied from interface:UriInfoGet the values of any embedded URI template parameters. All sequences of escaped octets are decoded, equivalent togetPathParameters(true).- Specified by:
getPathParametersin interfaceUriInfo- Returns:
- an unmodifiable map of parameter names and values.
- See Also:
Path,PathParam
-
getEncodedPathParameterPathSegments
public MultivaluedMap<String,PathSegment[]> getEncodedPathParameterPathSegments()
-
getPathParameterPathSegments
public MultivaluedMap<String,PathSegment[]> getPathParameterPathSegments()
-
getPathParameters
public MultivaluedMap<String,String> getPathParameters(boolean decode)
Description copied from interface:UriInfoGet the values of any embedded URI template parameters.- Specified by:
getPathParametersin interfaceUriInfo- Parameters:
decode- controls whether sequences of escaped octets are decoded (true) or not (false).- Returns:
- an unmodifiable map of parameter names and values
- See Also:
Path,PathParam
-
getQueryParameters
public MultivaluedMap<String,String> getQueryParameters()
Description copied from interface:UriInfoGet 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).- Specified by:
getQueryParametersin interfaceUriInfo- Returns:
- an unmodifiable map of query parameter names and values.
-
getEncodedQueryParameters
protected MultivaluedMap<String,String> getEncodedQueryParameters()
-
getQueryParameters
public MultivaluedMap<String,String> getQueryParameters(boolean decode)
Description copied from interface:UriInfoGet the URI query parameters of the current request. The map keys are the names of the query parameters with any escaped characters decoded.- Specified by:
getQueryParametersin interfaceUriInfo- 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.
-
extractParameters
protected void extractParameters()
-
getMatchedURIs
public List<String> getMatchedURIs(boolean decode)
Description copied from interface:UriInfoGet 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. SeeUriInfo.getMatchedURIs()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.- Specified by:
getMatchedURIsin interfaceUriInfo- 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.
-
getMatchedURIs
public List<String> getMatchedURIs()
Description copied from interface:UriInfoGet 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:
In case the method is invoked prior to the request matching (e.g. from a pre-matching filter), the method returns an empty list.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 - Specified by:
getMatchedURIsin interfaceUriInfo- Returns:
- a read-only list of URI paths for matched resources.
-
getMatchedResources
public List<Object> getMatchedResources()
Description copied from interface:UriInfoGet 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:
In case the method is invoked prior to the request matching (e.g. from a pre-matching filter), the method returns an empty list.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 - Specified by:
getMatchedResourcesin interfaceUriInfo- Returns:
- a read-only list of matched resource class instances.
-
pushCurrentResource
public void pushCurrentResource(Object resource)
-
pushMatchedPath
public void pushMatchedPath(String encoded)
-
popMatchedPath
public void popMatchedPath()
-
pushMatchedURI
public void pushMatchedURI(String encoded)
-
resolve
public URI resolve(URI uri)
Description copied from interface:UriInfoResolve 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.
-
relativize
public URI relativize(URI uri)
Description copied from interface:UriInfoRelativize 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
UriInfo.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.txtIn 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.
- Specified by:
relativizein interfaceUriInfo- Parameters:
uri- URI to relativize against the request URI.- Returns:
- newly relativized URI.
- If the URI to relativize is already relative, it is first resolved using
-
-