Class ContentCachingResponseWrapper

java.lang.Object
jakarta.servlet.ServletResponseWrapper
jakarta.servlet.http.HttpServletResponseWrapper
net.solarnetwork.central.web.support.ContentCachingResponseWrapper
All Implemented Interfaces:
jakarta.servlet.http.HttpServletResponse, jakarta.servlet.ServletResponse

public class ContentCachingResponseWrapper extends jakarta.servlet.http.HttpServletResponseWrapper
HttpServletResponse wrapper that caches all content written to the output stream, and allows this content to be retrieved via a byte array.

Note that the content is copied to the underlying servlet stream as well as the cached content buffer. This wrapper supports compressing the cached content with gzip.

Originally based on ContentCachingResponseWrapper.

Since:
1.2
  • 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
    ContentCachingResponseWrapper(jakarta.servlet.http.HttpServletResponse response, boolean gzip)
    Create a new ContentCachingResponseWrapper for the given servlet response.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    addHeader(String name, String value)
     
    byte[]
    Return the cached response content as a byte array.
    Return an InputStream to the cached content.
    int
    Return the current size of the cached content.
    org.springframework.http.HttpHeaders
    Get the HTTP headers.
    jakarta.servlet.ServletOutputStream
     
     
    boolean
    Test if the cached content has been compressed with gzip.
    void
     
    void
     
    void
    sendError(int sc)
     
    void
    sendError(int sc, String msg)
     
    void
    sendRedirect(String location)
     
    void
    setBufferSize(int size)
     
    void
    setHeader(String name, String value)
     

    Methods inherited from class jakarta.servlet.http.HttpServletResponseWrapper

    addCookie, addDateHeader, addIntHeader, containsHeader, encodeRedirectURL, encodeURL, getHeader, getHeaderNames, getHeaders, getStatus, getTrailerFields, setDateHeader, setIntHeader, setStatus, setTrailerFields

    Methods inherited from class jakarta.servlet.ServletResponseWrapper

    flushBuffer, getBufferSize, getCharacterEncoding, getContentType, getLocale, getResponse, isCommitted, isWrapperFor, isWrapperFor, setCharacterEncoding, setContentLength, setContentLengthLong, setContentType, setLocale, setResponse

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface jakarta.servlet.ServletResponse

    flushBuffer, getBufferSize, getCharacterEncoding, getContentType, getLocale, isCommitted, setCharacterEncoding, setContentLength, setContentLengthLong, setContentType, setLocale
  • Constructor Details

    • ContentCachingResponseWrapper

      public ContentCachingResponseWrapper(jakarta.servlet.http.HttpServletResponse response, boolean gzip) throws IOException
      Create a new ContentCachingResponseWrapper for the given servlet response.
      Parameters:
      response - the original servlet response
      gzip - true to compress the cached content with gzip
      Throws:
      IOException
  • Method Details

    • setHeader

      public void setHeader(String name, String value)
      Specified by:
      setHeader in interface jakarta.servlet.http.HttpServletResponse
      Overrides:
      setHeader in class jakarta.servlet.http.HttpServletResponseWrapper
    • addHeader

      public void addHeader(String name, String value)
      Specified by:
      addHeader in interface jakarta.servlet.http.HttpServletResponse
      Overrides:
      addHeader in class jakarta.servlet.http.HttpServletResponseWrapper
    • sendError

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

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

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

      public jakarta.servlet.ServletOutputStream getOutputStream() throws IOException
      Specified by:
      getOutputStream in interface jakarta.servlet.ServletResponse
      Overrides:
      getOutputStream in class jakarta.servlet.ServletResponseWrapper
      Throws:
      IOException
    • getWriter

      public PrintWriter getWriter() throws IOException
      Specified by:
      getWriter in interface jakarta.servlet.ServletResponse
      Overrides:
      getWriter in class jakarta.servlet.ServletResponseWrapper
      Throws:
      IOException
    • setBufferSize

      public void setBufferSize(int size)
      Specified by:
      setBufferSize in interface jakarta.servlet.ServletResponse
      Overrides:
      setBufferSize in class jakarta.servlet.ServletResponseWrapper
    • resetBuffer

      public void resetBuffer()
      Specified by:
      resetBuffer in interface jakarta.servlet.ServletResponse
      Overrides:
      resetBuffer in class jakarta.servlet.ServletResponseWrapper
    • reset

      public void reset()
      Specified by:
      reset in interface jakarta.servlet.ServletResponse
      Overrides:
      reset in class jakarta.servlet.ServletResponseWrapper
    • getContentAsByteArray

      public byte[] getContentAsByteArray() throws IOException
      Return the cached response content as a byte array.
      Throws:
      IOException
    • getContentInputStream

      public InputStream getContentInputStream() throws IOException
      Return an InputStream to the cached content.
      Throws:
      IOException
    • getContentSize

      public int getContentSize() throws IOException
      Return the current size of the cached content.
      Throws:
      IOException
    • isContentGzip

      public boolean isContentGzip()
      Test if the cached content has been compressed with gzip.
      Returns:
      true if the cached content is compressed with gzip
    • getHttpHeaders

      public org.springframework.http.HttpHeaders getHttpHeaders()
      Get the HTTP headers.
      Returns:
      the headers