public class UriRoutingContext extends java.lang.Object implements RoutingContext
| Modifier and Type | Field and Description |
|---|---|
private ImmutableMultivaluedMap<java.lang.String,java.lang.String> |
decodedQueryParamsView |
private javax.ws.rs.core.MultivaluedHashMap<java.lang.String,java.lang.String> |
decodedTemplateValues |
private ImmutableMultivaluedMap<java.lang.String,java.lang.String> |
decodedTemplateValuesView |
private ImmutableMultivaluedMap<java.lang.String,java.lang.String> |
encodedQueryParamsView |
private javax.ws.rs.core.MultivaluedHashMap<java.lang.String,java.lang.String> |
encodedTemplateValues |
private ImmutableMultivaluedMap<java.lang.String,java.lang.String> |
encodedTemplateValuesView |
private Endpoint |
endpoint |
private java.util.LinkedList<Resource> |
locatorSubResources |
private java.lang.Throwable |
mappedThrowable |
private java.util.LinkedList<ResourceMethod> |
matchedLocators |
private ResourceMethod |
matchedResourceMethod |
private java.util.LinkedList<java.lang.Object> |
matchedResources |
private java.util.LinkedList<RuntimeResource> |
matchedRuntimeResources |
private java.util.LinkedList<java.util.regex.MatchResult> |
matchResults |
private static com.google.common.base.Function<java.lang.String,java.lang.String> |
PATH_DECODER |
private java.util.LinkedList<java.lang.String> |
paths |
private ContainerRequest |
requestContext |
private java.util.LinkedList<UriTemplate> |
templates |
private TracingLogger |
tracingLogger |
| Constructor and Description |
|---|
UriRoutingContext(ContainerRequest requestContext)
Injection constructor.
|
| Modifier and Type | Method and Description |
|---|---|
java.net.URI |
getAbsolutePath() |
javax.ws.rs.core.UriBuilder |
getAbsolutePathBuilder() |
java.net.URI |
getBaseUri() |
javax.ws.rs.core.UriBuilder |
getBaseUriBuilder() |
Endpoint |
getEndpoint()
Get the matched server-side endpoint if present, or
null otherwise. |
java.lang.String |
getFinalMatchingGroup()
Get the final matching group of the last successful request URI routing
pattern
match result. |
private int |
getLastPathParameterIndex(java.lang.String name,
UriTemplate t) |
java.util.List<Resource> |
getLocatorSubResources()
Get the list of sub resources returned from resource locators during matching.
|
java.lang.Throwable |
getMappedThrowable()
Get the throwable that was mapped to a response.
|
Resource |
getMatchedModelResource()
Get matched
model resource from which the matched resource method
was invoked. |
java.util.List<ResourceMethod> |
getMatchedResourceLocators()
Get resource locators matched since beginning of a matching.
|
ResourceMethod |
getMatchedResourceMethod()
Get matched
resource method that is invoked. |
java.util.List<java.lang.Object> |
getMatchedResources() |
java.util.LinkedList<java.util.regex.MatchResult> |
getMatchedResults()
Get a read-only list of
MatchResult for matched resources. |
java.util.List<RuntimeResource> |
getMatchedRuntimeResources()
Return all matched
runtime resources including runtime resources
based on child resources. |
java.util.List<UriTemplate> |
getMatchedTemplates()
Get a read-only list of
UriTemplate for matched resources. |
java.util.List<java.lang.String> |
getMatchedURIs() |
java.util.List<java.lang.String> |
getMatchedURIs(boolean decode) |
java.lang.String |
getPath() |
java.lang.String |
getPath(boolean decode) |
private int[] |
getPathParameterBounds(java.lang.String name) |
javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> |
getPathParameters() |
javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> |
getPathParameters(boolean decode) |
java.util.List<javax.ws.rs.core.PathSegment> |
getPathSegments() |
java.util.List<javax.ws.rs.core.PathSegment> |
getPathSegments(boolean decode) |
java.util.List<javax.ws.rs.core.PathSegment> |
getPathSegments(java.lang.String name)
Get the path segments that contain a template variable.
|
java.util.List<javax.ws.rs.core.PathSegment> |
getPathSegments(java.lang.String name,
boolean decode)
Get the path segments that contain a template variable.
|
javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> |
getQueryParameters() |
javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> |
getQueryParameters(boolean decode) |
java.net.URI |
getRequestUri() |
javax.ws.rs.core.UriBuilder |
getRequestUriBuilder() |
java.lang.Class<?> |
getResourceClass() |
java.lang.reflect.Method |
getResourceMethod() |
void |
invalidateUriComponentViews()
Invalidate internal URI component cache views.
|
java.lang.Object |
peekMatchedResource()
Peek the last resource object that successfully matched the request URI.
|
void |
pushLeftHandPath()
Add currently matched left-hand side part of request path to the list of
matched paths returned by
UriInfo.getMatchedURIs(). |
void |
pushLocatorSubResource(Resource subResourceFromLocator)
Push
sub resource returned from a sub resource locator method. |
void |
pushMatchedLocator(ResourceMethod resourceLocator)
Push the matched
sub resource locator method. |
void |
pushMatchedResource(java.lang.Object resource)
Push the resource that matched the request URI.
|
void |
pushMatchedRuntimeResource(RuntimeResource runtimeResource)
Push a matched
runtime resource that was visited during matching phase. |
private void |
pushMatchedTemplateValues(UriTemplate template,
java.util.regex.MatchResult matchResult) |
void |
pushMatchResult(java.util.regex.MatchResult matchResult)
Push the result of the successful request URI routing pattern match.
|
void |
pushTemplates(UriTemplate resourceTemplate,
UriTemplate methodTemplate)
Push matched request URI routing pattern
templates
for a single matched method. |
java.net.URI |
relativize(java.net.URI uri) |
java.net.URI |
resolve(java.net.URI uri) |
void |
setEndpoint(Endpoint endpoint)
Set the matched server-side endpoint.
|
void |
setMappedThrowable(java.lang.Throwable mappedThrowable)
Set the throwable that was mapped to a response.
|
void |
setMatchedResourceMethod(ResourceMethod resourceMethod)
Set the matched
resource method. |
private final java.util.LinkedList<java.util.regex.MatchResult> matchResults
private final java.util.LinkedList<java.lang.Object> matchedResources
private final java.util.LinkedList<UriTemplate> templates
private final javax.ws.rs.core.MultivaluedHashMap<java.lang.String,java.lang.String> encodedTemplateValues
private final ImmutableMultivaluedMap<java.lang.String,java.lang.String> encodedTemplateValuesView
private final java.util.LinkedList<java.lang.String> paths
private final java.util.LinkedList<RuntimeResource> matchedRuntimeResources
private final java.util.LinkedList<ResourceMethod> matchedLocators
private final java.util.LinkedList<Resource> locatorSubResources
private final TracingLogger tracingLogger
private volatile ResourceMethod matchedResourceMethod
private volatile java.lang.Throwable mappedThrowable
private Endpoint endpoint
private javax.ws.rs.core.MultivaluedHashMap<java.lang.String,java.lang.String> decodedTemplateValues
private ImmutableMultivaluedMap<java.lang.String,java.lang.String> decodedTemplateValuesView
private ImmutableMultivaluedMap<java.lang.String,java.lang.String> encodedQueryParamsView
private ImmutableMultivaluedMap<java.lang.String,java.lang.String> decodedQueryParamsView
private final ContainerRequest requestContext
private static final com.google.common.base.Function<java.lang.String,java.lang.String> PATH_DECODER
public UriRoutingContext(ContainerRequest requestContext)
requestContext - request reference.public void pushMatchResult(java.util.regex.MatchResult matchResult)
RoutingContextpushMatchResult in interface RoutingContextmatchResult - successful request URI routing pattern
match result.public void pushMatchedResource(java.lang.Object resource)
RoutingContextpushMatchedResource in interface RoutingContextresource - instance of the resource that matched the request URI.public java.lang.Object peekMatchedResource()
RoutingContextpeekMatchedResource in interface RoutingContextRoutingContext.pushMatchedResource(java.lang.Object)public void pushMatchedLocator(ResourceMethod resourceLocator)
RoutingContextsub resource locator method.pushMatchedLocator in interface RoutingContextresourceLocator - Sub resource locator method.public void pushLeftHandPath()
RoutingContextUriInfo.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.pushLeftHandPath in interface RoutingContextpublic void pushTemplates(UriTemplate resourceTemplate, UriTemplate methodTemplate)
RoutingContexttemplates
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.
pushTemplates in interface RoutingContextresourceTemplate - resource URI template that should be pushed.methodTemplate - (sub-resource) method or locator URI template that should be pushed.private void pushMatchedTemplateValues(UriTemplate template, java.util.regex.MatchResult matchResult)
public java.lang.String getFinalMatchingGroup()
RoutingContextmatch result. Also known as right-hand path.
May be empty but is never null.
getFinalMatchingGroup in interface RoutingContextpublic java.util.LinkedList<java.util.regex.MatchResult> getMatchedResults()
ExtendedUriInfoMatchResult for matched resources.
Entries are ordered in reverse request URI matching order, with the
root resource match result last.getMatchedResults in interface ExtendedUriInfopublic void setEndpoint(Endpoint endpoint)
RoutingContextsetEndpoint in interface RoutingContextendpoint - matched server-side endpoint.public Endpoint getEndpoint()
RoutingContextnull otherwise.getEndpoint in interface RoutingContextnull if not available.public void setMatchedResourceMethod(ResourceMethod resourceMethod)
RoutingContextresource 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.setMatchedResourceMethod in interface RoutingContextresourceMethod - Resource method that was matched.public void pushMatchedRuntimeResource(RuntimeResource runtimeResource)
RoutingContextruntime resource that was visited during matching phase. This method must
be called for any matched runtime resource.pushMatchedRuntimeResource in interface RoutingContextruntimeResource - Runtime resource that was matched during matching.public void pushLocatorSubResource(Resource subResourceFromLocator)
RoutingContextsub 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.pushLocatorSubResource in interface RoutingContextsubResourceFromLocator - Resource constructed from result of sub resource locator method.public java.net.URI getAbsolutePath()
getAbsolutePath in interface javax.ws.rs.core.UriInfopublic javax.ws.rs.core.UriBuilder getAbsolutePathBuilder()
getAbsolutePathBuilder in interface javax.ws.rs.core.UriInfopublic java.net.URI getBaseUri()
getBaseUri in interface javax.ws.rs.core.UriInfopublic javax.ws.rs.core.UriBuilder getBaseUriBuilder()
getBaseUriBuilder in interface javax.ws.rs.core.UriInfopublic java.util.List<java.lang.Object> getMatchedResources()
getMatchedResources in interface javax.ws.rs.core.UriInfopublic java.util.List<java.lang.String> getMatchedURIs()
getMatchedURIs in interface javax.ws.rs.core.UriInfopublic java.util.List<java.lang.String> getMatchedURIs(boolean decode)
getMatchedURIs in interface javax.ws.rs.core.UriInfopublic java.lang.String getPath()
getPath in interface javax.ws.rs.core.UriInfopublic java.lang.String getPath(boolean decode)
getPath in interface javax.ws.rs.core.UriInfopublic javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> getPathParameters()
getPathParameters in interface javax.ws.rs.core.UriInfopublic javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> getPathParameters(boolean decode)
getPathParameters in interface javax.ws.rs.core.UriInfopublic java.util.List<javax.ws.rs.core.PathSegment> getPathSegments()
getPathSegments in interface javax.ws.rs.core.UriInfopublic java.util.List<javax.ws.rs.core.PathSegment> getPathSegments(boolean decode)
getPathSegments in interface javax.ws.rs.core.UriInfopublic javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> getQueryParameters()
getQueryParameters in interface javax.ws.rs.core.UriInfopublic javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> getQueryParameters(boolean decode)
getQueryParameters in interface javax.ws.rs.core.UriInfopublic void invalidateUriComponentViews()
This method needs to be called if request URI information changes.
public java.net.URI getRequestUri()
getRequestUri in interface javax.ws.rs.core.UriInfopublic javax.ws.rs.core.UriBuilder getRequestUriBuilder()
getRequestUriBuilder in interface javax.ws.rs.core.UriInfopublic java.lang.Throwable getMappedThrowable()
ExtendedUriInfoA 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.
getMappedThrowable in interface ExtendedUriInfopublic void setMappedThrowable(java.lang.Throwable mappedThrowable)
RoutingContextsetMappedThrowable in interface RoutingContextmappedThrowable - throwable that was mapped to a response.ExtendedUriInfo.getMappedThrowable()public java.util.List<UriTemplate> getMatchedTemplates()
ExtendedUriInfoUriTemplate 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.getMatchedTemplates in interface ExtendedUriInfopublic java.util.List<javax.ws.rs.core.PathSegment> getPathSegments(java.lang.String name)
ExtendedUriInfogetPathSegments(true).getPathSegments in interface ExtendedUriInfoname - the template variable namepublic java.util.List<javax.ws.rs.core.PathSegment> getPathSegments(java.lang.String name,
boolean decode)
ExtendedUriInfogetPathSegments in interface ExtendedUriInfoname - the template variable namedecode - controls whether sequences of escaped octets are decoded
(true) or not (false).private int[] getPathParameterBounds(java.lang.String name)
private int getLastPathParameterIndex(java.lang.String name,
UriTemplate t)
public java.lang.reflect.Method getResourceMethod()
getResourceMethod in interface javax.ws.rs.container.ResourceInfopublic java.lang.Class<?> getResourceClass()
getResourceClass in interface javax.ws.rs.container.ResourceInfopublic java.util.List<RuntimeResource> getMatchedRuntimeResources()
ExtendedUriInforuntime 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"] |
getMatchedRuntimeResources in interface ExtendedUriInfopublic ResourceMethod getMatchedResourceMethod()
ExtendedUriInforesource 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.getMatchedResourceMethod in interface ExtendedUriInfopublic java.util.List<ResourceMethod> getMatchedResourceLocators()
ExtendedUriInfo
The resource locator is
a resource method which is annotated by the @Path
and returns a sub resource.
getMatchedResourceLocators in interface ExtendedUriInfopublic java.util.List<Resource> getLocatorSubResources()
ExtendedUriInfogetLocatorSubResources in interface ExtendedUriInfopublic Resource getMatchedModelResource()
ExtendedUriInfomodel 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).getMatchedModelResource in interface ExtendedUriInfopublic java.net.URI resolve(java.net.URI uri)
resolve in interface javax.ws.rs.core.UriInfopublic java.net.URI relativize(java.net.URI uri)
relativize in interface javax.ws.rs.core.UriInfo