info.magnolia.module.cache.filter
Class CacheResponseWrapper

java.lang.Object
  extended by javax.servlet.ServletResponseWrapper
      extended by javax.servlet.http.HttpServletResponseWrapper
          extended by info.magnolia.module.cache.filter.CacheResponseWrapper
All Implemented Interfaces:
javax.servlet.http.HttpServletResponse, javax.servlet.ServletResponse

public class CacheResponseWrapper
extends javax.servlet.http.HttpServletResponseWrapper

A response wrapper which records the status, headers and content. Unless the threshold is reached the written content gets buffered and the content can get retrieved by getBufferedContent(). Once the threshold is reached either a tmp file is created which can be retrieved with getContentFile() or the content/headers are made transparent to the original response if serveIfThresholdReached is true.

Version:
$Revision: 14052 $ ($Author: gjoseph $)

Field Summary
static int DEFAULT_THRESHOLD
           
 
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
CacheResponseWrapper(javax.servlet.http.HttpServletResponse response, int threshold, boolean serveIfThresholdReached)
           
 
Method Summary
 void addDateHeader(String name, long date)
           
 void addHeader(String name, String value)
           
 void addIntHeader(String name, int value)
           
 boolean containsHeader(String name)
           
 void flush()
           
 void flushBuffer()
           
 byte[] getBufferedContent()
           
 File getContentFile()
           
 int getContentLength()
           
 org.apache.commons.collections.MultiMap getHeaders()
           
 long getLastModified()
           
 javax.servlet.ServletOutputStream getOutputStream()
           
 String getRedirectionLocation()
           
 int getStatus()
           
 PrintWriter getWriter()
           
 boolean isError()
           
 boolean isThresholdExceeded()
           
 void release()
           
 void replay(javax.servlet.http.HttpServletResponse target)
           
 void replayContent(javax.servlet.http.HttpServletResponse target, boolean setContentLength)
           
 void replayHeadersAndStatus(javax.servlet.http.HttpServletResponse target)
           
 void reset()
           
 void resetBuffer()
           
 void sendError(int status)
           
 void sendError(int status, String errorMsg)
           
 void sendRedirect(String location)
           
 void setContentLength(int len)
           
 void setDateHeader(String name, long date)
           
 void setHeader(String name, String value)
           
 void setIntHeader(String name, int value)
           
 void setStatus(int status)
           
 void setStatus(int status, String string)
           
 
Methods inherited from class javax.servlet.http.HttpServletResponseWrapper
addCookie, encodeRedirectUrl, encodeRedirectURL, encodeUrl, encodeURL
 
Methods inherited from class javax.servlet.ServletResponseWrapper
getBufferSize, getCharacterEncoding, getContentType, getLocale, getResponse, isCommitted, setBufferSize, setCharacterEncoding, 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, setBufferSize, setCharacterEncoding, setContentType, setLocale
 

Field Detail

DEFAULT_THRESHOLD

public static final int DEFAULT_THRESHOLD
See Also:
Constant Field Values
Constructor Detail

CacheResponseWrapper

public CacheResponseWrapper(javax.servlet.http.HttpServletResponse response,
                            int threshold,
                            boolean serveIfThresholdReached)
Method Detail

isThresholdExceeded

public boolean isThresholdExceeded()

getBufferedContent

public byte[] getBufferedContent()

getContentFile

public File getContentFile()

getOutputStream

public javax.servlet.ServletOutputStream getOutputStream()
                                                  throws IOException
Specified by:
getOutputStream in interface javax.servlet.ServletResponse
Overrides:
getOutputStream in class javax.servlet.ServletResponseWrapper
Throws:
IOException

getWriter

public PrintWriter getWriter()
                      throws IOException
Specified by:
getWriter in interface javax.servlet.ServletResponse
Overrides:
getWriter in class javax.servlet.ServletResponseWrapper
Throws:
IOException

flushBuffer

public void flushBuffer()
                 throws IOException
Specified by:
flushBuffer in interface javax.servlet.ServletResponse
Overrides:
flushBuffer in class javax.servlet.ServletResponseWrapper
Throws:
IOException

flush

public void flush()
           throws IOException
Throws:
IOException

reset

public void reset()
Specified by:
reset in interface javax.servlet.ServletResponse
Overrides:
reset in class javax.servlet.ServletResponseWrapper

resetBuffer

public void resetBuffer()
Specified by:
resetBuffer in interface javax.servlet.ServletResponse
Overrides:
resetBuffer in class javax.servlet.ServletResponseWrapper

getStatus

public int getStatus()

isError

public boolean isError()

getHeaders

public org.apache.commons.collections.MultiMap getHeaders()

getLastModified

public long getLastModified()

getRedirectionLocation

public String getRedirectionLocation()

setDateHeader

public void setDateHeader(String name,
                          long date)
Specified by:
setDateHeader in interface javax.servlet.http.HttpServletResponse
Overrides:
setDateHeader in class javax.servlet.http.HttpServletResponseWrapper

addDateHeader

public void addDateHeader(String name,
                          long date)
Specified by:
addDateHeader in interface javax.servlet.http.HttpServletResponse
Overrides:
addDateHeader in class javax.servlet.http.HttpServletResponseWrapper

setHeader

public void setHeader(String name,
                      String value)
Specified by:
setHeader in interface javax.servlet.http.HttpServletResponse
Overrides:
setHeader in class javax.servlet.http.HttpServletResponseWrapper

addHeader

public void addHeader(String name,
                      String value)
Specified by:
addHeader in interface javax.servlet.http.HttpServletResponse
Overrides:
addHeader in class javax.servlet.http.HttpServletResponseWrapper

setIntHeader

public void setIntHeader(String name,
                         int value)
Specified by:
setIntHeader in interface javax.servlet.http.HttpServletResponse
Overrides:
setIntHeader in class javax.servlet.http.HttpServletResponseWrapper

addIntHeader

public void addIntHeader(String name,
                         int value)
Specified by:
addIntHeader in interface javax.servlet.http.HttpServletResponse
Overrides:
addIntHeader in class javax.servlet.http.HttpServletResponseWrapper

containsHeader

public boolean containsHeader(String name)
Specified by:
containsHeader in interface javax.servlet.http.HttpServletResponse
Overrides:
containsHeader in class javax.servlet.http.HttpServletResponseWrapper

setStatus

public void setStatus(int status)
Specified by:
setStatus in interface javax.servlet.http.HttpServletResponse
Overrides:
setStatus in class javax.servlet.http.HttpServletResponseWrapper

setStatus

public void setStatus(int status,
                      String string)
Specified by:
setStatus in interface javax.servlet.http.HttpServletResponse
Overrides:
setStatus in class javax.servlet.http.HttpServletResponseWrapper

sendRedirect

public void sendRedirect(String location)
                  throws IOException
Specified by:
sendRedirect in interface javax.servlet.http.HttpServletResponse
Overrides:
sendRedirect in class javax.servlet.http.HttpServletResponseWrapper
Throws:
IOException

sendError

public void sendError(int status,
                      String errorMsg)
               throws IOException
Specified by:
sendError in interface javax.servlet.http.HttpServletResponse
Overrides:
sendError in class javax.servlet.http.HttpServletResponseWrapper
Throws:
IOException

sendError

public void sendError(int status)
               throws IOException
Specified by:
sendError in interface javax.servlet.http.HttpServletResponse
Overrides:
sendError in class javax.servlet.http.HttpServletResponseWrapper
Throws:
IOException

setContentLength

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

getContentLength

public int getContentLength()

replay

public void replay(javax.servlet.http.HttpServletResponse target)
            throws IOException
Throws:
IOException

replayHeadersAndStatus

public void replayHeadersAndStatus(javax.servlet.http.HttpServletResponse target)
                            throws IOException
Throws:
IOException

replayContent

public void replayContent(javax.servlet.http.HttpServletResponse target,
                          boolean setContentLength)
                   throws IOException
Throws:
IOException

release

public void release()


Copyright © 2003-2011 Magnolia International Ltd.. All Rights Reserved.