Class PageResponseWrapper
java.lang.Object
javax.servlet.ServletResponseWrapper
javax.servlet.http.HttpServletResponseWrapper
com.opensymphony.module.sitemesh.filter.PageResponseWrapper
- All Implemented Interfaces:
javax.servlet.http.HttpServletResponse,javax.servlet.ServletResponse
public class PageResponseWrapper
extends javax.servlet.http.HttpServletResponseWrapper
Implementation of HttpServletResponseWrapper that captures page data instead of
sending to the writer.
Should be used in filter-chains or when forwarding/including pages using a RequestDispatcher.
- Version:
- $Revision: 1.17 $
- Author:
- Joe Walnes, Scott Farquhar
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate booleanprivate Bufferprivate booleanprivate final PageParserSelectorprivate final RoutablePrintWriterprivate final RoutableServletOutputStreamFields 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
ConstructorsConstructorDescriptionPageResponseWrapper(javax.servlet.http.HttpServletResponse response, PageParserSelector parserSelector) -
Method Summary
Modifier and TypeMethodDescriptionvoidactivateSiteMesh(String contentType, String encoding) voidPrevent content-length being set if page is parseable.private voidvoidPrevent buffer from being flushed if this is a page being parsed.char[]javax.servlet.ServletOutputStreamgetPage()booleanvoidsendError(int sc) voidvoidsendRedirect(String location) voidsetContentLength(int contentLength) Prevent content-length being set if page is parseable.voidsetContentType(String type) Set the content-type of the request and store it so it can be passed to thePageParser.voidPrevent content-length being set if page is parseable.voidsetStatus(int sc) If 'not modified' (304) HTTP status is being sent - then abort parsing, as there shouldn't be any bodyMethods inherited from class javax.servlet.http.HttpServletResponseWrapper
addCookie, addDateHeader, addIntHeader, containsHeader, encodeRedirectUrl, encodeRedirectURL, encodeUrl, encodeURL, getHeader, getHeaderNames, getHeaders, getStatus, getTrailerFields, setDateHeader, setIntHeader, setStatus, setTrailerFieldsMethods inherited from class javax.servlet.ServletResponseWrapper
getBufferSize, getCharacterEncoding, getContentType, getLocale, getResponse, isCommitted, isWrapperFor, isWrapperFor, reset, resetBuffer, setBufferSize, setCharacterEncoding, setContentLengthLong, setLocale, setResponseMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface javax.servlet.ServletResponse
getBufferSize, getCharacterEncoding, getContentType, getLocale, isCommitted, reset, resetBuffer, setBufferSize, setCharacterEncoding, setContentLengthLong, setLocale
-
Field Details
-
routablePrintWriter
-
routableServletOutputStream
-
parserSelector
-
buffer
-
aborted
private boolean aborted -
parseablePage
private boolean parseablePage
-
-
Constructor Details
-
PageResponseWrapper
public PageResponseWrapper(javax.servlet.http.HttpServletResponse response, PageParserSelector parserSelector)
-
-
Method Details
-
setContentType
Set the content-type of the request and store it so it can be passed to thePageParser.- Specified by:
setContentTypein interfacejavax.servlet.ServletResponse- Overrides:
setContentTypein classjavax.servlet.ServletResponseWrapper
-
activateSiteMesh
-
deactivateSiteMesh
private void deactivateSiteMesh() -
setContentLength
public void setContentLength(int contentLength) Prevent content-length being set if page is parseable.- Specified by:
setContentLengthin interfacejavax.servlet.ServletResponse- Overrides:
setContentLengthin classjavax.servlet.ServletResponseWrapper
-
flushBuffer
Prevent buffer from being flushed if this is a page being parsed.- Specified by:
flushBufferin interfacejavax.servlet.ServletResponse- Overrides:
flushBufferin classjavax.servlet.ServletResponseWrapper- Throws:
IOException
-
setHeader
Prevent content-length being set if page is parseable.- Specified by:
setHeaderin interfacejavax.servlet.http.HttpServletResponse- Overrides:
setHeaderin classjavax.servlet.http.HttpServletResponseWrapper
-
addHeader
Prevent content-length being set if page is parseable.- Specified by:
addHeaderin interfacejavax.servlet.http.HttpServletResponse- Overrides:
addHeaderin classjavax.servlet.http.HttpServletResponseWrapper
-
setStatus
public void setStatus(int sc) If 'not modified' (304) HTTP status is being sent - then abort parsing, as there shouldn't be any body- Specified by:
setStatusin interfacejavax.servlet.http.HttpServletResponse- Overrides:
setStatusin classjavax.servlet.http.HttpServletResponseWrapper
-
getOutputStream
public javax.servlet.ServletOutputStream getOutputStream()- Specified by:
getOutputStreamin interfacejavax.servlet.ServletResponse- Overrides:
getOutputStreamin classjavax.servlet.ServletResponseWrapper
-
getWriter
- Specified by:
getWriterin interfacejavax.servlet.ServletResponse- Overrides:
getWriterin classjavax.servlet.ServletResponseWrapper
-
getPage
- Throws:
IOException
-
sendError
- Specified by:
sendErrorin interfacejavax.servlet.http.HttpServletResponse- Overrides:
sendErrorin classjavax.servlet.http.HttpServletResponseWrapper- Throws:
IOException
-
sendError
- Specified by:
sendErrorin interfacejavax.servlet.http.HttpServletResponse- Overrides:
sendErrorin classjavax.servlet.http.HttpServletResponseWrapper- Throws:
IOException
-
sendRedirect
- Specified by:
sendRedirectin interfacejavax.servlet.http.HttpServletResponse- Overrides:
sendRedirectin classjavax.servlet.http.HttpServletResponseWrapper- Throws:
IOException
-
isUsingStream
public boolean isUsingStream() -
getContents
- Throws:
IOException
-