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
Fields Modifier and Type Field Description private boolean
aborted
private Buffer
buffer
private boolean
parseablePage
private PageParserSelector
parserSelector
private RoutablePrintWriter
routablePrintWriter
private RoutableServletOutputStream
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
Constructors Constructor Description PageResponseWrapper(javax.servlet.http.HttpServletResponse response, PageParserSelector parserSelector)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
activateSiteMesh(String contentType, String encoding)
void
addHeader(String name, String value)
Prevent content-length being set if page is parseable.private void
deactivateSiteMesh()
void
flushBuffer()
Prevent buffer from being flushed if this is a page being parsed.char[]
getContents()
javax.servlet.ServletOutputStream
getOutputStream()
Page
getPage()
PrintWriter
getWriter()
boolean
isUsingStream()
void
sendError(int sc)
void
sendError(int sc, String msg)
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
setHeader(String name, String value)
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 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:
setContentType
in interfacejavax.servlet.ServletResponse
- Overrides:
setContentType
in classjavax.servlet.ServletResponseWrapper
-
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
public void flushBuffer() throws IOException
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
public void setHeader(String name, String value)
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
public void addHeader(String name, String value)
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
public PrintWriter getWriter()
- Specified by:
getWriter
in interfacejavax.servlet.ServletResponse
- Overrides:
getWriter
in classjavax.servlet.ServletResponseWrapper
-
getPage
public Page getPage() throws IOException
- Throws:
IOException
-
sendError
public void sendError(int sc) throws IOException
- Specified by:
sendError
in interfacejavax.servlet.http.HttpServletResponse
- Overrides:
sendError
in classjavax.servlet.http.HttpServletResponseWrapper
- Throws:
IOException
-
sendError
public void sendError(int sc, String msg) throws IOException
- Specified by:
sendError
in interfacejavax.servlet.http.HttpServletResponse
- Overrides:
sendError
in classjavax.servlet.http.HttpServletResponseWrapper
- Throws:
IOException
-
sendRedirect
public void sendRedirect(String location) throws IOException
- Specified by:
sendRedirect
in interfacejavax.servlet.http.HttpServletResponse
- Overrides:
sendRedirect
in classjavax.servlet.http.HttpServletResponseWrapper
- Throws:
IOException
-
isUsingStream
public boolean isUsingStream()
-
getContents
public char[] getContents() throws IOException
- Throws:
IOException
-
-