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 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
PREFIX_PERMANENT_REDIRECT
Prefix for permanent redirect targets.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
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
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description 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<java.lang.String,java.lang.String[]> parameterMap, java.util.Map<java.lang.String,java.lang.Object> attributeMap)
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<java.lang.String,java.util.List<java.lang.String>>
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()
Returnstrue
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<java.lang.String,java.util.List<java.lang.String>> 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
sendRedirect(java.lang.String location, boolean permanent)
Internal redirect method used to handle both temporary and permanent redirects.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, 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
-
-
-
-
Field Detail
-
FLEX_CACHE_DELIMITER
public static final char FLEX_CACHE_DELIMITER
The cache delimiter char.- See Also:
- Constant Field Values
-
PREFIX_PERMANENT_REDIRECT
public static final java.lang.String PREFIX_PERMANENT_REDIRECT
Prefix for permanent redirect targets.- 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 wrapcontroller
- 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 wrapcontroller
- the controller to usestreaming
- indicates if streaming should be enabled or notisTopElement
- indicates if this is the top element of an include cascade
-
-
Method Detail
-
processHeaders
public static void processHeaders(java.util.Map<java.lang.String,java.util.List<java.lang.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 addres
- 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 interfacejavax.servlet.http.HttpServletResponse
- Overrides:
addCookie
in classjavax.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 interfacejavax.servlet.http.HttpServletResponse
- Overrides:
addDateHeader
in classjavax.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 interfacejavax.servlet.http.HttpServletResponse
- Overrides:
addHeader
in classjavax.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 interfacejavax.servlet.http.HttpServletResponse
- Overrides:
addIntHeader
in classjavax.servlet.http.HttpServletResponseWrapper
- See Also:
HttpServletResponse.addIntHeader(java.lang.String, int)
-
addToIncludeList
public void addToIncludeList(java.lang.String target, java.util.Map<java.lang.String,java.lang.String[]> parameterMap, java.util.Map<java.lang.String,java.lang.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 addparameterMap
- the map of parameters given with the include commandattributeMap
- the map of attributes given with the include command
-
flushBuffer
public void flushBuffer() throws java.io.IOException
- Specified by:
flushBuffer
in interfacejavax.servlet.ServletResponse
- Overrides:
flushBuffer
in classjavax.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<java.lang.String,java.util.List<java.lang.String>> 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 interfacejavax.servlet.ServletResponse
- Overrides:
getOutputStream
in classjavax.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 interfacejavax.servlet.ServletResponse
- Overrides:
getWriter
in classjavax.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()
Returnstrue
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 interfacejavax.servlet.http.HttpServletResponse
- Overrides:
sendRedirect
in classjavax.servlet.http.HttpServletResponseWrapper
- Throws:
java.lang.IllegalArgumentException
- In case of a malformed location stringjava.io.IOException
- See Also:
HttpServletResponse.sendRedirect(java.lang.String)
-
sendRedirect
public void sendRedirect(java.lang.String location, boolean permanent) throws java.io.IOException
Internal redirect method used to handle both temporary and permanent redirects.- Parameters:
location
- the redirect targetpermanent
- true for a permanent redirect, false for a temporary one- Throws:
java.io.IOException
- if IO operations on the response fail
-
setContentType
public void setContentType(java.lang.String type)
Method overload from the standard HttpServletRequest API.- Specified by:
setContentType
in interfacejavax.servlet.ServletResponse
- Overrides:
setContentType
in classjavax.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 interfacejavax.servlet.http.HttpServletResponse
- Overrides:
setDateHeader
in classjavax.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 interfacejavax.servlet.http.HttpServletResponse
- Overrides:
setHeader
in classjavax.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 interfacejavax.servlet.http.HttpServletResponse
- Overrides:
setIntHeader
in classjavax.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
-
-