org.infohazard.maverick.util
Class FakeHttpServletResponse

java.lang.Object
  |
  +--javax.servlet.ServletResponseWrapper
        |
        +--javax.servlet.http.HttpServletResponseWrapper
              |
              +--org.infohazard.maverick.util.FakeHttpServletResponse
All Implemented Interfaces:
javax.servlet.http.HttpServletResponse, javax.servlet.ServletResponse

public class FakeHttpServletResponse
extends javax.servlet.http.HttpServletResponseWrapper

Stores data written to the response and allows it to be obtained later.


Field Summary
protected  Buffer buffer
          Actually holds all the output data.
protected  java.lang.String charset
          We need to track the charset which is applied to the response using setContentType so that we can intelligently convert between streams and readers.
 
Fields inherited from interface javax.servlet.http.HttpServletResponse
SC_ACCEPTED, SC_BAD_GATEWAY, SC_BAD_REQUEST, SC_CONFLICT, SC_CONTINUE, SC_CREATED, SC_EXPECTATION_FAILED, SC_FORBIDDEN, SC_GATEWAY_TIMEOUT, SC_GONE, SC_HTTP_VERSION_NOT_SUPPORTED, SC_INTERNAL_SERVER_ERROR, SC_LENGTH_REQUIRED, SC_METHOD_NOT_ALLOWED, SC_MOVED_PERMANENTLY, SC_MOVED_TEMPORARILY, SC_MULTIPLE_CHOICES, SC_NO_CONTENT, SC_NON_AUTHORITATIVE_INFORMATION, SC_NOT_ACCEPTABLE, SC_NOT_FOUND, SC_NOT_IMPLEMENTED, SC_NOT_MODIFIED, SC_OK, SC_PARTIAL_CONTENT, SC_PAYMENT_REQUIRED, SC_PRECONDITION_FAILED, SC_PROXY_AUTHENTICATION_REQUIRED, SC_REQUEST_ENTITY_TOO_LARGE, SC_REQUEST_TIMEOUT, SC_REQUEST_URI_TOO_LONG, SC_REQUESTED_RANGE_NOT_SATISFIABLE, SC_RESET_CONTENT, SC_SEE_OTHER, SC_SERVICE_UNAVAILABLE, SC_SWITCHING_PROTOCOLS, SC_TEMPORARY_REDIRECT, SC_UNAUTHORIZED, SC_UNSUPPORTED_MEDIA_TYPE, SC_USE_PROXY
 
Constructor Summary
FakeHttpServletResponse(javax.servlet.http.HttpServletResponse wrapMe)
          Creates a response wrapper which buffers the output.
 
Method Summary
 void addCookie(javax.servlet.http.Cookie cookie)
           
 void addDateHeader(java.lang.String name, long date)
           
 void addHeader(java.lang.String name, java.lang.String value)
           
 void addIntHeader(java.lang.String name, int value)
           
 void flushBuffer()
           
protected  javax.servlet.http.HttpServletResponse getHttpResponse()
           
 java.io.Reader getOutputAsReader()
          Provides the buffered output as a Reader.
 java.lang.String getOutputAsString()
          Provides the buffered output as a String.
 javax.servlet.ServletOutputStream getOutputStream()
           
 java.io.PrintWriter getWriter()
           
 int outputSize()
           
 boolean prefersReader()
           
 void setContentLength(int len)
           
 void setContentType(java.lang.String type)
           
 void setDateHeader(java.lang.String name, long date)
           
 void setHeader(java.lang.String name, java.lang.String value)
           
 void setIntHeader(java.lang.String name, int value)
           
 void setLocale(java.util.Locale loc)
           
 
Methods inherited from class javax.servlet.http.HttpServletResponseWrapper
containsHeader, encodeRedirectUrl, encodeRedirectURL, encodeUrl, encodeURL, sendError, sendError, sendRedirect, setStatus, setStatus
 
Methods inherited from class javax.servlet.ServletResponseWrapper
getBufferSize, getCharacterEncoding, getLocale, getResponse, isCommitted, reset, resetBuffer, setBufferSize, setResponse
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface javax.servlet.ServletResponse
getBufferSize, getCharacterEncoding, getLocale, isCommitted, reset, resetBuffer, setBufferSize
 

Field Detail

charset

protected java.lang.String charset
We need to track the charset which is applied to the response using setContentType so that we can intelligently convert between streams and readers. If null, the default encoding is assumed.


buffer

protected Buffer buffer
Actually holds all the output data.

Constructor Detail

FakeHttpServletResponse

public FakeHttpServletResponse(javax.servlet.http.HttpServletResponse wrapMe)
Creates a response wrapper which buffers the output.

Method Detail

prefersReader

public boolean prefersReader()
Returns:
true if it is more efficient to call getOutputAsReader() than getOutputAsString(). If false, getOutputAsString() should be used.

getOutputAsReader

public java.io.Reader getOutputAsReader()
                                 throws java.io.UnsupportedEncodingException
Provides the buffered output as a Reader. If output was written using a ServletOutputStream, the charset defined in the content-type is used to decode the data. If no charset is set, the default encoding is assumed.

java.io.UnsupportedEncodingException

getOutputAsString

public java.lang.String getOutputAsString()
                                   throws java.io.UnsupportedEncodingException
Provides the buffered output as a String. If output was written using a ServletOutputStream, the charset defined in the content-type is used to decode the data. If no charset is set, the default encoding is assumed.

java.io.UnsupportedEncodingException

outputSize

public int outputSize()
Returns:
the amount of data written to the output stream.

getOutputStream

public javax.servlet.ServletOutputStream getOutputStream()
                                                  throws java.io.IOException
Specified by:
getOutputStream in interface javax.servlet.ServletResponse
Overrides:
getOutputStream in class javax.servlet.ServletResponseWrapper
java.io.IOException
See Also:
ServletResponse.getOutputStream()

getWriter

public java.io.PrintWriter getWriter()
                              throws java.io.IOException
Specified by:
getWriter in interface javax.servlet.ServletResponse
Overrides:
getWriter in class javax.servlet.ServletResponseWrapper
java.io.IOException
See Also:
ServletResponse.getWriter()

setContentType

public void setContentType(java.lang.String type)
Specified by:
setContentType in interface javax.servlet.ServletResponse
Overrides:
setContentType in class javax.servlet.ServletResponseWrapper
See Also:
ServletResponse.setContentType(java.lang.String)

setContentLength

public void setContentLength(int len)
Specified by:
setContentLength in interface javax.servlet.ServletResponse
Overrides:
setContentLength in class javax.servlet.ServletResponseWrapper
See Also:
ServletResponse.setContentLength(int)

flushBuffer

public void flushBuffer()
                 throws java.io.IOException
Specified by:
flushBuffer in interface javax.servlet.ServletResponse
Overrides:
flushBuffer in class javax.servlet.ServletResponseWrapper
java.io.IOException
See Also:
ServletResponse.flushBuffer()

setLocale

public void setLocale(java.util.Locale loc)
Specified by:
setLocale in interface javax.servlet.ServletResponse
Overrides:
setLocale in class javax.servlet.ServletResponseWrapper
See Also:
ServletResponse.setLocale(java.util.Locale)

addCookie

public void addCookie(javax.servlet.http.Cookie cookie)
Specified by:
addCookie in interface javax.servlet.http.HttpServletResponse
Overrides:
addCookie in class javax.servlet.http.HttpServletResponseWrapper
See Also:
ServletResponse#addCookie

setDateHeader

public void setDateHeader(java.lang.String name,
                          long date)
Specified by:
setDateHeader in interface javax.servlet.http.HttpServletResponse
Overrides:
setDateHeader in class javax.servlet.http.HttpServletResponseWrapper
See Also:
ServletResponse#setDateHeader

addDateHeader

public void addDateHeader(java.lang.String name,
                          long date)
Specified by:
addDateHeader in interface javax.servlet.http.HttpServletResponse
Overrides:
addDateHeader in class javax.servlet.http.HttpServletResponseWrapper
See Also:
ServletResponse#addDateHeader

setHeader

public void setHeader(java.lang.String name,
                      java.lang.String value)
Specified by:
setHeader in interface javax.servlet.http.HttpServletResponse
Overrides:
setHeader in class javax.servlet.http.HttpServletResponseWrapper
See Also:
ServletResponse#setHeader

addHeader

public void addHeader(java.lang.String name,
                      java.lang.String value)
Specified by:
addHeader in interface javax.servlet.http.HttpServletResponse
Overrides:
addHeader in class javax.servlet.http.HttpServletResponseWrapper
See Also:
ServletResponse#addHeader

setIntHeader

public void setIntHeader(java.lang.String name,
                         int value)
Specified by:
setIntHeader in interface javax.servlet.http.HttpServletResponse
Overrides:
setIntHeader in class javax.servlet.http.HttpServletResponseWrapper
See Also:
ServletResponse#setIntHeader

addIntHeader

public void addIntHeader(java.lang.String name,
                         int value)
Specified by:
addIntHeader in interface javax.servlet.http.HttpServletResponse
Overrides:
addIntHeader in class javax.servlet.http.HttpServletResponseWrapper
See Also:
ServletResponse#addIntHeader

getHttpResponse

protected javax.servlet.http.HttpServletResponse getHttpResponse()