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)
|
CacheResponseWrapper(javax.servlet.http.HttpServletResponse response,
int threshold,
boolean serveIfThresholdReached,
info.magnolia.module.cache.filter.AbstractThresholdingCacheOutputStream stream)
|
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 |
setResponseExpirationDetectionEnabled()
Enables expiration detection, response headers are then intercepted and suppressed from the response and used
internally to calculate when the response expires (its time to live value). |
void |
setStatus(int status)
|
void |
setStatus(int status,
String string)
|
protected OutputStream |
thresholdReached(OutputStream out)
|
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)
CacheResponseWrapper
public CacheResponseWrapper(javax.servlet.http.HttpServletResponse response,
int threshold,
boolean serveIfThresholdReached,
info.magnolia.module.cache.filter.AbstractThresholdingCacheOutputStream stream)
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()
setResponseExpirationDetectionEnabled
public void setResponseExpirationDetectionEnabled()
- Enables expiration detection, response headers are then intercepted and suppressed from the response and used
internally to calculate when the response expires (its time to live value). Use
getTimeToLiveInSeconds()
to get the calculated value. See ResponseExpirationCalculator
for more details on how the calculation
is performed.
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
thresholdReached
protected OutputStream thresholdReached(OutputStream out)
throws IOException
- Throws:
IOException
Copyright © 2003-2013 Magnolia International Ltd.. All Rights Reserved.