info.magnolia.module.cache.filter
Class CacheResponseWrapper
java.lang.Object
javax.servlet.ServletResponseWrapper
javax.servlet.http.HttpServletResponseWrapper
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:
- $Id$
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)
|
void |
cleanUp()
|
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()
|
org.apache.commons.io.output.ThresholdingOutputStream |
getThresholdingOutputStream()
|
int |
getTimeToLiveInSeconds()
Returns the number of seconds the response can be cached, where 0 means that it must not be cached and -1 means
that it there is no indication on how long it can be cached for. |
PrintWriter |
getWriter()
|
boolean |
isError()
|
boolean |
isThresholdExceeded()
|
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 |
DEFAULT_THRESHOLD
public static final int DEFAULT_THRESHOLD
- See Also:
- Constant Field Values
CacheResponseWrapper
public CacheResponseWrapper(javax.servlet.http.HttpServletResponse response,
int threshold,
boolean serveIfThresholdReached)
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
getThresholdingOutputStream
public org.apache.commons.io.output.ThresholdingOutputStream getThresholdingOutputStream()
throws IOException
- 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
cleanUp
public void cleanUp()
getStatus
public int getStatus()
isError
public boolean isError()
getHeaders
public org.apache.commons.collections.MultiMap getHeaders()
getLastModified
public long getLastModified()
getTimeToLiveInSeconds
public int getTimeToLiveInSeconds()
- Returns the number of seconds the response can be cached, where 0 means that it must not be cached and -1 means
that it there is no indication on how long it can be cached for. Will also return -1 if expiration calculation is
disabled.
- See Also:
#setResponseExpirationDetectionEnabled()
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
Copyright © 2003-2012 Magnolia International Ltd.. All Rights Reserved.