Class ContainerRequest

All Implemented Interfaces:
javax.ws.rs.container.ContainerRequestContext, javax.ws.rs.core.HttpHeaders, javax.ws.rs.core.Request, PropertiesDelegate

public class ContainerRequest extends InboundMessageContext implements javax.ws.rs.container.ContainerRequestContext, javax.ws.rs.core.Request, javax.ws.rs.core.HttpHeaders, PropertiesDelegate
Jersey container request context.

An instance of the request context is passed by the container to the ApplicationHandler for each incoming client request.

  • Field Details

    • DEFAULT_BASE_URI

      private static final URI DEFAULT_BASE_URI
    • propertiesDelegate

      private final PropertiesDelegate propertiesDelegate
    • uriRoutingContext

      private final UriRoutingContext uriRoutingContext
    • baseUri

      private URI baseUri
    • requestUri

      private URI requestUri
    • encodedRelativePath

      private String encodedRelativePath
    • decodedRelativePath

      private String decodedRelativePath
    • absolutePathUri

      private URI absolutePathUri
    • httpMethod

      private String httpMethod
    • securityContext

      private javax.ws.rs.core.SecurityContext securityContext
    • abortResponse

      private javax.ws.rs.core.Response abortResponse
    • varyValue

      private String varyValue
    • processingProviders

      private ProcessingProviders processingProviders
    • requestScopedInitializer

      private RequestScopedInitializer requestScopedInitializer
    • responseWriter

      private ContainerResponseWriter responseWriter
    • inResponseProcessingPhase

      private boolean inResponseProcessingPhase
    • ERROR_REQUEST_SET_ENTITY_STREAM_IN_RESPONSE_PHASE

      private static final String ERROR_REQUEST_SET_ENTITY_STREAM_IN_RESPONSE_PHASE
    • ERROR_REQUEST_SET_SECURITY_CONTEXT_IN_RESPONSE_PHASE

      private static final String ERROR_REQUEST_SET_SECURITY_CONTEXT_IN_RESPONSE_PHASE
    • ERROR_REQUEST_ABORT_IN_RESPONSE_PHASE

      private static final String ERROR_REQUEST_ABORT_IN_RESPONSE_PHASE
    • METHOD_PARAMETER_CANNOT_BE_NULL_OR_EMPTY

      private static final String METHOD_PARAMETER_CANNOT_BE_NULL_OR_EMPTY
    • METHOD_PARAMETER_CANNOT_BE_NULL_ETAG

      private static final String METHOD_PARAMETER_CANNOT_BE_NULL_ETAG
    • METHOD_PARAMETER_CANNOT_BE_NULL_LAST_MODIFIED

      private static final String METHOD_PARAMETER_CANNOT_BE_NULL_LAST_MODIFIED
  • Constructor Details

    • ContainerRequest

      public ContainerRequest(URI baseUri, URI requestUri, String httpMethod, javax.ws.rs.core.SecurityContext securityContext, PropertiesDelegate propertiesDelegate)
      Create new Jersey container request context.
      Parameters:
      baseUri - base application URI.
      requestUri - request URI.
      httpMethod - request HTTP method name.
      securityContext - security context of the current request. Must not be null. The SecurityContext.getUserPrincipal() must return null if the current request has not been authenticated by the container.
      propertiesDelegate - custom properties delegate to be used by the context.
  • Method Details

    • getRequestScopedInitializer

      public RequestScopedInitializer getRequestScopedInitializer()
      Get a custom container extensions initializer for the current request.

      The initializer is guaranteed to be run from within the request scope of the current request.

      Returns:
      custom container extensions initializer or null if not available.
    • setRequestScopedInitializer

      public void setRequestScopedInitializer(RequestScopedInitializer requestScopedInitializer)
      Set a custom container extensions initializer for the current request.

      The initializer is guaranteed to be run from within the request scope of the current request.

      Parameters:
      requestScopedInitializer - custom container extensions initializer.
    • getResponseWriter

      public ContainerResponseWriter getResponseWriter()
      Get the container response writer for the current request.
      Returns:
      container response writer.
    • setWriter

      public void setWriter(ContainerResponseWriter responseWriter)
      Set the container response writer for the current request.
      Parameters:
      responseWriter - container response writer. Must not be null.
    • readEntity

      public <T> T readEntity(Class<T> rawType)
      Read entity from a context entity input stream.
      Type Parameters:
      T - entity Java object type.
      Parameters:
      rawType - raw Java entity type.
      Returns:
      entity read from a context entity input stream.
    • readEntity

      public <T> T readEntity(Class<T> rawType, Annotation[] annotations)
      Read entity from a context entity input stream.
      Type Parameters:
      T - entity Java object type.
      Parameters:
      rawType - raw Java entity type.
      annotations - entity annotations.
      Returns:
      entity read from a context entity input stream.
    • readEntity

      public <T> T readEntity(Class<T> rawType, Type type)
      Read entity from a context entity input stream.
      Type Parameters:
      T - entity Java object type.
      Parameters:
      rawType - raw Java entity type.
      type - generic Java entity type.
      Returns:
      entity read from a context entity input stream.
    • readEntity

      public <T> T readEntity(Class<T> rawType, Type type, Annotation[] annotations)
      Read entity from a context entity input stream.
      Type Parameters:
      T - entity Java object type.
      Parameters:
      rawType - raw Java entity type.
      type - generic Java entity type.
      annotations - entity annotations.
      Returns:
      entity read from a context entity input stream.
    • getProperty

      public Object getProperty(String name)
      Description copied from interface: PropertiesDelegate
      Returns the property with the given name registered in the current request/response exchange context, or null if there is no property by that name.

      A property allows a JAX-RS filters and interceptors to exchange additional custom information not already provided by this interface.

      A list of supported properties can be retrieved using PropertiesDelegate.getPropertyNames(). Custom property names should follow the same convention as package names.

      Specified by:
      getProperty in interface javax.ws.rs.container.ContainerRequestContext
      Specified by:
      getProperty in interface PropertiesDelegate
      Parameters:
      name - a String specifying the name of the property.
      Returns:
      an Object containing the value of the property, or null if no property exists matching the given name.
      See Also:
    • getPropertyNames

      public Collection<String> getPropertyNames()
      Description copied from interface: PropertiesDelegate
      Returns an immutable collection containing the property names available within the context of the current request/response exchange context.

      Use the PropertiesDelegate.getProperty(java.lang.String) method with a property name to get the value of a property.

      Specified by:
      getPropertyNames in interface javax.ws.rs.container.ContainerRequestContext
      Specified by:
      getPropertyNames in interface PropertiesDelegate
      Returns:
      an immutable collection of property names.
      See Also:
    • setProperty

      public void setProperty(String name, Object object)
      Description copied from interface: PropertiesDelegate
      Binds an object to a given property name in the current request/response exchange context. If the name specified is already used for a property, this method will replace the value of the property with the new value.

      A property allows a JAX-RS filters and interceptors to exchange additional custom information not already provided by this interface.

      A list of supported properties can be retrieved using PropertiesDelegate.getPropertyNames(). Custom property names should follow the same convention as package names.

      If a null value is passed, the effect is the same as calling the PropertiesDelegate.removeProperty(String) method.

      Specified by:
      setProperty in interface javax.ws.rs.container.ContainerRequestContext
      Specified by:
      setProperty in interface PropertiesDelegate
      Parameters:
      name - a String specifying the name of the property.
      object - an Object representing the property to be bound.
    • removeProperty

      public void removeProperty(String name)
      Description copied from interface: PropertiesDelegate
      Removes a property with the given name from the current request/response exchange context. After removal, subsequent calls to PropertiesDelegate.getProperty(java.lang.String) to retrieve the property value will return null.
      Specified by:
      removeProperty in interface javax.ws.rs.container.ContainerRequestContext
      Specified by:
      removeProperty in interface PropertiesDelegate
      Parameters:
      name - a String specifying the name of the property to be removed.
    • getPropertiesDelegate

      public PropertiesDelegate getPropertiesDelegate()
      Get the underlying properties delegate.
      Returns:
      underlying properties delegate.
    • getUriInfo

      public ExtendedUriInfo getUriInfo()
      Specified by:
      getUriInfo in interface javax.ws.rs.container.ContainerRequestContext
    • setProcessingProviders

      void setProcessingProviders(ProcessingProviders providers)
    • getUriRoutingContext

      UriRoutingContext getUriRoutingContext()
    • getRequestFilters

      Iterable<RankedProvider<javax.ws.rs.container.ContainerRequestFilter>> getRequestFilters()
      Get all bound request filters applicable to this request.
      Returns:
      All bound (dynamically or by name) request filters applicable to the matched inflector (or an empty collection if no inflector matched yet).
    • getResponseFilters

      Iterable<RankedProvider<javax.ws.rs.container.ContainerResponseFilter>> getResponseFilters()
      Get all bound response filters applicable to this request. This is populated once the right resource method is matched.
      Returns:
      All bound (dynamically or by name) response filters applicable to the matched inflector (or an empty collection if no inflector matched yet).
    • getReaderInterceptors

      protected Iterable<javax.ws.rs.ext.ReaderInterceptor> getReaderInterceptors()
      Get all reader interceptors applicable to this request. This is populated once the right resource method is matched.
      Specified by:
      getReaderInterceptors in class InboundMessageContext
      Returns:
      All reader interceptors applicable to the matched inflector (or an empty collection if no inflector matched yet).
    • getWriterInterceptors

      Iterable<javax.ws.rs.ext.WriterInterceptor> getWriterInterceptors()
      Get all writer interceptors applicable to this request.
      Returns:
      All writer interceptors applicable to the matched inflector (or an empty collection if no inflector matched yet).
    • getInflector

    • emptyIfNull

      private static <T> Iterable<T> emptyIfNull(Iterable<T> iterable)
    • getBaseUri

      public URI getBaseUri()
      Get base request URI.
      Returns:
      base request URI.
    • getRequestUri

      public URI getRequestUri()
      Get request URI.
      Returns:
      request URI.
    • getAbsolutePath

      public URI getAbsolutePath()
      Get the absolute path of the request. This includes everything preceding the path (host, port etc), but excludes query parameters or fragment.
      Returns:
      the absolute path of the request.
    • setRequestUri

      public void setRequestUri(URI requestUri) throws IllegalStateException
      Specified by:
      setRequestUri in interface javax.ws.rs.container.ContainerRequestContext
      Throws:
      IllegalStateException
    • setRequestUri

      public void setRequestUri(URI baseUri, URI requestUri) throws IllegalStateException
      Specified by:
      setRequestUri in interface javax.ws.rs.container.ContainerRequestContext
      Throws:
      IllegalStateException
    • getPath

      public String getPath(boolean decode)
      Get the path of the current request relative to the application root (base) URI as a string.
      Parameters:
      decode - controls whether sequences of escaped octets are decoded (true) or not (false).
      Returns:
      relative request path.
    • encodedRelativePath

      private String encodedRelativePath()
    • getMethod

      public String getMethod()
      Specified by:
      getMethod in interface javax.ws.rs.container.ContainerRequestContext
      Specified by:
      getMethod in interface javax.ws.rs.core.Request
    • setMethod

      public void setMethod(String method) throws IllegalStateException
      Specified by:
      setMethod in interface javax.ws.rs.container.ContainerRequestContext
      Throws:
      IllegalStateException
    • setMethodWithoutException

      public void setMethodWithoutException(String method)
      Like setMethod(String) but does not throw IllegalStateException if the method is invoked in other than pre-matching phase.
      Parameters:
      method - HTTP method.
    • getSecurityContext

      public javax.ws.rs.core.SecurityContext getSecurityContext()
      Specified by:
      getSecurityContext in interface javax.ws.rs.container.ContainerRequestContext
    • setSecurityContext

      public void setSecurityContext(javax.ws.rs.core.SecurityContext context)
      Specified by:
      setSecurityContext in interface javax.ws.rs.container.ContainerRequestContext
    • setEntityStream

      public void setEntityStream(InputStream input)
      Description copied from class: InboundMessageContext
      Set a new entity input stream.
      Specified by:
      setEntityStream in interface javax.ws.rs.container.ContainerRequestContext
      Overrides:
      setEntityStream in class InboundMessageContext
      Parameters:
      input - new entity input stream.
    • getRequest

      public javax.ws.rs.core.Request getRequest()
      Specified by:
      getRequest in interface javax.ws.rs.container.ContainerRequestContext
    • abortWith

      public void abortWith(javax.ws.rs.core.Response response)
      Specified by:
      abortWith in interface javax.ws.rs.container.ContainerRequestContext
    • inResponseProcessing

      public void inResponseProcessing()
      Notify this request that the response created from this request is already being processed. This means that the request processing phase has finished and this request can be used only in the request processing phase (for example in ContainerResponseFilter).

      The request can be used for processing of more than one response (in async cases). Then this method should be called when the first response is created from this request. Multiple calls to this method has the same effect as calling the method only once.

    • getAbortResponse

      public javax.ws.rs.core.Response getAbortResponse()
      Get the request filter chain aborting response if set, or null otherwise.
      Returns:
      request filter chain aborting response if set, or null otherwise.
    • getCookies

      public Map<String,javax.ws.rs.core.Cookie> getCookies()
      Specified by:
      getCookies in interface javax.ws.rs.container.ContainerRequestContext
      Specified by:
      getCookies in interface javax.ws.rs.core.HttpHeaders
    • getAcceptableMediaTypes

      public List<javax.ws.rs.core.MediaType> getAcceptableMediaTypes()
      Specified by:
      getAcceptableMediaTypes in interface javax.ws.rs.container.ContainerRequestContext
      Specified by:
      getAcceptableMediaTypes in interface javax.ws.rs.core.HttpHeaders
    • getAcceptableLanguages

      public List<Locale> getAcceptableLanguages()
      Specified by:
      getAcceptableLanguages in interface javax.ws.rs.container.ContainerRequestContext
      Specified by:
      getAcceptableLanguages in interface javax.ws.rs.core.HttpHeaders
    • selectVariant

      public javax.ws.rs.core.Variant selectVariant(List<javax.ws.rs.core.Variant> variants) throws IllegalArgumentException
      Specified by:
      selectVariant in interface javax.ws.rs.core.Request
      Throws:
      IllegalArgumentException
    • getVaryValue

      public String getVaryValue()
      Get the value of HTTP Vary response header to be set in the response, or null if no value is to be set.
      Returns:
      value of HTTP Vary response header to be set in the response if available, null otherwise.
    • evaluatePreconditions

      public javax.ws.rs.core.Response.ResponseBuilder evaluatePreconditions(javax.ws.rs.core.EntityTag eTag)
      Specified by:
      evaluatePreconditions in interface javax.ws.rs.core.Request
    • evaluatePreconditions

      public javax.ws.rs.core.Response.ResponseBuilder evaluatePreconditions(Date lastModified)
      Specified by:
      evaluatePreconditions in interface javax.ws.rs.core.Request
    • evaluatePreconditions

      public javax.ws.rs.core.Response.ResponseBuilder evaluatePreconditions(Date lastModified, javax.ws.rs.core.EntityTag eTag)
      Specified by:
      evaluatePreconditions in interface javax.ws.rs.core.Request
    • evaluatePreconditions

      public javax.ws.rs.core.Response.ResponseBuilder evaluatePreconditions()
      Specified by:
      evaluatePreconditions in interface javax.ws.rs.core.Request
    • evaluateIfMatch

      private javax.ws.rs.core.Response.ResponseBuilder evaluateIfMatch(javax.ws.rs.core.EntityTag eTag)
    • evaluateIfNoneMatch

      private javax.ws.rs.core.Response.ResponseBuilder evaluateIfNoneMatch(javax.ws.rs.core.EntityTag eTag)
    • evaluateIfNoneMatch

      private javax.ws.rs.core.Response.ResponseBuilder evaluateIfNoneMatch(javax.ws.rs.core.EntityTag eTag, Set<? extends javax.ws.rs.core.EntityTag> matchingTags, boolean isGetOrHead)
    • evaluateIfUnmodifiedSince

      private javax.ws.rs.core.Response.ResponseBuilder evaluateIfUnmodifiedSince(long lastModified)
    • evaluateIfModifiedSince

      private javax.ws.rs.core.Response.ResponseBuilder evaluateIfModifiedSince(long lastModified)
    • evaluateIfModifiedSince

      private javax.ws.rs.core.Response.ResponseBuilder evaluateIfModifiedSince(long lastModified, String ifModifiedSinceHeader)
    • roundDown

      private static long roundDown(long time)
      Round down the time to the nearest second.
      Parameters:
      time - the time to round down.
      Returns:
      the rounded down time.
    • getRequestHeader

      public List<String> getRequestHeader(String name)
      Get the values of a HTTP request header. The returned List is read-only. This is a shortcut for getRequestHeaders().get(name).
      Specified by:
      getRequestHeader in interface javax.ws.rs.core.HttpHeaders
      Parameters:
      name - the header name, case insensitive.
      Returns:
      a read-only list of header values.
      Throws:
      IllegalStateException - if called outside the scope of a request.
    • getRequestHeaders

      public javax.ws.rs.core.MultivaluedMap<String,String> getRequestHeaders()
      Get the values of HTTP request headers. The returned Map is case-insensitive wrt. keys and is read-only. The method never returns null.
      Specified by:
      getRequestHeaders in interface javax.ws.rs.core.HttpHeaders
      Returns:
      a read-only map of header names and values.
      Throws:
      IllegalStateException - if called outside the scope of a request.
    • checkState

      void checkState() throws IllegalStateException
      Check if the container request has been properly initialized for processing.
      Throws:
      IllegalStateException - in case the internal state is not ready for processing.