javax.servlet
Class ServletRequestWrapper

java.lang.Object
  extended by javax.servlet.ServletRequestWrapper
All Implemented Interfaces:
ServletRequest
Direct Known Subclasses:
HttpServletRequestWrapper

public class ServletRequestWrapper
extends java.lang.Object
implements ServletRequest

Provides a convenient implementation of the ServletRequest interface that can be subclassed by developers wishing to adapt the request to a Servlet. This class implements the Wrapper or Decorator pattern. Methods default to calling through to the wrapped request object.

Since:
v 2.3
See Also:
ServletRequest

Constructor Summary
ServletRequestWrapper(ServletRequest request)
          Creates a ServletRequest adaptor wrapping the given request object.
 
Method Summary
 void complete()
          Complete a suspended request.
 java.lang.Object getAttribute(java.lang.String name)
          The default behavior of this method is to call getAttribute(String name) on the wrapped request object.
 java.util.Enumeration getAttributeNames()
          The default behavior of this method is to return getAttributeNames() on the wrapped request object.
 java.lang.String getCharacterEncoding()
          The default behavior of this method is to return getCharacterEncoding() on the wrapped request object.
 int getContentLength()
          The default behavior of this method is to return getContentLength() on the wrapped request object.
 java.lang.String getContentType()
          The default behavior of this method is to return getContentType() on the wrapped request object.
 ServletInputStream getInputStream()
          The default behavior of this method is to return getInputStream() on the wrapped request object.
 java.lang.String getLocalAddr()
          The default behavior of this method is to return getLocalAddr() on the wrapped request object.
 java.util.Locale getLocale()
          The default behavior of this method is to return getLocale() on the wrapped request object.
 java.util.Enumeration getLocales()
          The default behavior of this method is to return getLocales() on the wrapped request object.
 java.lang.String getLocalName()
          The default behavior of this method is to return getLocalName() on the wrapped request object.
 int getLocalPort()
          The default behavior of this method is to return getLocalPort() on the wrapped request object.
 java.lang.String getParameter(java.lang.String name)
          The default behavior of this method is to return getParameter(String name) on the wrapped request object.
 java.util.Map getParameterMap()
          The default behavior of this method is to return getParameterMap() on the wrapped request object.
 java.util.Enumeration getParameterNames()
          The default behavior of this method is to return getParameterNames() on the wrapped request object.
 java.lang.String[] getParameterValues(java.lang.String name)
          The default behavior of this method is to return getParameterValues(String name) on the wrapped request object.
 java.lang.String getProtocol()
          The default behavior of this method is to return getProtocol() on the wrapped request object.
 java.io.BufferedReader getReader()
          The default behavior of this method is to return getReader() on the wrapped request object.
 java.lang.String getRealPath(java.lang.String path)
          The default behavior of this method is to return getRealPath(String path) on the wrapped request object.
 java.lang.String getRemoteAddr()
          The default behavior of this method is to return getRemoteAddr() on the wrapped request object.
 java.lang.String getRemoteHost()
          The default behavior of this method is to return getRemoteHost() on the wrapped request object.
 int getRemotePort()
          The default behavior of this method is to return getRemotePort() on the wrapped request object.
 ServletRequest getRequest()
          Return the wrapped request object.
 RequestDispatcher getRequestDispatcher(java.lang.String path)
          The default behavior of this method is to return getRequestDispatcher(String path) on the wrapped request object.
 java.lang.String getScheme()
          The default behavior of this method is to return getScheme() on the wrapped request object.
 java.lang.String getServerName()
          The default behavior of this method is to return getServerName() on the wrapped request object.
 int getServerPort()
          The default behavior of this method is to return getServerPort() on the wrapped request object.
 ServletContext getServletContext()
          Gets the servlet context to which this servlet request was last dispatched.
 ServletResponse getServletResponse()
          Gets the servlet response with which this servlet request has been associated.
 boolean isInitial()
           
 boolean isResumed()
           
 boolean isSecure()
          The default behavior of this method is to return isSecure() on the wrapped request object.
 boolean isSuspended()
           
 boolean isTimeout()
           
 void removeAttribute(java.lang.String name)
          The default behavior of this method is to call removeAttribute(String name) on the wrapped request object.
 void resume()
          Resume a suspended request.
 void setAttribute(java.lang.String name, java.lang.Object o)
          The default behavior of this method is to return setAttribute(String name, Object o) on the wrapped request object.
 void setCharacterEncoding(java.lang.String enc)
          The default behavior of this method is to set the character encoding on the wrapped request object.
 void setRequest(ServletRequest request)
          Sets the request object being wrapped.
 void suspend()
          Suspend the processing of the request and associated ServletResponse.
 void suspend(long timeoutMs)
          Suspend the processing of the request and associated ServletResponse.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ServletRequestWrapper

public ServletRequestWrapper(ServletRequest request)
Creates a ServletRequest adaptor wrapping the given request object.

Throws:
java.lang.IllegalArgumentException - if the request is null
Method Detail

getRequest

public ServletRequest getRequest()
Return the wrapped request object.


setRequest

public void setRequest(ServletRequest request)
Sets the request object being wrapped.

Throws:
java.lang.IllegalArgumentException - if the request is null.

getAttribute

public java.lang.Object getAttribute(java.lang.String name)
The default behavior of this method is to call getAttribute(String name) on the wrapped request object.

Specified by:
getAttribute in interface ServletRequest
Parameters:
name - a String specifying the name of the attribute
Returns:
an Object containing the value of the attribute, or null if the attribute does not exist

getAttributeNames

public java.util.Enumeration getAttributeNames()
The default behavior of this method is to return getAttributeNames() on the wrapped request object.

Specified by:
getAttributeNames in interface ServletRequest
Returns:
an Enumeration of strings containing the names of the request's attributes

getCharacterEncoding

public java.lang.String getCharacterEncoding()
The default behavior of this method is to return getCharacterEncoding() on the wrapped request object.

Specified by:
getCharacterEncoding in interface ServletRequest
Returns:
a String containing the name of the character encoding, or null if the request does not specify a character encoding

setCharacterEncoding

public void setCharacterEncoding(java.lang.String enc)
                          throws java.io.UnsupportedEncodingException
The default behavior of this method is to set the character encoding on the wrapped request object.

Specified by:
setCharacterEncoding in interface ServletRequest
Parameters:
enc - a String containing the name of the character encoding.
Throws:
java.io.UnsupportedEncodingException - if this is not a valid encoding

getContentLength

public int getContentLength()
The default behavior of this method is to return getContentLength() on the wrapped request object.

Specified by:
getContentLength in interface ServletRequest
Returns:
an integer containing the length of the request body or -1 if the length is not known

getContentType

public java.lang.String getContentType()
The default behavior of this method is to return getContentType() on the wrapped request object.

Specified by:
getContentType in interface ServletRequest
Returns:
a String containing the name of the MIME type of the request, or null if the type is not known

getInputStream

public ServletInputStream getInputStream()
                                  throws java.io.IOException
The default behavior of this method is to return getInputStream() on the wrapped request object.

Specified by:
getInputStream in interface ServletRequest
Returns:
a ServletInputStream object containing the body of the request
Throws:
java.io.IOException - if an input or output exception occurred

getParameter

public java.lang.String getParameter(java.lang.String name)
The default behavior of this method is to return getParameter(String name) on the wrapped request object.

Specified by:
getParameter in interface ServletRequest
Parameters:
name - a String specifying the name of the parameter
Returns:
a String representing the single value of the parameter
See Also:
ServletRequest.getParameterValues(java.lang.String)

getParameterMap

public java.util.Map getParameterMap()
The default behavior of this method is to return getParameterMap() on the wrapped request object.

Specified by:
getParameterMap in interface ServletRequest
Returns:
an immutable java.util.Map containing parameter names as keys and parameter values as map values. The keys in the parameter map are of type String. The values in the parameter map are of type String array.

getParameterNames

public java.util.Enumeration getParameterNames()
The default behavior of this method is to return getParameterNames() on the wrapped request object.

Specified by:
getParameterNames in interface ServletRequest
Returns:
an Enumeration of String objects, each String containing the name of a request parameter; or an empty Enumeration if the request has no parameters

getParameterValues

public java.lang.String[] getParameterValues(java.lang.String name)
The default behavior of this method is to return getParameterValues(String name) on the wrapped request object.

Specified by:
getParameterValues in interface ServletRequest
Parameters:
name - a String containing the name of the parameter whose value is requested
Returns:
an array of String objects containing the parameter's values
See Also:
ServletRequest.getParameter(java.lang.String)

getProtocol

public java.lang.String getProtocol()
The default behavior of this method is to return getProtocol() on the wrapped request object.

Specified by:
getProtocol in interface ServletRequest
Returns:
a String containing the protocol name and version number

getScheme

public java.lang.String getScheme()
The default behavior of this method is to return getScheme() on the wrapped request object.

Specified by:
getScheme in interface ServletRequest
Returns:
a String containing the name of the scheme used to make this request

getServerName

public java.lang.String getServerName()
The default behavior of this method is to return getServerName() on the wrapped request object.

Specified by:
getServerName in interface ServletRequest
Returns:
a String containing the name of the server

getServerPort

public int getServerPort()
The default behavior of this method is to return getServerPort() on the wrapped request object.

Specified by:
getServerPort in interface ServletRequest
Returns:
an integer specifying the port number

getReader

public java.io.BufferedReader getReader()
                                 throws java.io.IOException
The default behavior of this method is to return getReader() on the wrapped request object.

Specified by:
getReader in interface ServletRequest
Returns:
a BufferedReader containing the body of the request
Throws:
java.io.IOException - if an input or output exception occurred
See Also:
ServletRequest.getInputStream()

getRemoteAddr

public java.lang.String getRemoteAddr()
The default behavior of this method is to return getRemoteAddr() on the wrapped request object.

Specified by:
getRemoteAddr in interface ServletRequest
Returns:
a String containing the IP address of the client that sent the request

getRemoteHost

public java.lang.String getRemoteHost()
The default behavior of this method is to return getRemoteHost() on the wrapped request object.

Specified by:
getRemoteHost in interface ServletRequest
Returns:
a String containing the fully qualified name of the client

setAttribute

public void setAttribute(java.lang.String name,
                         java.lang.Object o)
The default behavior of this method is to return setAttribute(String name, Object o) on the wrapped request object.

Specified by:
setAttribute in interface ServletRequest
Parameters:
name - a String specifying the name of the attribute
o - the Object to be stored

removeAttribute

public void removeAttribute(java.lang.String name)
The default behavior of this method is to call removeAttribute(String name) on the wrapped request object.

Specified by:
removeAttribute in interface ServletRequest
Parameters:
name - a String specifying the name of the attribute to remove

getLocale

public java.util.Locale getLocale()
The default behavior of this method is to return getLocale() on the wrapped request object.

Specified by:
getLocale in interface ServletRequest
Returns:
the preferred Locale for the client

getLocales

public java.util.Enumeration getLocales()
The default behavior of this method is to return getLocales() on the wrapped request object.

Specified by:
getLocales in interface ServletRequest
Returns:
an Enumeration of preferred Locale objects for the client

isSecure

public boolean isSecure()
The default behavior of this method is to return isSecure() on the wrapped request object.

Specified by:
isSecure in interface ServletRequest
Returns:
a boolean indicating if the request was made using a secure channel

getRequestDispatcher

public RequestDispatcher getRequestDispatcher(java.lang.String path)
The default behavior of this method is to return getRequestDispatcher(String path) on the wrapped request object.

Specified by:
getRequestDispatcher in interface ServletRequest
Parameters:
path - a String specifying the pathname to the resource. If it is relative, it must be relative against the current servlet.
Returns:
a RequestDispatcher object that acts as a wrapper for the resource at the specified path, or null if the servlet container cannot return a RequestDispatcher
See Also:
RequestDispatcher, ServletContext.getRequestDispatcher(java.lang.String)

getRealPath

public java.lang.String getRealPath(java.lang.String path)
The default behavior of this method is to return getRealPath(String path) on the wrapped request object.

Specified by:
getRealPath in interface ServletRequest

getRemotePort

public int getRemotePort()
The default behavior of this method is to return getRemotePort() on the wrapped request object.

Specified by:
getRemotePort in interface ServletRequest
Returns:
an integer specifying the port number
Since:
2.4

getLocalName

public java.lang.String getLocalName()
The default behavior of this method is to return getLocalName() on the wrapped request object.

Specified by:
getLocalName in interface ServletRequest
Returns:
a String containing the host name of the IP on which the request was received.
Since:
2.4

getLocalAddr

public java.lang.String getLocalAddr()
The default behavior of this method is to return getLocalAddr() on the wrapped request object.

Specified by:
getLocalAddr in interface ServletRequest
Returns:
a String containing the IP address on which the request was received.
Since:
2.4

getLocalPort

public int getLocalPort()
The default behavior of this method is to return getLocalPort() on the wrapped request object.

Specified by:
getLocalPort in interface ServletRequest
Returns:
an integer specifying the port number
Since:
2.4

complete

public void complete()
              throws java.io.IOException
Description copied from interface: ServletRequest
Complete a suspended request.

This method can be called by any thread that has been passed a reference to a suspended request. When a request is completed, the associated response object commited and flushed. The request is not redispatched.

If complete is called before a suspended request is returned to the container (ie the thread that called ServletRequest.suspend(long) is still within the filter chain and/or servlet service method), then the complete does not take effect until the call to the filter chain and/or servlet returns to the container. In this case both ServletRequest.isSuspended() and ServletRequest.isResumed() return true.

Once complete has been called and any thread calling the filter chain and/or servlet chain has returned to the container, the request lifecycle is complete. The container is able to recycle request objects, so it is not valid hold a request reference after the end of the life cycle or to call any request methods.

Specified by:
complete in interface ServletRequest
Throws:
java.io.IOException
See Also:
ServletRequest.complete()

isInitial

public boolean isInitial()
Specified by:
isInitial in interface ServletRequest
Returns:
See Also:
ServletRequest.isInitial()

isResumed

public boolean isResumed()
Specified by:
isResumed in interface ServletRequest
Returns:
See Also:
ServletRequest.isResumed()

isSuspended

public boolean isSuspended()
Specified by:
isSuspended in interface ServletRequest
Returns:
See Also:
ServletRequest.isSuspended()

isTimeout

public boolean isTimeout()
Specified by:
isTimeout in interface ServletRequest
Returns:
See Also:
ServletRequest.isTimeout()

resume

public void resume()
Description copied from interface: ServletRequest
Resume a suspended request.

This method can be called by any thread that has been passed a reference to a suspended request. When called the request is redispatched to the normal filter chain and servlet processing.

If resume is called before a suspended request is returned to the container (ie the thread that called ServletRequest.suspend(long) is still within the filter chain and/or servlet service method), then the resume does not take effect until the call to the filter chain and/or servlet returns to the container. In this case both ServletRequest.isSuspended() and ServletRequest.isResumed() return true.

Multiple calls to resume are ignored

Specified by:
resume in interface ServletRequest
See Also:
ServletRequest.resume()

suspend

public void suspend()
Description copied from interface: ServletRequest
Suspend the processing of the request and associated ServletResponse.

Acts as a call to ServletRequest.suspend(long) but with a container supplied timeout. The timeout the container will use may be obtained or set as a Long context attribute with the name "javax.servlet.suspendTimeoutMs"

Specified by:
suspend in interface ServletRequest
See Also:
ServletRequest.suspend()

suspend

public void suspend(long timeoutMs)
Description copied from interface: ServletRequest
Suspend the processing of the request and associated ServletResponse.

After this method has been called, the lifecycle of the request will be extended beyond the return to the container from the Servlet.service(ServletRequest, ServletResponse) method and Filter.doFilter(ServletRequest, ServletResponse, FilterChain) calls. If a request is suspended, then the container will not commit the associated response when the call to the filter chain and/or servlet service method returns to the container. Any exceptions thrown to the container by a filter chain and/or servlet for a suspended requests are silently ignored.

When the thread calling the filter chain and/or servlet has returned to the container with a suspended request, the thread is freed for other tasks and the request is held pending either:

After any of the events listed above, the suspended request will be redispatched via the filter and servlet processing.

If a request is already suspended, any subsequent calls to suspend will set the timeout to the minimum of the previous timeout and the newly passed timeout

Suspend may only be called by a thread that is within the service calling stack of Filter.doFilter(ServletRequest, ServletResponse, FilterChain) and/or Servlet.service(ServletRequest, ServletResponse). A request that has been dispatched for error handling may not be suspended.

Specified by:
suspend in interface ServletRequest
Parameters:
timeoutMs -
See Also:
ServletRequest.suspend(long)

getServletContext

public ServletContext getServletContext()
Description copied from interface: ServletRequest
Gets the servlet context to which this servlet request was last dispatched.

Specified by:
getServletContext in interface ServletRequest
Returns:
See Also:
ServletRequest.getServletContext()

getServletResponse

public ServletResponse getServletResponse()
Description copied from interface: ServletRequest
Gets the servlet response with which this servlet request has been associated.

Specified by:
getServletResponse in interface ServletRequest
Returns:
See Also:
ServletRequest.getServletResponse()


Copyright © 1995-2008 Mort Bay Consulting. All Rights Reserved.