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 Detail

      • DEFAULT_BASE_URI

        private static final java.net.URI DEFAULT_BASE_URI
      • baseUri

        private java.net.URI baseUri
      • requestUri

        private java.net.URI requestUri
      • encodedRelativePath

        private java.lang.String encodedRelativePath
      • decodedRelativePath

        private java.lang.String decodedRelativePath
      • absolutePathUri

        private java.net.URI absolutePathUri
      • httpMethod

        private java.lang.String httpMethod
      • securityContext

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

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

        private java.lang.String varyValue
      • inResponseProcessingPhase

        private boolean inResponseProcessingPhase
      • ERROR_REQUEST_SET_ENTITY_STREAM_IN_RESPONSE_PHASE

        private static final java.lang.String ERROR_REQUEST_SET_ENTITY_STREAM_IN_RESPONSE_PHASE
      • ERROR_REQUEST_SET_SECURITY_CONTEXT_IN_RESPONSE_PHASE

        private static final java.lang.String ERROR_REQUEST_SET_SECURITY_CONTEXT_IN_RESPONSE_PHASE
      • ERROR_REQUEST_ABORT_IN_RESPONSE_PHASE

        private static final java.lang.String ERROR_REQUEST_ABORT_IN_RESPONSE_PHASE
      • METHOD_PARAMETER_CANNOT_BE_NULL_OR_EMPTY

        private static final java.lang.String METHOD_PARAMETER_CANNOT_BE_NULL_OR_EMPTY
      • METHOD_PARAMETER_CANNOT_BE_NULL_ETAG

        private static final java.lang.String METHOD_PARAMETER_CANNOT_BE_NULL_ETAG
      • METHOD_PARAMETER_CANNOT_BE_NULL_LAST_MODIFIED

        private static final java.lang.String METHOD_PARAMETER_CANNOT_BE_NULL_LAST_MODIFIED
    • Constructor Detail

      • ContainerRequest

        public ContainerRequest​(java.net.URI baseUri,
                                java.net.URI requestUri,
                                java.lang.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 Detail

      • 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​(java.lang.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​(java.lang.Class<T> rawType,
                                java.lang.annotation.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​(java.lang.Class<T> rawType,
                                java.lang.reflect.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​(java.lang.Class<T> rawType,
                                java.lang.reflect.Type type,
                                java.lang.annotation.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 java.lang.Object getProperty​(java.lang.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:
        PropertiesDelegate.getPropertyNames()
      • setProperty

        public void setProperty​(java.lang.String name,
                                java.lang.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​(java.lang.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
      • getRequestFilters

        java.lang.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

        java.lang.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 java.lang.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

        java.lang.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).
      • emptyIfNull

        private static <T> java.lang.Iterable<T> emptyIfNull​(java.lang.Iterable<T> iterable)
      • getBaseUri

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

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

        public java.net.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​(java.net.URI requestUri)
                           throws java.lang.IllegalStateException
        Specified by:
        setRequestUri in interface javax.ws.rs.container.ContainerRequestContext
        Throws:
        java.lang.IllegalStateException
      • setRequestUri

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

        public java.lang.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 java.lang.String encodedRelativePath()
      • getMethod

        public java.lang.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​(java.lang.String method)
                       throws java.lang.IllegalStateException
        Specified by:
        setMethod in interface javax.ws.rs.container.ContainerRequestContext
        Throws:
        java.lang.IllegalStateException
      • setMethodWithoutException

        public void setMethodWithoutException​(java.lang.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​(java.io.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 java.util.Map<java.lang.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 java.util.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 java.util.List<java.util.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​(java.util.List<javax.ws.rs.core.Variant> variants)
                                               throws java.lang.IllegalArgumentException
        Specified by:
        selectVariant in interface javax.ws.rs.core.Request
        Throws:
        java.lang.IllegalArgumentException
      • getVaryValue

        public java.lang.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​(java.util.Date lastModified)
        Specified by:
        evaluatePreconditions in interface javax.ws.rs.core.Request
      • evaluatePreconditions

        public javax.ws.rs.core.Response.ResponseBuilder evaluatePreconditions​(java.util.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,
                                                                              java.util.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,
                                                                                  java.lang.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 java.util.List<java.lang.String> getRequestHeader​(java.lang.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:
        java.lang.IllegalStateException - if called outside the scope of a request.
      • getRequestHeaders

        public javax.ws.rs.core.MultivaluedMap<java.lang.String,​java.lang.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:
        java.lang.IllegalStateException - if called outside the scope of a request.
      • checkState

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