Class UriRoutingContext

java.lang.Object
org.glassfish.jersey.server.internal.routing.UriRoutingContext
All Implemented Interfaces:
ResourceInfo, UriInfo, ExtendedUriInfo, RoutingContext

public class UriRoutingContext extends Object implements RoutingContext
Default implementation of the routing context as well as URI information provider.
Author:
Marek Potociar
  • Constructor Details

    • UriRoutingContext

      public UriRoutingContext(ContainerRequest requestContext)
      Injection constructor.
      Parameters:
      requestContext - request reference.
  • Method Details

    • pushMatchResult

      public void pushMatchResult(MatchResult matchResult)
      Description copied from interface: RoutingContext
      Push the result of the successful request URI routing pattern match.
      Specified by:
      pushMatchResult in interface RoutingContext
      Parameters:
      matchResult - successful request URI routing pattern match result.
    • pushMatchedResource

      public void pushMatchedResource(Object resource)
      Description copied from interface: RoutingContext
      Push the resource that matched the request URI.
      Specified by:
      pushMatchedResource in interface RoutingContext
      Parameters:
      resource - instance of the resource that matched the request URI.
    • peekMatchedResource

      public Object peekMatchedResource()
      Description copied from interface: RoutingContext
      Peek the last resource object that successfully matched the request URI.
      Specified by:
      peekMatchedResource in interface RoutingContext
      Returns:
      last resource matched as previously set by RoutingContext.pushMatchedResource(java.lang.Object)
    • pushMatchedLocator

      public void pushMatchedLocator(ResourceMethod resourceLocator)
      Description copied from interface: RoutingContext
      Push the matched sub resource locator method.
      Specified by:
      pushMatchedLocator in interface RoutingContext
      Parameters:
      resourceLocator - Sub resource locator method.
    • pushLeftHandPath

      public void pushLeftHandPath()
      Description copied from interface: RoutingContext
      Add currently matched left-hand side part of request path to the list of matched paths returned by UriInfo.getMatchedURIs().

      Left-hand side request path is the request path excluding the suffix part of the path matched by the final matching group of the last successful request URI routing pattern.

      Specified by:
      pushLeftHandPath in interface RoutingContext
    • pushTemplates

      public void pushTemplates(UriTemplate resourceTemplate, UriTemplate methodTemplate)
      Description copied from interface: RoutingContext
      Push matched request URI routing pattern templates for a single matched method.

      In case only a single path matching has been performed on the resource (in case of resource methods, only the resource path is matched), the method template should be passed as null. In case a path matching has been performed on both a resource and method paths (in case of sub-resource methods and locators), both templates (resource and method) must be specified.

      Specified by:
      pushTemplates in interface RoutingContext
      Parameters:
      resourceTemplate - resource URI template that should be pushed.
      methodTemplate - (sub-resource) method or locator URI template that should be pushed.
    • getFinalMatchingGroup

      public String getFinalMatchingGroup()
      Description copied from interface: RoutingContext
      Get the final matching group of the last successful request URI routing pattern match result. Also known as right-hand path.

      May be empty but is never null.

      Specified by:
      getFinalMatchingGroup in interface RoutingContext
      Returns:
      final matching group of the last successful request URI routing pattern match result.
    • getMatchedResults

      public LinkedList<MatchResult> getMatchedResults()
      Description copied from interface: ExtendedUriInfo
      Get a read-only list of MatchResult for matched resources. Entries are ordered in reverse request URI matching order, with the root resource match result last.
      Specified by:
      getMatchedResults in interface ExtendedUriInfo
      Returns:
      a read-only list of match results for matched resources.
    • setEndpoint

      public void setEndpoint(Endpoint endpoint)
      Description copied from interface: RoutingContext
      Set the matched server-side endpoint.

      This method can be used in a non-terminal stage to set the server-side endpoint that can be retrieved and processed by a subsequent stage.

      Specified by:
      setEndpoint in interface RoutingContext
      Parameters:
      endpoint - matched server-side endpoint.
    • getEndpoint

      public Endpoint getEndpoint()
      Description copied from interface: RoutingContext
      Get the matched server-side endpoint if present, or null otherwise.
      Specified by:
      getEndpoint in interface RoutingContext
      Returns:
      matched server-side endpoint, or null if not available.
    • setMatchedResourceMethod

      public void setMatchedResourceMethod(ResourceMethod resourceMethod)
      Description copied from interface: RoutingContext
      Set the matched resource method. This method needs to be called only if the method was matched. This method should be called only for setting the final resource method and not for setting sub resource locators invoked during matching.
      Specified by:
      setMatchedResourceMethod in interface RoutingContext
      Parameters:
      resourceMethod - Resource method that was matched.
    • pushMatchedRuntimeResource

      public void pushMatchedRuntimeResource(RuntimeResource runtimeResource)
      Description copied from interface: RoutingContext
      Push a matched runtime resource that was visited during matching phase. This method must be called for any matched runtime resource.
      Specified by:
      pushMatchedRuntimeResource in interface RoutingContext
      Parameters:
      runtimeResource - Runtime resource that was matched during matching.
    • pushLocatorSubResource

      public void pushLocatorSubResource(Resource subResourceFromLocator)
      Description copied from interface: RoutingContext
      Push sub resource returned from a sub resource locator method. The pushed subResourceFromLocator is the final model of a sub resource which is already enhanced by model processors and validated.
      Specified by:
      pushLocatorSubResource in interface RoutingContext
      Parameters:
      subResourceFromLocator - Resource constructed from result of sub resource locator method.
    • getAbsolutePath

      public URI getAbsolutePath()
      Specified by:
      getAbsolutePath in interface UriInfo
    • getAbsolutePathBuilder

      public UriBuilder getAbsolutePathBuilder()
      Specified by:
      getAbsolutePathBuilder in interface UriInfo
    • getBaseUri

      public URI getBaseUri()
      Specified by:
      getBaseUri in interface UriInfo
    • getBaseUriBuilder

      public UriBuilder getBaseUriBuilder()
      Specified by:
      getBaseUriBuilder in interface UriInfo
    • getMatchedResources

      public List<Object> getMatchedResources()
      Specified by:
      getMatchedResources in interface UriInfo
    • getMatchedURIs

      public List<String> getMatchedURIs()
      Specified by:
      getMatchedURIs in interface UriInfo
    • getMatchedURIs

      public List<String> getMatchedURIs(boolean decode)
      Specified by:
      getMatchedURIs in interface UriInfo
    • getPath

      public String getPath()
      Specified by:
      getPath in interface UriInfo
    • getPath

      public String getPath(boolean decode)
      Specified by:
      getPath in interface UriInfo
    • getPathParameters

      public MultivaluedMap<String,String> getPathParameters()
      Specified by:
      getPathParameters in interface UriInfo
    • getPathParameters

      public MultivaluedMap<String,String> getPathParameters(boolean decode)
      Specified by:
      getPathParameters in interface UriInfo
    • getPathSegments

      public List<PathSegment> getPathSegments()
      Specified by:
      getPathSegments in interface UriInfo
    • getPathSegments

      public List<PathSegment> getPathSegments(boolean decode)
      Specified by:
      getPathSegments in interface UriInfo
    • getQueryParameters

      public MultivaluedMap<String,String> getQueryParameters()
      Specified by:
      getQueryParameters in interface UriInfo
    • getQueryParameters

      public MultivaluedMap<String,String> getQueryParameters(boolean decode)
      Specified by:
      getQueryParameters in interface UriInfo
    • invalidateUriComponentViews

      public void invalidateUriComponentViews()
      Invalidate internal URI component cache views.

      This method needs to be called if request URI information changes.

    • getRequestUri

      public URI getRequestUri()
      Specified by:
      getRequestUri in interface UriInfo
    • getRequestUriBuilder

      public UriBuilder getRequestUriBuilder()
      Specified by:
      getRequestUriBuilder in interface UriInfo
    • getMappedThrowable

      public Throwable getMappedThrowable()
      Description copied from interface: ExtendedUriInfo
      Get the throwable that was mapped to a response.

      A response filter or a message body writer may utilize this method to determine if a resource method was invoked but did not return a response because an exception was thrown from the resource method, or the resource method returned but a response filter threw an exception.

      Specified by:
      getMappedThrowable in interface ExtendedUriInfo
      Returns:
      the throwable that was mapped to a response, otherwise null if no throwable was mapped to a response.
    • setMappedThrowable

      public void setMappedThrowable(Throwable mappedThrowable)
      Description copied from interface: RoutingContext
      Set the throwable that was mapped to a response.
      Specified by:
      setMappedThrowable in interface RoutingContext
      Parameters:
      mappedThrowable - throwable that was mapped to a response.
      See Also:
    • getMatchedTemplates

      public List<UriTemplate> getMatchedTemplates()
      Description copied from interface: ExtendedUriInfo
      Get a read-only list of UriTemplate for matched resources. Each entry is a URI template that is the value of the Path that is a partial path that matched a resource class, a sub-resource method or a sub-resource locator. Entries are ordered in reverse request URI matching order, with the root resource URI template last.
      Specified by:
      getMatchedTemplates in interface ExtendedUriInfo
      Returns:
      a read-only list of URI templates for matched resources.
    • getPathSegments

      public List<PathSegment> getPathSegments(String name)
      Description copied from interface: ExtendedUriInfo
      Get the path segments that contain a template variable. All sequences of escaped octets are decoded, equivalent to getPathSegments(true).
      Specified by:
      getPathSegments in interface ExtendedUriInfo
      Parameters:
      name - the template variable name
      Returns:
      the path segments, the list will be empty the matching path does not contain the template
    • getPathSegments

      public List<PathSegment> getPathSegments(String name, boolean decode)
      Description copied from interface: ExtendedUriInfo
      Get the path segments that contain a template variable.
      Specified by:
      getPathSegments in interface ExtendedUriInfo
      Parameters:
      name - the template variable name
      decode - controls whether sequences of escaped octets are decoded (true) or not (false).
      Returns:
      the path segments, the list will be empty the matching path does not contain the template
    • getResourceMethod

      public Method getResourceMethod()
      Specified by:
      getResourceMethod in interface ResourceInfo
    • getResourceClass

      public Class<?> getResourceClass()
      Specified by:
      getResourceClass in interface ResourceInfo
    • getMatchedRuntimeResources

      public List<RuntimeResource> getMatchedRuntimeResources()
      Description copied from interface: ExtendedUriInfo
      Return all matched runtime resources including runtime resources based on child resources. The list is ordered so that the runtime resource currently being processed is the first element in the list.

      The following example

      @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 RuntimeResource["/foo"]
      GET /foo/bar FooResource.getBarResource RuntimeResource["foo/bar"], Resource["foo"]
      GET /foo/bar BarResource.getBar RuntimeResource[no path; based on BarResource.class], RuntimeResource["foo/bar"], RuntimeResource["foo"]
      Specified by:
      getMatchedRuntimeResources in interface ExtendedUriInfo
      Returns:
      List of resources and child resources that were processed during request matching.
    • getMatchedResourceMethod

      public ResourceMethod getMatchedResourceMethod()
      Description copied from interface: ExtendedUriInfo
      Get matched resource method that is invoked.

      Note that sub resource locator is not not considered as a matched resource method and calling the method from sub resource locator will therefore return null.

      Specified by:
      getMatchedResourceMethod in interface ExtendedUriInfo
      Returns:
      The matched resource method that was invoked or null if no resource method was invoked.
    • getMatchedResourceLocators

      public List<ResourceMethod> getMatchedResourceLocators()
      Description copied from interface: ExtendedUriInfo
      Get resource locators matched since beginning of a matching. The list contains resource locators sorted in the order that the first element of the list is the last locator executed (LIFO ordering). The method can be invoked from request scoped code. When method is invoked from the resource locator itself such a locator will be already in the returned list as a first element.

      The resource locator is a resource method which is annotated by the @Path and returns a sub resource.

      Specified by:
      getMatchedResourceLocators in interface ExtendedUriInfo
      Returns:
      List of matched resource locators.
    • getLocatorSubResources

      public List<Resource> getLocatorSubResources()
      Description copied from interface: ExtendedUriInfo
      Get the list of sub resources returned from resource locators during matching. The sub resources are sorted in the order, so that the first element of the list is a sub resource that was lastly returned from the resource locator (LIFO ordering).

      Sub resource is a resource that is returned from invoked resource locator method and that will be used for further resource matching.

      Specified by:
      getLocatorSubResources in interface ExtendedUriInfo
      Returns:
      Locator sub resource.
    • getMatchedModelResource

      public Resource getMatchedModelResource()
      Description copied from interface: ExtendedUriInfo
      Get matched model resource from which the matched resource method was invoked. The resource can also be a child if the matched method is a sub resource method.

      Note that method return only resource containing finally matched resource method and not intermediary processed resources (parent resources or resources containing sub resource locators).

      Specified by:
      getMatchedModelResource in interface ExtendedUriInfo
      Returns:
      The matched model resource or null if no resource was matched.
    • resolve

      public URI resolve(URI uri)
      Specified by:
      resolve in interface UriInfo
    • relativize

      public URI relativize(URI uri)
      Specified by:
      relativize in interface UriInfo