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.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.
In order to capture the response,
getWriter()returns an instance ofPageWriter.- Version:
- $Revision: 1.8 $
- Author:
- Joe Walnes, Scott Farquhar
-
-
Field Summary
Fields Modifier and Type Field Description private booleanabortedprivate Configconfigprivate java.lang.StringcontentTypeprivate booleandebugprivate java.lang.Stringencodingprivate Pagepageprivate PageOutputStreampageOutputStreamprivate PageWriterpageWriterprivate booleanparseablePageprivate jakarta.servlet.http.HttpServletResponseresponseprivate booleansetContentTypeCalledprivate booleanusingStreamprivate booleanusingWriter-
Fields 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
Constructors Constructor Description PageResponseWrapper(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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcloseWriter()Flush and close output stream of wrapped response.private java.lang.StringextractContentTypeValue(java.lang.String type, int startIndex)private OutputBuffergetBufferStream()jakarta.servlet.ServletOutputStreamgetOutputStream()If the page is parseable, return a wrapped ServletOutputStream, else return the default ServletOutputStream.PagegetPage()private PageOutputStreamgetPageOutputStream()private PageWritergetPageWriter()Return instance ofPageWriterallowing all data written to stream to be stored in temporary buffer.java.io.PrintWritergetWriter()If the page is parseable we return an instance ofPageWriterallowing all data written to stream to be stored in temporary buffer.booleanisUsingStream()booleanisUsingWriter()voidsendError(int sc)voidsendError(int sc, java.lang.String msg)voidsendRedirect(java.lang.String location)voidsetContentLength(int contentLength)Prevent content-length being set if page is parseable.voidsetContentType(java.lang.String type)Set the content-type of the request and store it so it can be passed to thePageParser.voidsetHeader(java.lang.String name, java.lang.String value)Prevent 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, setTrailerFields
-
Methods inherited from class jakarta.servlet.ServletResponseWrapper
flushBuffer, getBufferSize, getCharacterEncoding, getContentType, getLocale, getResponse, isCommitted, isWrapperFor, isWrapperFor, reset, resetBuffer, setBufferSize, setCharacterEncoding, setCharacterEncoding, setContentLengthLong, setLocale, setResponse
-
-
-
-
Field Detail
-
pageWriter
private PageWriter pageWriter
-
pageOutputStream
private PageOutputStream pageOutputStream
-
usingStream
private boolean usingStream
-
usingWriter
private boolean usingWriter
-
config
private Config config
-
page
private Page page
-
contentType
private java.lang.String contentType
-
encoding
private java.lang.String 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 Detail
-
PageResponseWrapper
public PageResponseWrapper(jakarta.servlet.http.HttpServletResponse response, Config config) throws java.io.IOExceptionCreate PageResponse wrapped around an existing HttpServletResponse.- Throws:
java.io.IOException
-
PageResponseWrapper
public PageResponseWrapper(jakarta.servlet.http.HttpServletResponse response, Config config, boolean debug) throws java.io.IOExceptionCreate PageResponse wrapped around an existing HttpServletResponse.- Throws:
java.io.IOException
-
-
Method Detail
-
setContentType
public void setContentType(java.lang.String type)
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
private java.lang.String extractContentTypeValue(java.lang.String type, int startIndex)
-
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
public void setHeader(java.lang.String name, java.lang.String value)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
public jakarta.servlet.ServletOutputStream getOutputStream() throws java.io.IOExceptionIf 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:
java.io.IOException
-
getPageOutputStream
private PageOutputStream getPageOutputStream()
-
getWriter
public java.io.PrintWriter getWriter() throws java.io.IOExceptionIf 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:
java.io.IOException
-
getPageWriter
private PageWriter getPageWriter() throws java.io.IOException
Return instance ofPageWriterallowing all data written to stream to be stored in temporary buffer.- Throws:
java.io.IOException
-
closeWriter
public void closeWriter()
Flush and close output stream of wrapped response.
-
getBufferStream
private OutputBuffer getBufferStream()
-
isUsingStream
public boolean isUsingStream()
-
isUsingWriter
public boolean isUsingWriter()
-
getPage
public Page getPage() throws java.io.IOException
Send data written toPageWritertoPageParserand return aPageinstance. If thePageis not parseable, null will be returned.- Throws:
java.io.IOException
-
sendError
public void sendError(int sc) throws java.io.IOException- Specified by:
sendErrorin interfacejakarta.servlet.http.HttpServletResponse- Overrides:
sendErrorin classjakarta.servlet.http.HttpServletResponseWrapper- Throws:
java.io.IOException
-
sendError
public void sendError(int sc, java.lang.String msg) throws java.io.IOException- Specified by:
sendErrorin interfacejakarta.servlet.http.HttpServletResponse- Overrides:
sendErrorin classjakarta.servlet.http.HttpServletResponseWrapper- Throws:
java.io.IOException
-
sendRedirect
public void sendRedirect(java.lang.String location) throws java.io.IOException- Specified by:
sendRedirectin interfacejakarta.servlet.http.HttpServletResponse- Overrides:
sendRedirectin classjakarta.servlet.http.HttpServletResponseWrapper- Throws:
java.io.IOException
-
-