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
     
    private Buffer
     
    private boolean
     
    private final PageParserSelector
     
    private final RoutablePrintWriter
     
     

    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

    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
     
    void
    Prevent buffer from being flushed if this is a page being parsed.
    char[]
     
    javax.servlet.ServletOutputStream
     
     
     
    boolean
     
    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
    Set the content-type of the request and store it so it can be passed to the PageParser.
    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, 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

      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 Details

    • PageResponseWrapper

      public PageResponseWrapper(javax.servlet.http.HttpServletResponse response, PageParserSelector parserSelector)
  • Method Details

    • setContentType

      public void setContentType(String type)
      Set the content-type of the request and store it so it can be passed to the PageParser.
      Specified by:
      setContentType in interface javax.servlet.ServletResponse
      Overrides:
      setContentType in class javax.servlet.ServletResponseWrapper
    • activateSiteMesh

      public void activateSiteMesh(String contentType, String encoding)
    • deactivateSiteMesh

      private void deactivateSiteMesh()
    • setContentLength

      public void setContentLength(int contentLength)
      Prevent content-length being set if page is parseable.
      Specified by:
      setContentLength in interface javax.servlet.ServletResponse
      Overrides:
      setContentLength in class javax.servlet.ServletResponseWrapper
    • flushBuffer

      public void flushBuffer() throws IOException
      Prevent buffer from being flushed if this is a page being parsed.
      Specified by:
      flushBuffer in interface javax.servlet.ServletResponse
      Overrides:
      flushBuffer in class javax.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 interface javax.servlet.http.HttpServletResponse
      Overrides:
      setHeader in class javax.servlet.http.HttpServletResponseWrapper
    • addHeader

      public void addHeader(String name, String value)
      Prevent content-length being set if page is parseable.
      Specified by:
      addHeader in interface javax.servlet.http.HttpServletResponse
      Overrides:
      addHeader in class javax.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 interface javax.servlet.http.HttpServletResponse
      Overrides:
      setStatus in class javax.servlet.http.HttpServletResponseWrapper
    • getOutputStream

      public javax.servlet.ServletOutputStream getOutputStream()
      Specified by:
      getOutputStream in interface javax.servlet.ServletResponse
      Overrides:
      getOutputStream in class javax.servlet.ServletResponseWrapper
    • getWriter

      public PrintWriter getWriter()
      Specified by:
      getWriter in interface javax.servlet.ServletResponse
      Overrides:
      getWriter in class javax.servlet.ServletResponseWrapper
    • getPage

      public Page getPage() throws IOException
      Throws:
      IOException
    • sendError

      public void sendError(int sc) throws IOException
      Specified by:
      sendError in interface javax.servlet.http.HttpServletResponse
      Overrides:
      sendError in class javax.servlet.http.HttpServletResponseWrapper
      Throws:
      IOException
    • sendError

      public void sendError(int sc, String msg) throws IOException
      Specified by:
      sendError in interface javax.servlet.http.HttpServletResponse
      Overrides:
      sendError in class javax.servlet.http.HttpServletResponseWrapper
      Throws:
      IOException
    • sendRedirect

      public void sendRedirect(String location) throws IOException
      Specified by:
      sendRedirect in interface javax.servlet.http.HttpServletResponse
      Overrides:
      sendRedirect in class javax.servlet.http.HttpServletResponseWrapper
      Throws:
      IOException
    • isUsingStream

      public boolean isUsingStream()
    • getContents

      public char[] getContents() throws IOException
      Throws:
      IOException