org.opencms.flex
Class CmsFlexResponse

java.lang.Object
  extended by javax.servlet.ServletResponseWrapper
      extended by javax.servlet.http.HttpServletResponseWrapper
          extended by 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
Version:
$Revision: 1.51 $
Author:
Alexander Kandzior

Field Summary
static char FLEX_CACHE_DELIMITER
          The cache delimiter char.
protected static org.apache.commons.logging.Log LOG
          The log object for this class.
static java.lang.String SET_HEADER
          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
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
 void addCookie(javax.servlet.http.Cookie cookie)
          Method overloaded from the standard HttpServletRequest API.
 void addDateHeader(java.lang.String name, long date)
          Method overload from the standard HttpServletRequest API.
 void addHeader(java.lang.String name, java.lang.String value)
          Method overload from the standard HttpServletRequest API.
 void addIntHeader(java.lang.String name, int value)
          Method overload from the standard HttpServletRequest API.
 void addToIncludeList(java.lang.String target, java.util.Map parameterMap)
          Adds an inclusion target to the list of include results.
 void flushBuffer()
           
 java.lang.String getEncoding()
          Returns the value of the encoding used for this response.
 java.util.Map getHeaders()
          Provides access to the header cache of the top wrapper.
 javax.servlet.ServletOutputStream getOutputStream()
          Method overload from the standard HttpServletRequest API.
 java.io.PrintWriter getWriter()
          Method overload from the standard HttpServletRequest API.
 byte[] getWriterBytes()
          Returns the bytes that have been written on the current writers output stream.
 boolean isSuspended()
          This flag indicates if the response is suspended or not.
 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.
static void processHeaders(java.util.Map headers, javax.servlet.http.HttpServletResponse res)
          Process the headers stored in the provided map and add them to the response.
 void sendRedirect(java.lang.String location)
          Method overload from the standard HttpServletRequest API.
 void setContentType(java.lang.String type)
          Method overload from the standard HttpServletRequest API.
 void setDateHeader(java.lang.String name, long date)
          Method overload from the standard HttpServletRequest API.
 void setHeader(java.lang.String name, java.lang.String value)
          Method overload from the standard HttpServletRequest API.
 void setIntHeader(java.lang.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, sendError, sendError, setStatus, setStatus
 
Methods inherited from class javax.servlet.ServletResponseWrapper
getBufferSize, getCharacterEncoding, getContentType, getLocale, getResponse, isCommitted, reset, resetBuffer, setBufferSize, setCharacterEncoding, setContentLength, 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, setLocale
 

Field Detail

FLEX_CACHE_DELIMITER

public static final char FLEX_CACHE_DELIMITER
The cache delimiter char.

See Also:
Constant Field Values

SET_HEADER

public static final java.lang.String SET_HEADER
Static string to indicate a header is "set" in the header maps.

See Also:
Constant Field Values

LOG

protected static final org.apache.commons.logging.Log LOG
The log object for this class.

Constructor Detail

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 Detail

processHeaders

public static void processHeaders(java.util.Map 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(java.lang.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(java.lang.String name,
                      java.lang.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(java.lang.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(java.lang.String target,
                             java.util.Map parameterMap)
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

flushBuffer

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

getEncoding

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

Returns:
the value of the encoding used for this response

getHeaders

public java.util.Map getHeaders()
Provides access to the header cache of the top wrapper.

Returns:
the Map of cached headers

getOutputStream

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

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

getWriter

public java.io.PrintWriter getWriter()
                              throws java.io.IOException
Method overload from the standard HttpServletRequest API.

Specified by:
getWriter in interface javax.servlet.ServletResponse
Overrides:
getWriter in class javax.servlet.ServletResponseWrapper
Throws:
java.io.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(java.lang.String location)
                  throws java.io.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:
java.io.IOException
See Also:
HttpServletResponse.sendRedirect(java.lang.String)

setContentType

public void setContentType(java.lang.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(java.lang.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(java.lang.String name,
                      java.lang.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(java.lang.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