public class ResourceRequestWrapper extends ClientDataRequestWrapper implements ResourceRequest
ResourceRequestWrapper
provides a convenient
implementation of the ResourceRequest
interface
that can be subclassed by developers.
This class implements the Wrapper or Decorator pattern.
Methods default to calling through to the wrapped request object.ResourceRequest
PortletRequest.P3PUserInfos
wrapped
ETAG
ACTION_PHASE, ACTION_SCOPE_ID, BASIC_AUTH, CCPP_PROFILE, CLIENT_CERT_AUTH, DIGEST_AUTH, EVENT_PHASE, FORM_AUTH, HEADER_PHASE, LIFECYCLE_PHASE, RENDER_HEADERS, RENDER_MARKUP, RENDER_PART, RENDER_PHASE, RESOURCE_PHASE, USER_INFO
Constructor and Description |
---|
ResourceRequestWrapper(ResourceRequest request)
Creates an
ResourceRequest adaptor
wrapping the given request object. |
Modifier and Type | Method and Description |
---|---|
String |
getCacheability()
Returns the cache level of this resource request.
|
javax.servlet.DispatcherType |
getDispatcherType()
Gets the dispatcher type of this request.
|
String |
getETag()
Returns the validation tag if the portlet container
has a cached response for this validation tag, or
null if no cached response exists. |
PortletAsyncContext |
getPortletAsyncContext()
Gets the
AsyncContext that was created or reinitialized by the most
recent invocation of startAsync() or
startAsync(ResourceRequest,ResourceResponse) on this request. |
Map<String,String[]> |
getPrivateRenderParameterMap()
Deprecated.
|
ResourceRequest |
getRequest()
Return the wrapped request object.
|
String |
getResourceID()
Returns the resource ID set on the ResourceURL or
null
if no resource ID was set on the URL. |
ResourceParameters |
getResourceParameters()
Gets the resource parameters set for this request.
|
boolean |
isAsyncStarted()
Checks if this request has been put into asynchronous mode.
|
boolean |
isAsyncSupported()
Checks if this request supports asynchronous operation.
|
void |
setRequest(ResourceRequest request)
Sets the request object being wrapped.
|
PortletAsyncContext |
startPortletAsync()
Puts this request into asynchronous mode and initializes the
AsyncContext
object. |
PortletAsyncContext |
startPortletAsync(ResourceRequest request,
ResourceResponse response)
Puts this request into asynchronous mode and initializes the
AsyncContext
object. |
getCharacterEncoding, getContentLength, getContentLengthLong, getContentType, getMethod, getPart, getParts, getPortletInputStream, getReader, setCharacterEncoding, setRequest
getAttribute, getAttributeNames, getAuthType, getContextPath, getCookies, getLocale, getLocales, getParameter, getParameterMap, getParameterNames, getParameterValues, getPortalContext, getPortletContext, getPortletMode, getPortletSession, getPortletSession, getPreferences, getPrivateParameterMap, getProperties, getProperty, getPropertyNames, getPublicParameterMap, getRemoteUser, getRenderParameters, getRequestedSessionId, getResponseContentType, getResponseContentTypes, getScheme, getServerName, getServerPort, getUserAgent, getUserPrincipal, getWindowID, getWindowState, isPortletModeAllowed, isRequestedSessionIdValid, isSecure, isUserInRole, isWindowStateAllowed, removeAttribute, setAttribute, setRequest
getWrapped, setWrapped
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getPortletMode, getResponseContentType, getResponseContentTypes, getWindowState
getCharacterEncoding, getContentLength, getContentLengthLong, getContentType, getMethod, getPart, getParts, getPortletInputStream, getReader, setCharacterEncoding
getAttribute, getAttributeNames, getAuthType, getContextPath, getCookies, getLocale, getLocales, getParameter, getParameterMap, getParameterNames, getParameterValues, getPortalContext, getPortletContext, getPortletSession, getPortletSession, getPreferences, getPrivateParameterMap, getProperties, getProperty, getPropertyNames, getPublicParameterMap, getRemoteUser, getRequestedSessionId, getScheme, getServerName, getServerPort, getUserAgent, getUserPrincipal, getWindowID, isPortletModeAllowed, isRequestedSessionIdValid, isSecure, isUserInRole, isWindowStateAllowed, removeAttribute, setAttribute
getRenderParameters
public ResourceRequestWrapper(ResourceRequest request)
ResourceRequest
adaptor
wrapping the given request object.request
- the resource request to wrapIllegalArgumentException
- if the request is null
public ResourceRequest getRequest()
getRequest
in class ClientDataRequestWrapper
public void setRequest(ResourceRequest request)
request
- the request to setIllegalArgumentException
- if the request is null.public String getETag()
ResourceRequest
null
if no cached response exists.
This call returns the same value as
ResourceRequest.getProperty(ResourceRequest.ETAG)
.
getETag
in interface ResourceRequest
null
if no cached response exists.public String getResourceID()
ResourceRequest
null
if no resource ID was set on the URL.getResourceID
in interface ResourceRequest
null
if no resource ID was set on the URL.@Deprecated public Map<String,String[]> getPrivateRenderParameterMap()
ResourceRequest
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
.
getPrivateRenderParameterMap
in interface ResourceRequest
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[]
).public String getCacheability()
ResourceRequest
Possible return values are:
ResourceURL.FULL, ResourceURL.PORTLET
or ResourceURL.PAGE
.
getCacheability
in interface ResourceRequest
public ResourceParameters getResourceParameters()
ResourceRequest
Resource parameters are additional portlet parameters added to the URL triggering the request that extend the state information provided by the render parameters.
PortletParameters
provides a description of the parameter concept.
getResourceParameters
in interface ResourceRequest
ResourceParameters
object representing
the resource parametersPortletParameters
,
MutableResourceParameters
,
ResourceURL
public PortletAsyncContext startPortletAsync() throws IllegalStateException
ResourceRequest
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 code>ServletRequest object
obtained from the AsyncContext
under the names
javax.portlet.request
and javax.portlet.response
, respectively.
The PortletConfig
object will be made available on the
ServletRequest
under the name
javax.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.
startPortletAsync
in interface ResourceRequest
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 closedServletRequest.startAsync()
,
AsyncContext
,
ResourceRequest.isAsyncStarted()
,
ResourceRequest.getDispatcherType()
,
ResourceFilter
public PortletAsyncContext startPortletAsync(ResourceRequest request, ResourceResponse response) throws IllegalStateException
ResourceRequest
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 code>ServletRequest object
obtained from the AsyncContext
under the names
javax.portlet.request
and javax.portlet.response
, respectively.
The PortletConfig
object will be made available on the
ServletRequest
under the name
javax.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.
startPortletAsync
in interface ResourceRequest
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 closedServletRequest.startAsync()
,
AsyncContext
,
ResourceRequest.isAsyncStarted()
,
ResourceRequest.getDispatcherType()
,
ResourceFilter
public boolean isAsyncStarted()
ResourceRequest
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
.
isAsyncStarted
in interface ResourceRequest
true
if asynchronous mode has been startedResourceRequest.startPortletAsync()
,
ResourceRequest.startPortletAsync(ResourceRequest, ResourceResponse)
public boolean isAsyncSupported()
ResourceRequest
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.
isAsyncSupported
in interface ResourceRequest
true
if this request supports asynchronous operationpublic PortletAsyncContext getPortletAsyncContext()
ResourceRequest
AsyncContext
that was created or reinitialized by the most
recent invocation of startAsync()
or
startAsync(ResourceRequest,ResourceResponse)
on this request.
getPortletAsyncContext
in interface ResourceRequest
AsyncContext
(re)initialized by the most recent startAsync
method invocationServletRequest.startAsync()
,
AsyncContext
public javax.servlet.DispatcherType getDispatcherType()
ResourceRequest
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
.
getDispatcherType
in interface ResourceRequest
DispatcherType
Java Portlet 3.0 API Specification. See the Copyright and License provided with this distribution. Use is subject to license terms.