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.HttpServletResponseWrapperImplementation 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
Fields Modifier and Type Field Description private booleanabortedprivate Bufferbufferprivate booleanparseablePageprivate PageParserSelectorparserSelectorprivate RoutablePrintWriterroutablePrintWriterprivate RoutableServletOutputStreamroutableServletOutputStream-
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
Constructors Constructor Description PageResponseWrapper(javax.servlet.http.HttpServletResponse response, PageParserSelector parserSelector)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidactivateSiteMesh(String contentType, String encoding)voidaddHeader(String name, String value)Prevent content-length being set if page is parseable.private voiddeactivateSiteMesh()voidflushBuffer()Prevent buffer from being flushed if this is a page being parsed.char[]getContents()javax.servlet.ServletOutputStreamgetOutputStream()PagegetPage()PrintWritergetWriter()booleanisUsingStream()voidsendError(int sc)voidsendError(int sc, String msg)voidsendRedirect(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.voidsetHeader(String name, String value)Prevent 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 body-
Methods inherited from class javax.servlet.http.HttpServletResponseWrapper
addCookie, addDateHeader, addIntHeader, containsHeader, encodeRedirectUrl, encodeRedirectURL, encodeUrl, encodeURL, getHeader, getHeaderNames, getHeaders, getStatus, setDateHeader, setIntHeader, setStatus
-
Methods inherited from class javax.servlet.ServletResponseWrapper
getBufferSize, getCharacterEncoding, getContentType, getLocale, getResponse, isCommitted, isWrapperFor, isWrapperFor, reset, resetBuffer, setBufferSize, setCharacterEncoding, setContentLengthLong, setLocale, setResponse
-
-
-
-
Field Detail
-
routablePrintWriter
private final RoutablePrintWriter routablePrintWriter
-
routableServletOutputStream
private final RoutableServletOutputStream routableServletOutputStream
-
parserSelector
private final PageParserSelector parserSelector
-
buffer
private Buffer buffer
-
aborted
private boolean aborted
-
parseablePage
private boolean parseablePage
-
-
Constructor Detail
-
PageResponseWrapper
public PageResponseWrapper(javax.servlet.http.HttpServletResponse response, PageParserSelector parserSelector)
-
-
Method Detail
-
setContentType
public void setContentType(String type)
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
-
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
public void flushBuffer() throws IOExceptionPrevent 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
public void setHeader(String name, String value)
Prevent content-length being set if page is parseable.- Specified by:
setHeaderin interfacejavax.servlet.http.HttpServletResponse- Overrides:
setHeaderin classjavax.servlet.http.HttpServletResponseWrapper
-
addHeader
public void addHeader(String name, String value)
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
public PrintWriter getWriter()
- Specified by:
getWriterin interfacejavax.servlet.ServletResponse- Overrides:
getWriterin classjavax.servlet.ServletResponseWrapper
-
getPage
public Page getPage() throws IOException
- Throws:
IOException
-
sendError
public void sendError(int sc) throws IOException- Specified by:
sendErrorin interfacejavax.servlet.http.HttpServletResponse- Overrides:
sendErrorin classjavax.servlet.http.HttpServletResponseWrapper- Throws:
IOException
-
sendError
public void sendError(int sc, String msg) throws IOException- Specified by:
sendErrorin interfacejavax.servlet.http.HttpServletResponse- Overrides:
sendErrorin classjavax.servlet.http.HttpServletResponseWrapper- Throws:
IOException
-
sendRedirect
public void sendRedirect(String location) throws IOException
- Specified by:
sendRedirectin interfacejavax.servlet.http.HttpServletResponse- Overrides:
sendRedirectin classjavax.servlet.http.HttpServletResponseWrapper- Throws:
IOException
-
isUsingStream
public boolean isUsingStream()
-
getContents
public char[] getContents() throws IOException- Throws:
IOException
-
-