Class ResourceRequestWrapper

    • Constructor Detail

      • ResourceRequestWrapper

        public ResourceRequestWrapper​(ResourceRequest request)
        Creates an ResourceRequest adaptor wrapping the given request object.
        Parameters:
        request - the resource request to wrap
        Throws:
        IllegalArgumentException - if the request is null
    • Method Detail

      • setRequest

        public void setRequest​(ResourceRequest request)
        Sets the request object being wrapped.
        Parameters:
        request - the request to set
        Throws:
        IllegalArgumentException - if the request is null.
      • getETag

        public String getETag()
        Description copied from interface: ResourceRequest
        Returns the validation tag if the portlet container has a cached response for this validation tag, or null if no cached response exists.

        This call returns the same value as ResourceRequest.getProperty(ResourceRequest.ETAG).

        Specified by:
        getETag in interface ResourceRequest
        Returns:
        the validation tag if the portlet container has a cached response for this validation tag, or null if no cached response exists.
      • getResourceID

        public String getResourceID()
        Description copied from interface: ResourceRequest
        Returns the resource ID set on the ResourceURL or null if no resource ID was set on the URL.
        Specified by:
        getResourceID in interface ResourceRequest
        Returns:
        the resource ID set on the ResourceURL,or null if no resource ID was set on the URL.
      • getPrivateRenderParameterMap

        @Deprecated
        public Map<String,​String[]> getPrivateRenderParameterMap()
        Deprecated.
        Description copied from interface: ResourceRequest
        Returns a Map of the private render parameters of this request. Private parameters are not shared with other portlets or components. The returned parameters are "x-www-form-urlencoded" decoded.

        The parameters returned do not include the resource parameters that the portlet may have set on the resource URL triggering this serveResource call.

        The values in the returned Map are from type String array (String[]).

        If no private parameters exist this method returns an empty Map.

        Specified by:
        getPrivateRenderParameterMap in interface ResourceRequest
        Returns:
        an immutable Map containing private parameter names as keys and private parameter values as map values, or an empty Map if no private parameters exist. The keys in the parameter map are of type String. The values in the parameter map are of type String array (String[]).
      • getCacheability

        public String getCacheability()
        Description copied from interface: ResourceRequest
        Returns the cache level of this resource request.

        Possible return values are: ResourceURL.FULL, ResourceURL.PORTLET or ResourceURL.PAGE.

        Specified by:
        getCacheability in interface ResourceRequest
        Returns:
        the cache level of this resource request.
      • startPortletAsync

        public PortletAsyncContext startPortletAsync()
                                              throws IllegalStateException
        Description copied from interface: ResourceRequest
        Puts this request into asynchronous mode and initializes the AsyncContext object.

        Calling this method will cause committal of the associated response to be delayed until AsyncContext#complete is called on the returned AsyncContext, or the asynchronous operation has timed out.

        This method clears the list of AsyncListener instances (if any) that were registered with the AsyncContext returned by the previous call to one of the startAsync methods, after calling each AsyncListener at its onStartAsync method.

        Subsequent invocations of this method, or its overloaded variant, will return the same AsyncContext instance, reinitialized as appropriate.

        The AsyncContext object can be used as described by the servlet specification. The ServletRequest and ServletResponse objects obtained from the AsyncContext will provide functionality appropriate for the portlet environment.

        The original ResourceRequest and ResourceResponse objects will be made available as request attributes on the ServletRequest object obtained from the AsyncContext under the names jakarta.portlet.request and jakarta.portlet.response, respectively. The PortletConfig object will be made available on the ServletRequest under the name jakarta.portlet.config.

        The AsyncContext#dispatch() method will cause the portlet resource method to be invoked with the ResourceRequest and ResourceResponse objects available as attributes on the ServletRequest object obtained from the AsyncContext. In this case, the ResourceRequest#isAsyncStarted() method will return false and the ResourceRequest#getDispatcherType() method will return DispatcherType#ASYNC.

        A portlet ResourceFilter that allocates resources and attaches them to the ResourceRequest or that wraps the ResourceRequest or ResourceResponse should not release resources in the outbound direction if asynchronous mode has been started. A portlet ResourceFilter can use the values provided by the ResourceRequest#isAsyncStarted() and the ResourceRequest#getDispatcherType() methods to determine when to allocate and release resources.

        Specified by:
        startPortletAsync in interface ResourceRequest
        Returns:
        the (re)initialized AsyncContext
        Throws:
        IllegalStateException - if this request is within the scope of a filter or servlet that does not support asynchronous operations (that is, isAsyncSupported() returns false), or if this method is called again without any asynchronous dispatch (resulting from one of the PortletAsyncContext#dispatch methods), is called outside the scope of any such dispatch, or is called again within the scope of the same dispatch, or if the response has already been closed
        See Also:
        ServletRequest.startAsync(), AsyncContext, ResourceRequest.isAsyncStarted(), ResourceRequest.getDispatcherType(), ResourceFilter
      • startPortletAsync

        public PortletAsyncContext startPortletAsync​(ResourceRequest request,
                                                     ResourceResponse response)
                                              throws IllegalStateException
        Description copied from interface: ResourceRequest
        Puts this request into asynchronous mode and initializes the AsyncContext object.

        Calling this method will cause committal of the associated response to be delayed until AsyncContext#complete is called on the returned AsyncContext, or the asynchronous operation has timed out.

        This method clears the list of AsyncListener instances (if any) that were registered with the AsyncContext returned by the previous call to one of the startAsync methods, after calling each AsyncListener at its onStartAsync method.

        The AsyncContext object can be used as described by the servlet specification. The ServletRequest and ServletResponse objects obtained from the AsyncContext will provide functionality appropriate for the portlet environment.

        The ResourceRequest and ResourceResponse objects passed as arguments to this method will be made available as request attributes on the ServletRequest object obtained from the AsyncContext under the names jakarta.portlet.request and jakarta.portlet.response, respectively. The PortletConfig object will be made available on the ServletRequest under the name jakarta.portlet.config.

        Subsequent invocations of this method, or its zero-argument variant, will return the same AsyncContext instance, reinitialized as appropriate. If a call to this method is followed by a call to its zero-argument variant, the specified (and possibly wrapped) ResourceRequest and ResourceResponse objects will remain available as request attributes on the ServletRequest object obtained from the AsyncContext.

        The AsyncContext#dispatch() method will cause the portlet resource method to be invoked with the ResourceRequest and ResourceResponse objects available as attributes on the ServletRequest object obtained from the AsyncContext. In this case, the ResourceRequest#isAsyncStarted() method will return false and the ResourceRequest#getDispatcherType() method will return DispatcherType#ASYNC.

        A portlet ResourceFilter that allocates resources and attaches them to the ResourceRequest or that wraps the ResourceRequest or ResourceResponse should not release resources in the outbound direction if asynchronous mode has been started. A portlet ResourceFilter can use the values provided by the ResourceRequest#isAsyncStarted() and the ResourceRequest#getDispatcherType() methods to determine when to allocate and release resources.

        Specified by:
        startPortletAsync in interface ResourceRequest
        Parameters:
        request - the resource request
        response - the resource response
        Returns:
        the (re)initialized AsyncContext
        Throws:
        IllegalStateException - if this request is within the scope of a filter or servlet that does not support asynchronous operations (that is, isAsyncSupported() returns false), or if this method is called again without any asynchronous dispatch (resulting from one of the PortletAsyncContext#dispatch methods), is called outside the scope of any such dispatch, or is called again within the scope of the same dispatch, or if the response has already been closed
        See Also:
        ServletRequest.startAsync(), AsyncContext, ResourceRequest.isAsyncStarted(), ResourceRequest.getDispatcherType(), ResourceFilter
      • isAsyncStarted

        public boolean isAsyncStarted()
        Description copied from interface: ResourceRequest
        Checks if this request has been put into asynchronous mode.

        A ResourceRequest is put into asynchronous mode by calling startAsync() or startAsync(ResourceRequest,ResourceResponse) on it.

        This method returns false if this request was put into asynchronous mode, but has since been dispatched using one of the AsyncContext#dispatch methods or released from asynchronous mode via a call to AsyncContext#complete.

        Specified by:
        isAsyncStarted in interface ResourceRequest
        Returns:
        true if asynchronous mode has been started
        See Also:
        ResourceRequest.startPortletAsync(), ResourceRequest.startPortletAsync(ResourceRequest, ResourceResponse)
      • isAsyncSupported

        public boolean isAsyncSupported()
        Description copied from interface: ResourceRequest
        Checks if this request supports asynchronous operation.

        Asynchronous operation is disabled for this request if this request is within the scope of a filter or servlet that has not been annotated or flagged in the portlet configuration as being able to support asynchronous handling.

        Specified by:
        isAsyncSupported in interface ResourceRequest
        Returns:
        true if this request supports asynchronous operation
      • getPortletAsyncContext

        public PortletAsyncContext getPortletAsyncContext()
        Description copied from interface: ResourceRequest
        Gets the AsyncContext that was created or reinitialized by the most recent invocation of startAsync() or startAsync(ResourceRequest,ResourceResponse) on this request.
        Specified by:
        getPortletAsyncContext in interface ResourceRequest
        Returns:
        the AsyncContext (re)initialized by the most recent startAsync method invocation
        See Also:
        ServletRequest.startAsync(), AsyncContext
      • getDispatcherType

        public jakarta.servlet.DispatcherType getDispatcherType()
        Description copied from interface: ResourceRequest
        Gets the dispatcher type of this request.

        The initial dispatcher type of a request is defined as DispatcherType.REQUEST. The dispatcher type of a request dispatched via a RequestDispatcher is given as DispatcherType.FORWARD or DispatcherType.INCLUDE, while the dispatcher type of an asynchronous request dispatched via one of the AsyncContext#dispatch methods is given as DispatcherType.ASYNC.

        Specified by:
        getDispatcherType in interface ResourceRequest
        Returns:
        the dispatcher type of this request
        See Also:
        DispatcherType