Class CachingResponseWrapper

  • All Implemented Interfaces:
    jakarta.servlet.http.HttpServletResponse, jakarta.servlet.ServletResponse

    public class CachingResponseWrapper
    extends jakarta.servlet.http.HttpServletResponseWrapper
    a wrapper to HttpServletResponse to cache the outbound headers and content
    See Also:
    and, HttpServletResponse
    • Field Summary

      • 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_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
      CachingResponseWrapper​(jakarta.servlet.http.HttpServletResponse response)
      Constructs a response adaptor wrapping the given response.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addCookie​(jakarta.servlet.http.Cookie cookie)
      The default behavior of this method is to call addCookie(Cookie cookie) on the wrapped response object.
      void addDateHeader​(String name, long value)
      Add the specified date header to the specified value.
      void addHeader​(String name, String value)
      Add the specified header to the specified value.
      void addIntHeader​(String name, int value)
      Add the specified integer header to the specified value.
      HttpCacheEntry cacheResponse()
      called by doFilter to cache the response that was just sent out
      void clear()
      clear the contents of this wrapper
      Long getExpiresDateHeader()
      return the Expires: date header value
      jakarta.servlet.ServletOutputStream getOutputStream()
      Return the servlet output stream associated with this Response.
      PrintWriter getWriter()
      Return the writer associated with this Response.
      boolean isError()
      has the response been set to error
      void sendError​(int status)
      Send an error response with the specified status and a default message.
      void sendError​(int status, String message)
      Send an error response with the specified status and message.
      void setContentLength​(int len)
      Set the content length (in bytes) for this Response.
      void setContentType​(String type)
      Set the content type for this Response.
      void setDateHeader​(String name, long value)
      Set the specified date header to the specified value.
      void setHeader​(String name, String value)
      Set the specified header to the specified value.
      void setIntHeader​(String name, int value)
      Set the specified integer header to the specified value.
      void setLocale​(Locale locale)
      Set the Locale that is appropriate for this response, including setting the appropriate character encoding.
      void setStatus​(int sc)
      Set the HTTP status to be returned with this response.
      • Methods inherited from class jakarta.servlet.http.HttpServletResponseWrapper

        containsHeader, encodeRedirectURL, encodeURL, getHeader, getHeaderNames, getHeaders, getStatus, getTrailerFields, sendRedirect, setTrailerFields
      • Methods inherited from class jakarta.servlet.ServletResponseWrapper

        flushBuffer, getBufferSize, getCharacterEncoding, getContentType, getLocale, getResponse, isCommitted, isWrapperFor, isWrapperFor, reset, resetBuffer, setBufferSize, setCharacterEncoding, setContentLengthLong, setResponse
      • Methods inherited from interface jakarta.servlet.ServletResponse

        flushBuffer, getBufferSize, getCharacterEncoding, getContentType, getLocale, isCommitted, reset, resetBuffer, setBufferSize, setCharacterEncoding, setContentLengthLong
    • Constructor Detail

      • CachingResponseWrapper

        public CachingResponseWrapper​(jakarta.servlet.http.HttpServletResponse response)
        Constructs a response adaptor wrapping the given response.
        Throws:
        IllegalArgumentException - if the response is null
    • Method Detail

      • getOutputStream

        public jakarta.servlet.ServletOutputStream getOutputStream()
                                                            throws IOException
        Return the servlet output stream associated with this Response.
        Specified by:
        getOutputStream in interface jakarta.servlet.ServletResponse
        Overrides:
        getOutputStream in class jakarta.servlet.ServletResponseWrapper
        Throws:
        IllegalStateException - if getWriter has already been called for this response
        IOException - if an input/output error occurs
      • getWriter

        public PrintWriter getWriter()
                              throws IOException
        Return the writer associated with this Response.
        Specified by:
        getWriter in interface jakarta.servlet.ServletResponse
        Overrides:
        getWriter in class jakarta.servlet.ServletResponseWrapper
        Throws:
        IllegalStateException - if getOutputStream has already been called for this response
        IOException - if an input/output error occurs
      • setContentLength

        public void setContentLength​(int len)
        Set the content length (in bytes) for this Response.
        Specified by:
        setContentLength in interface jakarta.servlet.ServletResponse
        Overrides:
        setContentLength in class jakarta.servlet.ServletResponseWrapper
        Parameters:
        len - The new content length
      • setContentType

        public void setContentType​(String type)
        Set the content type for this Response.
        Specified by:
        setContentType in interface jakarta.servlet.ServletResponse
        Overrides:
        setContentType in class jakarta.servlet.ServletResponseWrapper
        Parameters:
        type - The new content type
      • setLocale

        public void setLocale​(Locale locale)
        Set the Locale that is appropriate for this response, including setting the appropriate character encoding.
        Specified by:
        setLocale in interface jakarta.servlet.ServletResponse
        Overrides:
        setLocale in class jakarta.servlet.ServletResponseWrapper
        Parameters:
        locale - The new locale
      • addCookie

        public void addCookie​(jakarta.servlet.http.Cookie cookie)
        The default behavior of this method is to call addCookie(Cookie cookie) on the wrapped response object.
        Specified by:
        addCookie in interface jakarta.servlet.http.HttpServletResponse
        Overrides:
        addCookie in class jakarta.servlet.http.HttpServletResponseWrapper
      • setHeader

        public void setHeader​(String name,
                              String value)
        Set the specified header to the specified value.
        Specified by:
        setHeader in interface jakarta.servlet.http.HttpServletResponse
        Overrides:
        setHeader in class jakarta.servlet.http.HttpServletResponseWrapper
        Parameters:
        name - Name of the header to set
        value - Value to be set
      • setIntHeader

        public void setIntHeader​(String name,
                                 int value)
        Set the specified integer header to the specified value.
        Specified by:
        setIntHeader in interface jakarta.servlet.http.HttpServletResponse
        Overrides:
        setIntHeader in class jakarta.servlet.http.HttpServletResponseWrapper
        Parameters:
        name - Name of the header to set
        value - Integer value to be set
      • addHeader

        public void addHeader​(String name,
                              String value)
        Add the specified header to the specified value.
        Specified by:
        addHeader in interface jakarta.servlet.http.HttpServletResponse
        Overrides:
        addHeader in class jakarta.servlet.http.HttpServletResponseWrapper
        Parameters:
        name - Name of the header to set
        value - Value to be set
      • addIntHeader

        public void addIntHeader​(String name,
                                 int value)
        Add the specified integer header to the specified value.
        Specified by:
        addIntHeader in interface jakarta.servlet.http.HttpServletResponse
        Overrides:
        addIntHeader in class jakarta.servlet.http.HttpServletResponseWrapper
        Parameters:
        name - Name of the header to set
        value - Integer value to be set
      • setDateHeader

        public void setDateHeader​(String name,
                                  long value)
        Set the specified date header to the specified value.
        Specified by:
        setDateHeader in interface jakarta.servlet.http.HttpServletResponse
        Overrides:
        setDateHeader in class jakarta.servlet.http.HttpServletResponseWrapper
        Parameters:
        name - Name of the header to set
        value - Date value to be set
      • addDateHeader

        public void addDateHeader​(String name,
                                  long value)
        Add the specified date header to the specified value.
        Specified by:
        addDateHeader in interface jakarta.servlet.http.HttpServletResponse
        Overrides:
        addDateHeader in class jakarta.servlet.http.HttpServletResponseWrapper
        Parameters:
        name - Name of the header to set
        value - Date value to be set
      • setStatus

        public void setStatus​(int sc)
        Set the HTTP status to be returned with this response.
        Specified by:
        setStatus in interface jakarta.servlet.http.HttpServletResponse
        Overrides:
        setStatus in class jakarta.servlet.http.HttpServletResponseWrapper
        Parameters:
        sc - The new HTTP status
      • sendError

        public void sendError​(int status)
                       throws IOException
        Send an error response with the specified status and a default message.
        Specified by:
        sendError in interface jakarta.servlet.http.HttpServletResponse
        Overrides:
        sendError in class jakarta.servlet.http.HttpServletResponseWrapper
        Parameters:
        status - HTTP status code to send
        Throws:
        IllegalStateException - if this response has already been committed
        IOException - if an input/output error occurs
      • sendError

        public void sendError​(int status,
                              String message)
                       throws IOException
        Send an error response with the specified status and message.
        Specified by:
        sendError in interface jakarta.servlet.http.HttpServletResponse
        Overrides:
        sendError in class jakarta.servlet.http.HttpServletResponseWrapper
        Parameters:
        status - HTTP status code to send
        message - Corresponding message to send
        Throws:
        IllegalStateException - if this response has already been committed
        IOException - if an input/output error occurs
      • isError

        public boolean isError()
        has the response been set to error
      • getExpiresDateHeader

        public Long getExpiresDateHeader()
        return the Expires: date header value
      • cacheResponse

        public HttpCacheEntry cacheResponse()
                                     throws IOException
        called by doFilter to cache the response that was just sent out
        Returns:
        the entry with cached response headers and body.
        Throws:
        IOException
      • clear

        public void clear()
        clear the contents of this wrapper