Class PageResponseWrapper
java.lang.Object
jakarta.servlet.ServletResponseWrapper
jakarta.servlet.http.HttpServletResponseWrapper
com.opensymphony.module.sitemesh.filter.PageResponseWrapper
- All Implemented Interfaces:
jakarta.servlet.http.HttpServletResponse,jakarta.servlet.ServletResponse
public final class PageResponseWrapper
extends jakarta.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.
In order to capture the response, getWriter() returns
an instance of PageWriter.
- Version:
- $Revision: 1.8 $
- Author:
- Joe Walnes, Scott Farquhar
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate booleanprivate Configprivate Stringprivate booleanprivate Stringprivate Pageprivate PageOutputStreamprivate PageWriterprivate booleanprivate jakarta.servlet.http.HttpServletResponseprivate booleanprivate booleanprivate booleanFields inherited from interface jakarta.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_MISDIRECTED_REQUEST, 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_PERMANENT_REDIRECT, 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_UNPROCESSABLE_CONTENT, SC_UNSUPPORTED_MEDIA_TYPE, SC_UPGRADE_REQUIRED, SC_USE_PROXY -
Constructor Summary
ConstructorsConstructorDescriptionPageResponseWrapper(jakarta.servlet.http.HttpServletResponse response, Config config) Create PageResponse wrapped around an existing HttpServletResponse.PageResponseWrapper(jakarta.servlet.http.HttpServletResponse response, Config config, boolean debug) Create PageResponse wrapped around an existing HttpServletResponse. -
Method Summary
Modifier and TypeMethodDescriptionvoidFlush and close output stream of wrapped response.private StringextractContentTypeValue(String type, int startIndex) private OutputBufferjakarta.servlet.ServletOutputStreamIf the page is parseable, return a wrapped ServletOutputStream, else return the default ServletOutputStream.getPage()private PageOutputStreamprivate PageWriterReturn instance ofPageWriterallowing all data written to stream to be stored in temporary buffer.If the page is parseable we return an instance ofPageWriterallowing all data written to stream to be stored in temporary buffer.booleanbooleanvoidsendError(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) Prevent 'not modified' (304) HTTP status from being sent if page is parseable (so web-server/browser doesn't cache contents).Methods inherited from class jakarta.servlet.http.HttpServletResponseWrapper
addCookie, addDateHeader, addHeader, addIntHeader, containsHeader, encodeRedirectURL, encodeURL, getHeader, getHeaderNames, getHeaders, getStatus, getTrailerFields, sendRedirect, sendRedirect, sendRedirect, setDateHeader, setIntHeader, setTrailerFieldsMethods inherited from class jakarta.servlet.ServletResponseWrapper
flushBuffer, getBufferSize, getCharacterEncoding, getContentType, getLocale, getResponse, isCommitted, isWrapperFor, isWrapperFor, reset, resetBuffer, setBufferSize, setCharacterEncoding, setCharacterEncoding, setContentLengthLong, setLocale, setResponseMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface jakarta.servlet.ServletResponse
flushBuffer, getBufferSize, getCharacterEncoding, getContentType, getLocale, isCommitted, reset, resetBuffer, setBufferSize, setCharacterEncoding, setCharacterEncoding, setContentLengthLong, setLocale
-
Field Details
-
pageWriter
-
pageOutputStream
-
usingStream
private boolean usingStream -
usingWriter
private boolean usingWriter -
config
-
page
-
contentType
-
encoding
-
aborted
private boolean aborted -
parseablePage
private boolean parseablePage -
setContentTypeCalled
private boolean setContentTypeCalled -
debug
private boolean debug -
response
private jakarta.servlet.http.HttpServletResponse response
-
-
Constructor Details
-
PageResponseWrapper
public PageResponseWrapper(jakarta.servlet.http.HttpServletResponse response, Config config) throws IOException Create PageResponse wrapped around an existing HttpServletResponse.- Throws:
IOException
-
PageResponseWrapper
public PageResponseWrapper(jakarta.servlet.http.HttpServletResponse response, Config config, boolean debug) throws IOException Create PageResponse wrapped around an existing HttpServletResponse.- Throws:
IOException
-
-
Method Details
-
setContentType
Set the content-type of the request and store it so it can be passed to thePageParser.- Specified by:
setContentTypein interfacejakarta.servlet.ServletResponse- Overrides:
setContentTypein classjakarta.servlet.ServletResponseWrapper
-
extractContentTypeValue
-
setContentLength
public void setContentLength(int contentLength) Prevent content-length being set if page is parseable.- Specified by:
setContentLengthin interfacejakarta.servlet.ServletResponse- Overrides:
setContentLengthin classjakarta.servlet.ServletResponseWrapper
-
setHeader
Prevent content-length being set if page is parseable.- Specified by:
setHeaderin interfacejakarta.servlet.http.HttpServletResponse- Overrides:
setHeaderin classjakarta.servlet.http.HttpServletResponseWrapper
-
setStatus
public void setStatus(int sc) Prevent 'not modified' (304) HTTP status from being sent if page is parseable (so web-server/browser doesn't cache contents).- Specified by:
setStatusin interfacejakarta.servlet.http.HttpServletResponse- Overrides:
setStatusin classjakarta.servlet.http.HttpServletResponseWrapper
-
getOutputStream
If the page is parseable, return a wrapped ServletOutputStream, else return the default ServletOutputStream.
This is called internally by Orion 1.5.4, Resin 2.1.0, Tomcat 4.1.12 - naughty!
- Specified by:
getOutputStreamin interfacejakarta.servlet.ServletResponse- Overrides:
getOutputStreamin classjakarta.servlet.ServletResponseWrapper- Throws:
IOException
-
getPageOutputStream
-
getWriter
If the page is parseable we return an instance of
PageWriterallowing all data written to stream to be stored in temporary buffer.- Specified by:
getWriterin interfacejakarta.servlet.ServletResponse- Overrides:
getWriterin classjakarta.servlet.ServletResponseWrapper- Throws:
IOException
-
getPageWriter
Return instance ofPageWriterallowing all data written to stream to be stored in temporary buffer.- Throws:
IOException
-
closeWriter
public void closeWriter()Flush and close output stream of wrapped response. -
getBufferStream
-
isUsingStream
public boolean isUsingStream() -
isUsingWriter
public boolean isUsingWriter() -
getPage
Send data written toPageWritertoPageParserand return aPageinstance. If thePageis not parseable, null will be returned.- Throws:
IOException
-
sendError
- Specified by:
sendErrorin interfacejakarta.servlet.http.HttpServletResponse- Overrides:
sendErrorin classjakarta.servlet.http.HttpServletResponseWrapper- Throws:
IOException
-
sendError
- Specified by:
sendErrorin interfacejakarta.servlet.http.HttpServletResponse- Overrides:
sendErrorin classjakarta.servlet.http.HttpServletResponseWrapper- Throws:
IOException
-
sendRedirect
- Specified by:
sendRedirectin interfacejakarta.servlet.http.HttpServletResponse- Overrides:
sendRedirectin classjakarta.servlet.http.HttpServletResponseWrapper- Throws:
IOException
-