org.ibisph.filter
Class AbstractResponseWrapper

java.lang.Object
  extended by javax.servlet.ServletResponseWrapper
      extended by javax.servlet.http.HttpServletResponseWrapper
          extended by org.ibisph.filter.AbstractResponseWrapper
All Implemented Interfaces:
javax.servlet.http.HttpServletResponse, javax.servlet.ServletResponse
Direct Known Subclasses:
ResponseWrapper, ResponseWrapper, SVGToJPEGResponseWrapper

public abstract class AbstractResponseWrapper
extends javax.servlet.http.HttpServletResponseWrapper

Core simple/basic response wrapper. The main worker method is the abstract createOutputStream.

Author:
JSP Book (www.jspbook.com)

Field Summary
protected  javax.servlet.http.HttpServletResponse origResponse
           
protected  javax.servlet.ServletOutputStream stream
           
protected  java.io.PrintWriter writer
           
 
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_FOUND, 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
AbstractResponseWrapper(javax.servlet.http.HttpServletResponse response)
          Saves the original HttpServletResponse as a class variable for internal class access.
 
Method Summary
abstract  javax.servlet.ServletOutputStream createOutputStream()
          Main worker method that needs to be implemented to do the actual wrapping.
 void finishResponse()
          Closes the writer (if open) and flushes the output stream.
 void flushBuffer()
          Core required method that handles flushing the stream output buffer.
 javax.servlet.ServletOutputStream getOutputStream()
          Required method that handles the writer and is responsible to call the createOutputStream method.
 java.io.PrintWriter getWriter()
          Required method that handles getting the correct PrintWriter object.
 
Methods inherited from class javax.servlet.http.HttpServletResponseWrapper
addCookie, addDateHeader, addHeader, addIntHeader, containsHeader, encodeRedirectUrl, encodeRedirectURL, encodeUrl, encodeURL, sendError, sendError, sendRedirect, setDateHeader, setHeader, setIntHeader, setStatus, setStatus
 
Methods inherited from class javax.servlet.ServletResponseWrapper
getBufferSize, getCharacterEncoding, getContentType, getLocale, getResponse, isCommitted, reset, resetBuffer, setBufferSize, setCharacterEncoding, setContentLength, setContentType, setLocale, 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, getContentType, getLocale, isCommitted, reset, resetBuffer, setBufferSize, setCharacterEncoding, setContentLength, setContentType, setLocale
 

Field Detail

origResponse

protected javax.servlet.http.HttpServletResponse origResponse

stream

protected javax.servlet.ServletOutputStream stream

writer

protected java.io.PrintWriter writer
Constructor Detail

AbstractResponseWrapper

public AbstractResponseWrapper(javax.servlet.http.HttpServletResponse response)
Saves the original HttpServletResponse as a class variable for internal class access.

Parameters:
response - required HttpServletResponse object which is saved and can be used by other method calls within this object.
Method Detail

createOutputStream

public abstract javax.servlet.ServletOutputStream createOutputStream()
                                                              throws java.io.IOException
Main worker method that needs to be implemented to do the actual wrapping.

Returns:
ServletOutputStream new output stream to be used by this wrapper.
Throws:
java.io.IOException - Based on the situation.

getOutputStream

public javax.servlet.ServletOutputStream getOutputStream()
                                                  throws java.io.IOException
Required method that handles the writer and is responsible to call the createOutputStream method.

Specified by:
getOutputStream in interface javax.servlet.ServletResponse
Overrides:
getOutputStream in class javax.servlet.ServletResponseWrapper
Returns:
ServletOutputStream new output stream to be used by this wrapper.
Throws:
java.lang.IllegalStateException - If the writer has already been called.
java.io.IOException

getWriter

public java.io.PrintWriter getWriter()
                              throws java.io.IOException
Required method that handles getting the correct PrintWriter object.

Specified by:
getWriter in interface javax.servlet.ServletResponse
Overrides:
getWriter in class javax.servlet.ServletResponseWrapper
Returns:
PrintWriter new print writer based on the new output stream.
Throws:
java.lang.IllegalStateException - If the stream has already been called.
java.io.IOException - Based on the stream method calls.

flushBuffer

public void flushBuffer()
                 throws java.io.IOException
Core required method that handles flushing the stream output buffer.

Specified by:
flushBuffer in interface javax.servlet.ServletResponse
Overrides:
flushBuffer in class javax.servlet.ServletResponseWrapper
Throws:
java.io.IOException - Based on the stream flush method call.

finishResponse

public void finishResponse()
                    throws java.io.IOException
Closes the writer (if open) and flushes the output stream.

Throws:
java.io.IOException - Based on the write or stream close method calls.