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 boolean
private Buffer
private boolean
private final PageParserSelector
private final RoutablePrintWriter
private final RoutableServletOutputStream
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
ConstructorsConstructorDescriptionPageResponseWrapper
(javax.servlet.http.HttpServletResponse response, PageParserSelector parserSelector) -
Method Summary
Modifier and TypeMethodDescriptionvoid
activateSiteMesh
(String contentType, String encoding) void
Prevent content-length being set if page is parseable.private void
void
Prevent buffer from being flushed if this is a page being parsed.char[]
javax.servlet.ServletOutputStream
getPage()
boolean
void
sendError
(int sc) void
void
sendRedirect
(String location) void
setContentLength
(int contentLength) Prevent content-length being set if page is parseable.void
setContentType
(String type) Set the content-type of the request and store it so it can be passed to thePageParser
.void
Prevent content-length being set if page is parseable.void
setStatus
(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, setTrailerFields
Methods inherited from class javax.servlet.ServletResponseWrapper
getBufferSize, getCharacterEncoding, getContentType, getLocale, getResponse, isCommitted, isWrapperFor, isWrapperFor, reset, resetBuffer, setBufferSize, setCharacterEncoding, setContentLengthLong, 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, 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:
setContentType
in interfacejavax.servlet.ServletResponse
- Overrides:
setContentType
in 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:
setContentLength
in interfacejavax.servlet.ServletResponse
- Overrides:
setContentLength
in classjavax.servlet.ServletResponseWrapper
-
flushBuffer
Prevent buffer from being flushed if this is a page being parsed.- Specified by:
flushBuffer
in interfacejavax.servlet.ServletResponse
- Overrides:
flushBuffer
in classjavax.servlet.ServletResponseWrapper
- Throws:
IOException
-
setHeader
Prevent content-length being set if page is parseable.- Specified by:
setHeader
in interfacejavax.servlet.http.HttpServletResponse
- Overrides:
setHeader
in classjavax.servlet.http.HttpServletResponseWrapper
-
addHeader
Prevent content-length being set if page is parseable.- Specified by:
addHeader
in interfacejavax.servlet.http.HttpServletResponse
- Overrides:
addHeader
in 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:
setStatus
in interfacejavax.servlet.http.HttpServletResponse
- Overrides:
setStatus
in classjavax.servlet.http.HttpServletResponseWrapper
-
getOutputStream
public javax.servlet.ServletOutputStream getOutputStream()- Specified by:
getOutputStream
in interfacejavax.servlet.ServletResponse
- Overrides:
getOutputStream
in classjavax.servlet.ServletResponseWrapper
-
getWriter
- Specified by:
getWriter
in interfacejavax.servlet.ServletResponse
- Overrides:
getWriter
in classjavax.servlet.ServletResponseWrapper
-
getPage
- Throws:
IOException
-
sendError
- Specified by:
sendError
in interfacejavax.servlet.http.HttpServletResponse
- Overrides:
sendError
in classjavax.servlet.http.HttpServletResponseWrapper
- Throws:
IOException
-
sendError
- Specified by:
sendError
in interfacejavax.servlet.http.HttpServletResponse
- Overrides:
sendError
in classjavax.servlet.http.HttpServletResponseWrapper
- Throws:
IOException
-
sendRedirect
- Specified by:
sendRedirect
in interfacejavax.servlet.http.HttpServletResponse
- Overrides:
sendRedirect
in classjavax.servlet.http.HttpServletResponseWrapper
- Throws:
IOException
-
isUsingStream
public boolean isUsingStream() -
getContents
- Throws:
IOException
-