Class 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
    • 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 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, 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
      • Methods inherited from interface javax.servlet.ServletResponse

        getBufferSize, getCharacterEncoding, getContentType, getLocale, isCommitted, reset, resetBuffer, setBufferSize, setCharacterEncoding, setContentLengthLong, setLocale
    • 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 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
      • 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()