org.exist.http.servlets
Class HttpServletRequestWrapper

java.lang.Object
  extended by org.exist.http.servlets.HttpServletRequestWrapper
All Implemented Interfaces:
javax.servlet.http.HttpServletRequest, javax.servlet.ServletRequest

public class HttpServletRequestWrapper
extends java.lang.Object
implements javax.servlet.http.HttpServletRequest

A wrapper for HttpServletRequest - differentiates between POST parameters in the URL or Content Body - keeps content Body of the POST request, making it available many times through getContentBodyInputStream() . A method of differentiating between POST parameters in the URL or Content Body of the request was needed. The standard javax.servlet.http.HTTPServletRequest does not differentiate between URL or content body parameters, this class does, the type is indicated in RequestParameter.type. To differentiate manually we need to read the URL (getQueryString()) and the Content body (getInputStream()), this is problematic with the standard javax.servlet.http.HTTPServletRequest as parameter functions (getParameterMap(), getParameterNames(), getParameter(String), getParameterValues(String)) affect the input stream functions (getInputStream(), getReader()) and vice versa. This class solves this by reading the Request Parameters initially from both the URL and the Content Body of the Request and storing them in the private variable params for later use.

Version:
1.1
Author:
Adam Retter

Field Summary
 
Fields inherited from interface javax.servlet.http.HttpServletRequest
BASIC_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH, FORM_AUTH
 
Constructor Summary
HttpServletRequestWrapper(javax.servlet.http.HttpServletRequest request, java.lang.String formEncoding)
          HttpServletRequestWrapper Constructor
 
Method Summary
 java.lang.Object getAttribute(java.lang.String name)
           
 java.util.Enumeration getAttributeNames()
           
 java.lang.String getAuthType()
           
 java.lang.String getCharacterEncoding()
           
 java.io.InputStream getContentBodyInputStream()
          making the content Body of the POST request available many times, for processing by , e.g.
 int getContentLength()
           
 java.lang.String getContentType()
           
 java.lang.String getContextPath()
           
 javax.servlet.http.Cookie[] getCookies()
           
 long getDateHeader(java.lang.String name)
           
 java.lang.String getHeader(java.lang.String name)
           
 java.util.Enumeration getHeaderNames()
           
 java.util.Enumeration getHeaders(java.lang.String name)
           
 javax.servlet.ServletInputStream getInputStream()
           
 int getIntHeader(java.lang.String name)
           
 java.lang.String getLocalAddr()
           
 java.util.Locale getLocale()
           
 java.util.Enumeration getLocales()
           
 java.lang.String getLocalName()
           
 int getLocalPort()
           
 java.lang.String getMethod()
           
 java.lang.String getParameter(java.lang.String name)
          get the value of a Request parameter by its name from the local parameter store
 java.util.Map getParameterMap()
          get a Map of Request parameters (keys and values) from the local parameter store
 java.util.Enumeration getParameterNames()
          get the names of the Request parameters from the local parameter store
 java.lang.String[] getParameterValues(java.lang.String name)
          get the values of the Request parameter indicated by name from the local parameter store
 java.lang.String getPathInfo()
           
 java.lang.String getPathTranslated()
           
 java.lang.String getProtocol()
           
 java.lang.String getQueryString()
           
 java.io.BufferedReader getReader()
           
 java.lang.String getRealPath(java.lang.String path)
           
 java.lang.String getRemoteAddr()
           
 java.lang.String getRemoteHost()
           
 int getRemotePort()
           
 java.lang.String getRemoteUser()
           
 javax.servlet.RequestDispatcher getRequestDispatcher(java.lang.String name)
           
 java.lang.String getRequestedSessionId()
           
 java.lang.String getRequestURI()
           
 java.lang.StringBuffer getRequestURL()
           
 java.lang.String getScheme()
           
 java.lang.String getServerName()
           
 int getServerPort()
           
 java.lang.String getServletPath()
           
 javax.servlet.http.HttpSession getSession()
           
 javax.servlet.http.HttpSession getSession(boolean create)
           
 java.security.Principal getUserPrincipal()
           
 boolean isRequestedSessionIdFromCookie()
           
 boolean isRequestedSessionIdFromUrl()
           
 boolean isRequestedSessionIdFromURL()
           
 boolean isRequestedSessionIdValid()
           
 boolean isSecure()
           
 boolean isUserInRole(java.lang.String name)
           
 void removeAttribute(java.lang.String name)
           
 void setAttribute(java.lang.String name, java.lang.Object o)
           
 void setCharacterEncoding(java.lang.String env)
           
 java.lang.String toString()
          Similar to javax.servlet.http.HttpServletRequest.toString() , except it includes output of the Request parameters from the Request's Content Body
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

HttpServletRequestWrapper

public HttpServletRequestWrapper(javax.servlet.http.HttpServletRequest request,
                                 java.lang.String formEncoding)
                          throws java.io.UnsupportedEncodingException
HttpServletRequestWrapper Constructor

Parameters:
request - The HttpServletRequest to wrap
formEncoding - The encoding to use
Throws:
java.io.UnsupportedEncodingException
Method Detail

getAuthType

public java.lang.String getAuthType()
Specified by:
getAuthType in interface javax.servlet.http.HttpServletRequest
See Also:
HttpServletRequest.getAuthType()

getCookies

public javax.servlet.http.Cookie[] getCookies()
Specified by:
getCookies in interface javax.servlet.http.HttpServletRequest
See Also:
HttpServletRequest.getCookies()

getDateHeader

public long getDateHeader(java.lang.String name)
Specified by:
getDateHeader in interface javax.servlet.http.HttpServletRequest
See Also:
HttpServletRequest.getDateHeader(java.lang.String)

getHeader

public java.lang.String getHeader(java.lang.String name)
Specified by:
getHeader in interface javax.servlet.http.HttpServletRequest
See Also:
HttpServletRequest.getHeader(java.lang.String)

getHeaders

public java.util.Enumeration getHeaders(java.lang.String name)
Specified by:
getHeaders in interface javax.servlet.http.HttpServletRequest
See Also:
HttpServletRequest.getHeaders(java.lang.String)

getHeaderNames

public java.util.Enumeration getHeaderNames()
Specified by:
getHeaderNames in interface javax.servlet.http.HttpServletRequest
See Also:
HttpServletRequest.getHeaderNames()

getIntHeader

public int getIntHeader(java.lang.String name)
Specified by:
getIntHeader in interface javax.servlet.http.HttpServletRequest
See Also:
HttpServletRequest.getIntHeader(java.lang.String)

getMethod

public java.lang.String getMethod()
Specified by:
getMethod in interface javax.servlet.http.HttpServletRequest
See Also:
HttpServletRequest.getMethod()

getPathInfo

public java.lang.String getPathInfo()
Specified by:
getPathInfo in interface javax.servlet.http.HttpServletRequest
See Also:
HttpServletRequest.getPathInfo()

getPathTranslated

public java.lang.String getPathTranslated()
Specified by:
getPathTranslated in interface javax.servlet.http.HttpServletRequest
See Also:
HttpServletRequest.getPathTranslated()

getContextPath

public java.lang.String getContextPath()
Specified by:
getContextPath in interface javax.servlet.http.HttpServletRequest
See Also:
HttpServletRequest.getContextPath()

getQueryString

public java.lang.String getQueryString()
Specified by:
getQueryString in interface javax.servlet.http.HttpServletRequest
See Also:
HttpServletRequest.getQueryString()

getRemoteUser

public java.lang.String getRemoteUser()
Specified by:
getRemoteUser in interface javax.servlet.http.HttpServletRequest
See Also:
HttpServletRequest.getRemoteUser()

isUserInRole

public boolean isUserInRole(java.lang.String name)
Specified by:
isUserInRole in interface javax.servlet.http.HttpServletRequest
See Also:
HttpServletRequest.isUserInRole(java.lang.String)

getUserPrincipal

public java.security.Principal getUserPrincipal()
Specified by:
getUserPrincipal in interface javax.servlet.http.HttpServletRequest
See Also:
HttpServletRequest.getUserPrincipal()

getRequestedSessionId

public java.lang.String getRequestedSessionId()
Specified by:
getRequestedSessionId in interface javax.servlet.http.HttpServletRequest
See Also:
HttpServletRequest.getRequestedSessionId()

getRequestURI

public java.lang.String getRequestURI()
Specified by:
getRequestURI in interface javax.servlet.http.HttpServletRequest
See Also:
HttpServletRequest.getRequestURI()

getRequestURL

public java.lang.StringBuffer getRequestURL()
Specified by:
getRequestURL in interface javax.servlet.http.HttpServletRequest
See Also:
HttpServletRequest.getRequestURL()

getServletPath

public java.lang.String getServletPath()
Specified by:
getServletPath in interface javax.servlet.http.HttpServletRequest
See Also:
HttpServletRequest.getServletPath()

getSession

public javax.servlet.http.HttpSession getSession(boolean create)
Specified by:
getSession in interface javax.servlet.http.HttpServletRequest
See Also:
HttpServletRequest.getSession(boolean)

getSession

public javax.servlet.http.HttpSession getSession()
Specified by:
getSession in interface javax.servlet.http.HttpServletRequest
See Also:
HttpServletRequest.getSession(boolean)

isRequestedSessionIdValid

public boolean isRequestedSessionIdValid()
Specified by:
isRequestedSessionIdValid in interface javax.servlet.http.HttpServletRequest
See Also:
HttpServletRequest.isRequestedSessionIdValid()

isRequestedSessionIdFromCookie

public boolean isRequestedSessionIdFromCookie()
Specified by:
isRequestedSessionIdFromCookie in interface javax.servlet.http.HttpServletRequest
See Also:
HttpServletRequest.isRequestedSessionIdFromCookie()

isRequestedSessionIdFromURL

public boolean isRequestedSessionIdFromURL()
Specified by:
isRequestedSessionIdFromURL in interface javax.servlet.http.HttpServletRequest
See Also:
HttpServletRequest.isRequestedSessionIdFromURL()

isRequestedSessionIdFromUrl

public boolean isRequestedSessionIdFromUrl()
Specified by:
isRequestedSessionIdFromUrl in interface javax.servlet.http.HttpServletRequest
See Also:
HttpServletRequest.isRequestedSessionIdFromUrl()

getAttribute

public java.lang.Object getAttribute(java.lang.String name)
Specified by:
getAttribute in interface javax.servlet.ServletRequest
See Also:
ServletRequest.getAttribute(java.lang.String)

getAttributeNames

public java.util.Enumeration getAttributeNames()
Specified by:
getAttributeNames in interface javax.servlet.ServletRequest
See Also:
ServletRequest.getAttributeNames()

getCharacterEncoding

public java.lang.String getCharacterEncoding()
Specified by:
getCharacterEncoding in interface javax.servlet.ServletRequest
See Also:
ServletRequest.getCharacterEncoding()

setCharacterEncoding

public void setCharacterEncoding(java.lang.String env)
                          throws java.io.UnsupportedEncodingException
Specified by:
setCharacterEncoding in interface javax.servlet.ServletRequest
Throws:
java.io.UnsupportedEncodingException
See Also:
ServletRequest.setCharacterEncoding(java.lang.String)

getContentLength

public int getContentLength()
Specified by:
getContentLength in interface javax.servlet.ServletRequest
See Also:
ServletRequest.getContentLength()

getContentType

public java.lang.String getContentType()
Specified by:
getContentType in interface javax.servlet.ServletRequest
See Also:
ServletRequest.getContentType()

getInputStream

public javax.servlet.ServletInputStream getInputStream()
                                                throws java.io.IOException
Specified by:
getInputStream in interface javax.servlet.ServletRequest
Throws:
java.io.IOException
See Also:
ServletRequest.getInputStream()

getContentBodyInputStream

public java.io.InputStream getContentBodyInputStream()
                                              throws java.io.IOException
making the content Body of the POST request available many times, for processing by , e.g. Rpc processor .

Throws:
java.io.IOException

getParameter

public java.lang.String getParameter(java.lang.String name)
get the value of a Request parameter by its name from the local parameter store

Specified by:
getParameter in interface javax.servlet.ServletRequest
Parameters:
name - The name of the Request parameter to get the value for
Returns:
The value of the Request parameter with the specified name

getParameterNames

public java.util.Enumeration getParameterNames()
get the names of the Request parameters from the local parameter store

Specified by:
getParameterNames in interface javax.servlet.ServletRequest
Returns:
An enumeration of string values representing the Request parameters names

getParameterValues

public java.lang.String[] getParameterValues(java.lang.String name)
get the values of the Request parameter indicated by name from the local parameter store

Specified by:
getParameterValues in interface javax.servlet.ServletRequest
Parameters:
name - The name of the Request parameter to get the values for
Returns:
The String array of the Request parameter's values

getParameterMap

public java.util.Map getParameterMap()
get a Map of Request parameters (keys and values) from the local parameter store

Specified by:
getParameterMap in interface javax.servlet.ServletRequest
Returns:
Map of Request Parameters. Key is of type String and Value is of type String[].

getProtocol

public java.lang.String getProtocol()
Specified by:
getProtocol in interface javax.servlet.ServletRequest
See Also:
ServletRequest.getProtocol()

getScheme

public java.lang.String getScheme()
Specified by:
getScheme in interface javax.servlet.ServletRequest
See Also:
ServletRequest.getScheme()

getServerName

public java.lang.String getServerName()
Specified by:
getServerName in interface javax.servlet.ServletRequest
See Also:
ServletRequest.getServerName()

getServerPort

public int getServerPort()
Specified by:
getServerPort in interface javax.servlet.ServletRequest
See Also:
ServletRequest.getServerPort()

getReader

public java.io.BufferedReader getReader()
                                 throws java.io.IOException
Specified by:
getReader in interface javax.servlet.ServletRequest
Throws:
java.io.IOException

getRemoteAddr

public java.lang.String getRemoteAddr()
Specified by:
getRemoteAddr in interface javax.servlet.ServletRequest
See Also:
ServletRequest.getRemoteAddr()

getRemoteHost

public java.lang.String getRemoteHost()
Specified by:
getRemoteHost in interface javax.servlet.ServletRequest
See Also:
ServletRequest.getRemoteHost()

setAttribute

public void setAttribute(java.lang.String name,
                         java.lang.Object o)
Specified by:
setAttribute in interface javax.servlet.ServletRequest
See Also:
ServletRequest.setAttribute(java.lang.String, java.lang.Object)

removeAttribute

public void removeAttribute(java.lang.String name)
Specified by:
removeAttribute in interface javax.servlet.ServletRequest
See Also:
ServletRequest.removeAttribute(java.lang.String)

getLocale

public java.util.Locale getLocale()
Specified by:
getLocale in interface javax.servlet.ServletRequest
See Also:
ServletRequest.getLocale()

getLocales

public java.util.Enumeration getLocales()
Specified by:
getLocales in interface javax.servlet.ServletRequest
See Also:
ServletRequest.getLocales()

isSecure

public boolean isSecure()
Specified by:
isSecure in interface javax.servlet.ServletRequest
See Also:
ServletRequest.isSecure()

getRequestDispatcher

public javax.servlet.RequestDispatcher getRequestDispatcher(java.lang.String name)
Specified by:
getRequestDispatcher in interface javax.servlet.ServletRequest
See Also:
ServletRequest.getRequestDispatcher(java.lang.String)

getRealPath

public java.lang.String getRealPath(java.lang.String path)
Specified by:
getRealPath in interface javax.servlet.ServletRequest
See Also:
ServletRequest.getRealPath(java.lang.String)

getRemotePort

public int getRemotePort()
Specified by:
getRemotePort in interface javax.servlet.ServletRequest
See Also:
ServletRequest.getRemotePort()

getLocalName

public java.lang.String getLocalName()
Specified by:
getLocalName in interface javax.servlet.ServletRequest
See Also:
ServletRequest.getLocalName()

getLocalAddr

public java.lang.String getLocalAddr()
Specified by:
getLocalAddr in interface javax.servlet.ServletRequest
See Also:
ServletRequest.getLocalAddr()

getLocalPort

public int getLocalPort()
Specified by:
getLocalPort in interface javax.servlet.ServletRequest
See Also:
ServletRequest.getLocalPort()

toString

public java.lang.String toString()
Similar to javax.servlet.http.HttpServletRequest.toString() , except it includes output of the Request parameters from the Request's Content Body

Overrides:
toString in class java.lang.Object
Returns:
String representation of HttpServletRequestWrapper


Copyright (C) Wolfgang Meier. All rights reserved.