org.jboss.resteasy.spi

## Class ResteasyUriInfo

- java.lang.Object
- - org.jboss.resteasy.spi.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 Summary

    Constructors
    Constructor and Description
    `ResteasyUriInfo(String absoluteUri, String queryString, String contextPath)`
    `ResteasyUriInfo(URI requestURI)`
    `ResteasyUriInfo(URI base, URI relative)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addEncodedPathParameter(String name, String value)`
    `protected void` | `extractMatchingPath(List<PathSegment> encodedPathSegments)` matching path without matrix parameters
    `protected void` | `extractParameters(String queryString)`
    `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<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.
    `String` | `getMatchingPath()` Encoded path without matrix parameters
    `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,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 of `PathSegment`.
    `List<PathSegment>` | `getPathSegments(boolean decode)` Get the path of the current request relative to the base URI as a list of `PathSegment`.
    `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.
    `protected void` | `initialize(String absoluteUri, String queryString, String contextPath)`
    `void` | `initializeFromRequest(URI requestURI)`
    `void` | `popMatchedPath()`
    `protected void` | `processPath()`
    `void` | `pushCurrentResource(Object resource)`
    `void` | `pushMatchedPath(String encoded)`
    `void` | `pushMatchedURI(String encoded)`
    `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.
    `void` | `setRequestUri(URI relative)` Create a UriInfo from the baseURI
    `void` | `setUri(URI base, URI relative)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### ResteasyUriInfo

          public ResteasyUriInfo(String absoluteUri,
                         String queryString,
                         String contextPath)

    - #### ResteasyUriInfo

          public ResteasyUriInfo(URI base,
                         URI relative)

    - #### ResteasyUriInfo

          public ResteasyUriInfo(URI requestURI)

  - ### Method Detail

    - #### initialize

          protected void initialize(String absoluteUri,
                        String queryString,
                        String contextPath)

    - #### setUri

          public void setUri(URI base,
                    URI relative)

    - #### processPath

          protected void processPath()

    - #### initializeFromRequest

          public void initializeFromRequest(URI requestURI)

    - #### extractMatchingPath

          protected void extractMatchingPath(List<PathSegment> encodedPathSegments)

      matching path without matrix parameters
      Parameters:
        `encodedPathSegments` -

    - #### getMatchingPath

          public String getMatchingPath()

      Encoded path without matrix parameters
      Returns:

    - #### setRequestUri

          public void setRequestUri(URI relative)

      Create a UriInfo from the baseURI
      Parameters:
        `relative` -

    - #### 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:
        `PathSegment`, Matrix URIs

    - #### 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:
        `PathSegment`, Matrix URIs

    - #### 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:
        `Path`, `PathParam`

    - #### 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:
        `Path`, `PathParam`

    - #### 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(String queryString)

    - #### 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:

      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:

      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://host:port/app/root/`):
      Request URI: `http://host:port/app/root/a/b/c`
      Supplied URI: `a/b/c/d/e`
      Returned URI: `d/e`
      Request URI: `http://host1:port1/app/root/a/b/c`
      Supplied URI: `http://host2:port2/app2/root2/a/d/e`
      Returned URI: `http://host2:port2/app2/root2/a/d/e`

      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.

Copyright © 2014. All Rights Reserved.