org.jboss.resteasy.spi
Class ResteasyUriInfo

java.lang.Object
  extended by 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
ResteasyUriInfo(URI base, URI relative)
           
 
Method Summary
 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.
 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.
 void popCurrentResource()
           
 void popMatchedURI()
           
 void pushCurrentResource(Object resource)
           
 void pushMatchedURI(String encoded, String decoded)
           
 ResteasyUriInfo relative(URI relative)
          Create a UriInfo from the baseURI
 URI relativize(URI uri)
          Relativize a URI with respect to the current request URI.
 URI relativize(URI from, URI uri)
          Relativize a URI as follows: If URI to relativize is already relative, it is first resolved using UriInfo.resolve(java.net.URI) and the result is normalized. The resulting URI is relativize with respect to the first URI passed to this method.
 URI resolve(URI uri)
          Resolve a relative URI with respect to the base URI of the application.
 URI resolve(URI baseUri, URI uri)
          Resolve a relative URI with respect to a base URI.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ResteasyUriInfo

public ResteasyUriInfo(URI base,
                       URI relative)
Method Detail

extractMatchingPath

protected void extractMatchingPath(List<PathSegment> encodedPathSegments)
matching path without matrix parameters

Parameters:
encodedPathSegments -

getMatchingPath

public String getMatchingPath()
Encoded path without matrix parameters

Returns:

relative

public ResteasyUriInfo relative(URI relative)
Create a UriInfo from the baseURI

Parameters:
relative -
Returns:

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)

popCurrentResource

public void popCurrentResource()

pushMatchedURI

public void pushMatchedURI(String encoded,
                           String decoded)

popMatchedURI

public void popMatchedURI()

resolve

public URI resolve(URI uri)
Description copied from interface: UriInfo
Resolve a relative URI with respect to the base URI of the application. This method is a shorthand for uriInfo.resolve(uriInfo.getBaseUri(), uri). 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.

resolve

public URI resolve(URI baseUri,
                   URI uri)
Description copied from interface: UriInfo
Resolve a relative URI with respect to a base URI. 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:
baseUri - base URI used for resolution.
uri - URI to resolve against a base URI.
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. This method is a shorthand for uriInfo.relativize(uriInfo.getRequestUri(), uri).

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

relativize

public URI relativize(URI from,
                      URI uri)
Description copied from interface: UriInfo

Relativize a URI as follows:

  1. If URI to relativize is already relative, it is first resolved using UriInfo.resolve(java.net.URI) and the result is normalized.
  2. The resulting URI is relativize with respect to the first URI passed to this method. If the two URIs do not share a prefix, the URI computed in step 1 is returned.

Examples:

From URI: http://host:port/app/root/a/b/c
Supplied URI: a/d/e
Returned URI: ../../d/e

From URI: http://host:port/app/root/a/b/c
Supplied URI: http://host:port/app/root/a/d/e
Returned URI: ../../d/e

From URI: http://host1:port1/app/root/a/b/c
Supplied URI: http://host2:port2/app/root/a/d/e
Returned URI: http://host2:port2/app/root/a/d/e

In the last example, the supplied URI is returned given that it is absolute and there is no common prefix between it and the from URI.

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


Copyright © 2013. All Rights Reserved.