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
  • Constructor Details

    • ResteasyUriInfo

      public ResteasyUriInfo(String absoluteUri, String contextPath)
    • 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 base, URI relative)
    • ResteasyUriInfo

      public ResteasyUriInfo(URI requestURI)
  • Method Details

    • initialize

      protected void initialize(String absoluteUri, String contextPath, ResteasyUriInfo.InitData initData)
    • initialize

      protected void initialize(CharSequence absoluteUri, String queryString, String contextPath)
    • setUri

      public void setUri(URI base, URI relative)
    • 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: UriInfo
      Get the path of the current request relative to the base URI as a string. All sequences of escaped octets are decoded, equivalent to getPath(true).
      Specified by:
      getPath in interface UriInfo
      Returns:
      the relative URI path.
    • getPath

      public String getPath(boolean decode)
      Description copied from interface: UriInfo
      Get the path of the current request relative to the base URI as a string.
      Specified by:
      getPath in interface UriInfo
      Parameters:
      decode - controls whether sequences of escaped octets are decoded (true) or not (false).
      Returns:
      the relative URI path
    • getPathSegments

      public List<PathSegment> getPathSegments()
      Description copied from interface: UriInfo
      Get the path of the current request relative to the base URI as a list of PathSegment. 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 to getPathSegments(true).
      Specified by:
      getPathSegments in interface UriInfo
      Returns:
      an unmodifiable list of PathSegment. The matrix parameter map of each path segment is also unmodifiable.
      See Also:
    • getPathSegments

      public List<PathSegment> getPathSegments(boolean decode)
      Description copied from interface: UriInfo
      Get the path of the current request relative to the base URI as a list of PathSegment. This method is useful when the path needs to be parsed, particularly when matrix parameters may be present in the path.
      Specified by:
      getPathSegments in interface UriInfo
      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:
    • getRequestUri

      public URI getRequestUri()
      Description copied from interface: UriInfo
      Get the absolute request URI including any query parameters.
      Specified by:
      getRequestUri in interface UriInfo
      Returns:
      the absolute request URI
    • getRequestUriBuilder

      public UriBuilder getRequestUriBuilder()
      Description copied from interface: UriInfo
      Get the absolute request URI in the form of a UriBuilder.
      Specified by:
      getRequestUriBuilder in interface UriInfo
      Returns:
      a UriBuilder initialized with the absolute request URI.
    • getAbsolutePath

      public URI getAbsolutePath()
      Description copied from interface: UriInfo
      Get the absolute path of the request. This includes everything preceding the path (host, port etc) but excludes query parameters. This is a shortcut for uriInfo.getBaseUri().resolve(uriInfo.getPath(false)).
      Specified by:
      getAbsolutePath in interface UriInfo
      Returns:
      the absolute path of the request.
    • getAbsolutePathBuilder

      public UriBuilder getAbsolutePathBuilder()
      Description copied from interface: UriInfo
      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.
      Specified by:
      getAbsolutePathBuilder in interface UriInfo
      Returns:
      a UriBuilder initialized with the absolute path of the request.
    • getBaseUri

      public URI getBaseUri()
      Description copied from interface: UriInfo
      Get the base URI of the application. URIs of root resource classes are all relative to this base URI.
      Specified by:
      getBaseUri in interface UriInfo
      Returns:
      the base URI of the application.
    • getBaseUriBuilder

      public UriBuilder getBaseUriBuilder()
      Description copied from interface: UriInfo
      Get the base URI of the application in the form of a UriBuilder.
      Specified by:
      getBaseUriBuilder in interface UriInfo
      Returns:
      a UriBuilder initialized with the base URI of the application.
    • getPathParameters

      public MultivaluedMap<String,String> getPathParameters()
      Description copied from interface: UriInfo
      Get the values of any embedded URI template parameters. All sequences of escaped octets are decoded, equivalent to getPathParameters(true).
      Specified by:
      getPathParameters in interface UriInfo
      Returns:
      an unmodifiable map of parameter names and values.
      See Also:
    • addEncodedPathParameter

      public void addEncodedPathParameter(String name, String value)
    • getEncodedPathParameterPathSegments

      public MultivaluedMap<String,PathSegment[]> getEncodedPathParameterPathSegments()
    • getPathParameterPathSegments

      public MultivaluedMap<String,PathSegment[]> getPathParameterPathSegments()
    • getPathParameters

      public MultivaluedMap<String,String> getPathParameters(boolean decode)
      Description copied from interface: UriInfo
      Get the values of any embedded URI template parameters.
      Specified by:
      getPathParameters in interface UriInfo
      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:
    • getQueryParameters

      public MultivaluedMap<String,String> getQueryParameters()
      Description copied from interface: UriInfo
      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 to getQueryParameters(true).
      Specified by:
      getQueryParameters in interface UriInfo
      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: UriInfo
      Get 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:
      getQueryParameters in interface UriInfo
      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: UriInfo
      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. See UriInfo.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:
      getMatchedURIs in interface UriInfo
      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: UriInfo
      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 to getMatchedURIs(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
      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:
      getMatchedURIs in interface UriInfo
      Returns:
      a read-only list of URI paths for matched resources.
    • getMatchedResources

      public List<Object> getMatchedResources()
      Description copied from interface: UriInfo
      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
      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:
      getMatchedResources in interface UriInfo
      Returns:
      a read-only list of matched resource class instances.
    • pushCurrentResource

      public void pushCurrentResource(Object resource)
    • pushMatchedPath

      public void pushMatchedPath(String encoded)
    • getEncodedMatchedPaths

      public List<String> getEncodedMatchedPaths()
    • popMatchedPath

      public void popMatchedPath()
    • pushMatchedURI

      public void pushMatchedURI(String encoded)
    • resolve

      public URI resolve(URI uri)
      Description copied from interface: UriInfo
      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.
      Specified by:
      resolve in interface UriInfo
      Parameters:
      uri - URI to resolve against the base URI of the application.
      Returns:
      newly resolved URI or supplied URI if already resolved.
    • relativize

      public URI relativize(URI uri)
      Description copied from interface: UriInfo
      Relativize a URI with respect to the current request URI. Relativization works as follows:
      1. If the URI to relativize is already relative, it is first resolved using UriInfo.resolve(java.net.URI).
      2. 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.

      Specified by:
      relativize in interface UriInfo
      Parameters:
      uri - URI to relativize against the request URI.
      Returns:
      newly relativized URI.