org.blojsom.filter
Class CharArrayWrapper

java.lang.Object
  extended byjavax.servlet.ServletResponseWrapper
      extended byjavax.servlet.http.HttpServletResponseWrapper
          extended byorg.blojsom.filter.CharArrayWrapper
All Implemented Interfaces:
javax.servlet.http.HttpServletResponse, javax.servlet.ServletResponse

public class CharArrayWrapper
extends javax.servlet.http.HttpServletResponseWrapper

A response wrapper that takes everything the client would normally output and saves it in one big character array.

Taken from More Servlets and JavaServer Pages from Prentice Hall and Sun Microsystems Press, http://www.moreservlets.com/. © 2002 Marty Hall; may be freely used or adapted.

Since:
blojsom 2.24
Version:
$Id: CharArrayWrapper.java,v 1.6 2006/01/04 16:59:54 czarneckid Exp $
Author:
Marty Hall, David Czarnecki

Field Summary
 
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
CharArrayWrapper(javax.servlet.http.HttpServletResponse response)
          Initializes wrapper.
 
Method Summary
 java.io.PrintWriter getWriter()
          When servlets or JSP pages ask for the Writer, don't give them the real one.
 char[] toCharArray()
          Get the underlying character array.
 java.lang.String toString()
          Get a String representation of the entire buffer.
 
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
flushBuffer, getBufferSize, getCharacterEncoding, getLocale, getOutputStream, getResponse, isCommitted, reset, resetBuffer, setBufferSize, setContentLength, setContentType, setLocale, setResponse
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface javax.servlet.ServletResponse
flushBuffer, getBufferSize, getCharacterEncoding, getLocale, getOutputStream, isCommitted, reset, resetBuffer, setBufferSize, setContentLength, setContentType, setLocale
 

Constructor Detail

CharArrayWrapper

public CharArrayWrapper(javax.servlet.http.HttpServletResponse response)
Initializes wrapper.

First, this constructor calls the parent constructor. That call is crucial so that the response is stored and thus setHeader, setStatus, addCookie, and so forth work normally.

Second, this constructor creates a CharArrayWriter that will be used to accumulate the response.

Method Detail

getWriter

public java.io.PrintWriter getWriter()
When servlets or JSP pages ask for the Writer, don't give them the real one. Instead, give them a version that writes into the character array. The filter needs to send the contents of the array to the client (perhaps after modifying it).


toString

public java.lang.String toString()
Get a String representation of the entire buffer.

Be sure not to call this method multiple times on the same wrapper. The API for CharArrayWriter does not guarantee that it "remembers" the previous value, so the call is likely to make a new String every time.


toCharArray

public char[] toCharArray()
Get the underlying character array.