## org.exist.http.servlets
Class HttpServletRequestWrapper

    java.lang.Object
      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 <adam.retter@devon.gov.uk>

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

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

  Returns:
    String representation of HttpServletRequestWrapper

Copyright (C) Wolfgang Meier. All rights reserved.