Class CmsFlexResponse

java.lang.Object
javax.servlet.ServletResponseWrapper
javax.servlet.http.HttpServletResponseWrapper
org.opencms.flex.CmsFlexResponse
All Implemented Interfaces:
javax.servlet.http.HttpServletResponse, javax.servlet.ServletResponse

public class CmsFlexResponse extends javax.servlet.http.HttpServletResponseWrapper
Wrapper class for a HttpServletResponse, required in order to process JSPs from the OpenCms VFS.

This class wraps the standard HttpServletResponse so that it's output can be delivered to the CmsFlexCache.

Since:
6.0.0
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final char
    The cache delimiter char.
    protected static final org.apache.commons.logging.Log
    The log object for this class.
    static final String
    Prefix for permanent redirect targets.
    static final String
    Static string to indicate a header is "set" in the header maps.

    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
    CmsFlexResponse(javax.servlet.http.HttpServletResponse res, CmsFlexController controller)
    Constructor for the CmsFlexResponse, this variation one is usually used to wrap responses for further include calls in OpenCms.
    CmsFlexResponse(javax.servlet.http.HttpServletResponse res, CmsFlexController controller, boolean streaming, boolean isTopElement)
    Constructor for the CmsFlexResponse, this variation is usually used for the "top" response.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    addCookie(javax.servlet.http.Cookie cookie)
    Method overloaded from the standard HttpServletRequest API.
    void
    addDateHeader(String name, long date)
    Method overload from the standard HttpServletRequest API.
    void
    addHeader(String name, String value)
    Method overload from the standard HttpServletRequest API.
    void
    addIntHeader(String name, int value)
    Method overload from the standard HttpServletRequest API.
    void
    addToIncludeList(String target, Map<String,String[]> parameterMap, Map<String,Object> attributeMap)
    Adds an inclusion target to the list of include results.
    void
     
    Returns the value of the encoding used for this response.
    Provides access to the header cache of the top wrapper.
    javax.servlet.ServletOutputStream
    Method overload from the standard HttpServletRequest API.
    Method overload from the standard HttpServletRequest API.
    byte[]
    Returns the bytes that have been written on the current writers output stream.
    boolean
    This flag indicates if the response is suspended or not.
    boolean
    Returns true if this response has been constructed for the top level element of this request, false if it was constructed for an included sub-element.
    static void
    processHeaders(Map<String,List<String>> headers, javax.servlet.http.HttpServletResponse res)
    Process the headers stored in the provided map and add them to the response.
    void
    sendRedirect(String location)
    Method overload from the standard HttpServletRequest API.
    void
    sendRedirect(String location, boolean permanent)
    Internal redirect method used to handle both temporary and permanent redirects.
    void
    Method overload from the standard HttpServletRequest API.
    void
    setDateHeader(String name, long date)
    Method overload from the standard HttpServletRequest API.
    void
    setHeader(String name, String value)
    Method overload from the standard HttpServletRequest API.
    void
    setIntHeader(String name, int value)
    Method overload from the standard HttpServletRequest API.
    void
    setOnlyBuffering(boolean value)
    Sets buffering status of the response.

    Methods inherited from class javax.servlet.http.HttpServletResponseWrapper

    containsHeader, encodeRedirectUrl, encodeRedirectURL, encodeUrl, encodeURL, getHeader, getHeaderNames, getHeaders, getStatus, sendError, sendError, setStatus, setStatus

    Methods inherited from class javax.servlet.ServletResponseWrapper

    getBufferSize, getCharacterEncoding, getContentType, getLocale, getResponse, isCommitted, isWrapperFor, isWrapperFor, reset, resetBuffer, setBufferSize, setCharacterEncoding, setContentLength, 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, setContentLength, setContentLengthLong, setLocale
  • Field Details

  • Constructor Details

    • CmsFlexResponse

      public CmsFlexResponse(javax.servlet.http.HttpServletResponse res, CmsFlexController controller)
      Constructor for the CmsFlexResponse, this variation one is usually used to wrap responses for further include calls in OpenCms.

      Parameters:
      res - the CmsFlexResponse to wrap
      controller - the controller to use
    • CmsFlexResponse

      public CmsFlexResponse(javax.servlet.http.HttpServletResponse res, CmsFlexController controller, boolean streaming, boolean isTopElement)
      Constructor for the CmsFlexResponse, this variation is usually used for the "top" response.

      Parameters:
      res - the HttpServletResponse to wrap
      controller - the controller to use
      streaming - indicates if streaming should be enabled or not
      isTopElement - indicates if this is the top element of an include cascade
  • Method Details

    • processHeaders

      public static void processHeaders(Map<String,List<String>> headers, javax.servlet.http.HttpServletResponse res)
      Process the headers stored in the provided map and add them to the response.

      Parameters:
      headers - the headers to add
      res - the response to add the headers to
    • addCookie

      public void addCookie(javax.servlet.http.Cookie cookie)
      Method overloaded from the standard HttpServletRequest API.

      Cookies must be set directly as a header, otherwise they might not be set in the super class.

      Specified by:
      addCookie in interface javax.servlet.http.HttpServletResponse
      Overrides:
      addCookie in class javax.servlet.http.HttpServletResponseWrapper
      See Also:
      • HttpServletResponseWrapper.addCookie(javax.servlet.http.Cookie)
    • addDateHeader

      public void addDateHeader(String name, long date)
      Method overload from the standard HttpServletRequest API.

      Specified by:
      addDateHeader in interface javax.servlet.http.HttpServletResponse
      Overrides:
      addDateHeader in class javax.servlet.http.HttpServletResponseWrapper
      See Also:
      • HttpServletResponse.addDateHeader(java.lang.String, long)
    • addHeader

      public void addHeader(String name, String value)
      Method overload from the standard HttpServletRequest API.

      Specified by:
      addHeader in interface javax.servlet.http.HttpServletResponse
      Overrides:
      addHeader in class javax.servlet.http.HttpServletResponseWrapper
      See Also:
      • HttpServletResponse.addHeader(java.lang.String, java.lang.String)
    • addIntHeader

      public void addIntHeader(String name, int value)
      Method overload from the standard HttpServletRequest API.

      Specified by:
      addIntHeader in interface javax.servlet.http.HttpServletResponse
      Overrides:
      addIntHeader in class javax.servlet.http.HttpServletResponseWrapper
      See Also:
      • HttpServletResponse.addIntHeader(java.lang.String, int)
    • addToIncludeList

      public void addToIncludeList(String target, Map<String,String[]> parameterMap, Map<String,Object> attributeMap)
      Adds an inclusion target to the list of include results.

      Should be used only in inclusion-scenarios like the JSP cms:include tag processing.

      Parameters:
      target - the include target name to add
      parameterMap - the map of parameters given with the include command
      attributeMap - the map of attributes given with the include command
    • flushBuffer

      public void flushBuffer() throws IOException
      Specified by:
      flushBuffer in interface javax.servlet.ServletResponse
      Overrides:
      flushBuffer in class javax.servlet.ServletResponseWrapper
      Throws:
      IOException
      See Also:
      • ServletResponseWrapper.flushBuffer()
    • getEncoding

      public String getEncoding()
      Returns the value of the encoding used for this response.

      Returns:
      the value of the encoding used for this response
    • getHeaders

      Provides access to the header cache of the top wrapper.

      Returns:
      the Map of cached headers
    • getOutputStream

      public javax.servlet.ServletOutputStream getOutputStream() throws IOException
      Method overload from the standard HttpServletRequest API.

      Specified by:
      getOutputStream in interface javax.servlet.ServletResponse
      Overrides:
      getOutputStream in class javax.servlet.ServletResponseWrapper
      Throws:
      IOException
      See Also:
      • ServletResponse.getOutputStream()
    • getWriter

      Method overload from the standard HttpServletRequest API.

      Specified by:
      getWriter in interface javax.servlet.ServletResponse
      Overrides:
      getWriter in class javax.servlet.ServletResponseWrapper
      Throws:
      IOException
      See Also:
      • ServletResponse.getWriter()
    • getWriterBytes

      public byte[] getWriterBytes()
      Returns the bytes that have been written on the current writers output stream.

      Returns:
      the bytes that have been written on the current writers output stream
    • isSuspended

      public boolean isSuspended()
      This flag indicates if the response is suspended or not.

      A suspended response must not write further output to any stream or process a cache entry for itself.

      Currently, a response is only suspended if it is redirected.

      Returns:
      true if the response is suspended, false otherwise
    • isTopElement

      public boolean isTopElement()
      Returns true if this response has been constructed for the top level element of this request, false if it was constructed for an included sub-element.

      Returns:
      true if this response has been constructed for the top level element of this request, false if it was constructed for an included sub-element.
    • sendRedirect

      public void sendRedirect(String location) throws IOException
      Method overload from the standard HttpServletRequest API.

      Specified by:
      sendRedirect in interface javax.servlet.http.HttpServletResponse
      Overrides:
      sendRedirect in class javax.servlet.http.HttpServletResponseWrapper
      Throws:
      IllegalArgumentException - In case of a malformed location string
      IOException
      See Also:
      • HttpServletResponse.sendRedirect(java.lang.String)
    • sendRedirect

      public void sendRedirect(String location, boolean permanent) throws IOException
      Internal redirect method used to handle both temporary and permanent redirects.

      Parameters:
      location - the redirect target
      permanent - true for a permanent redirect, false for a temporary one
      Throws:
      IOException - if IO operations on the response fail
    • setContentType

      public void setContentType(String type)
      Method overload from the standard HttpServletRequest API.

      Specified by:
      setContentType in interface javax.servlet.ServletResponse
      Overrides:
      setContentType in class javax.servlet.ServletResponseWrapper
      See Also:
      • ServletResponse.setContentType(java.lang.String)
    • setDateHeader

      public void setDateHeader(String name, long date)
      Method overload from the standard HttpServletRequest API.

      Specified by:
      setDateHeader in interface javax.servlet.http.HttpServletResponse
      Overrides:
      setDateHeader in class javax.servlet.http.HttpServletResponseWrapper
      See Also:
      • HttpServletResponse.setDateHeader(java.lang.String, long)
    • setHeader

      public void setHeader(String name, String value)
      Method overload from the standard HttpServletRequest API.

      Specified by:
      setHeader in interface javax.servlet.http.HttpServletResponse
      Overrides:
      setHeader in class javax.servlet.http.HttpServletResponseWrapper
      See Also:
      • HttpServletResponse.setHeader(java.lang.String, java.lang.String)
    • setIntHeader

      public void setIntHeader(String name, int value)
      Method overload from the standard HttpServletRequest API.

      Specified by:
      setIntHeader in interface javax.servlet.http.HttpServletResponse
      Overrides:
      setIntHeader in class javax.servlet.http.HttpServletResponseWrapper
      See Also:
      • HttpServletResponse.setIntHeader(java.lang.String, int)
    • setOnlyBuffering

      public void setOnlyBuffering(boolean value)
      Sets buffering status of the response.

      This must be done before the first output is written. Buffering is needed to process elements that can not be written directly to the output stream because their sub - elements have to be processed separately. Which is so far true only for JSP pages.

      If buffering is on, nothing is written to the output stream even if streaming for this response is enabled.

      Parameters:
      value - the value to set