- java.lang.Object
-
- jakarta.servlet.ServletResponseWrapper
-
- jakarta.servlet.http.HttpServletResponseWrapper
-
- org.omnifaces.servlet.HttpServletResponseOutputWrapper
-
- All Implemented Interfaces:
HttpServletResponse
,ServletResponse
- Direct Known Subclasses:
BufferedHttpServletResponse
,GzipHttpServletResponse
public abstract class HttpServletResponseOutputWrapper extends HttpServletResponseWrapper
Convenience class for extendingHttpServletResponseWrapper
wherein the servlet responseOutputStream
has to be replaced by a custom implementation. This saves the developer from writing repeatedgetOutputStream()
,getWriter()
andflushBuffer()
boilerplate. All the developer has to do is to implement thecreateOutputStream()
accordingly. This will in turn be used by bothgetOutputStream()
andgetWriter()
.The boolean property
passThrough
, which defaults tofalse
also enables the developer to control whether to pass through to the wrappedServletOutputStream
or not.- Since:
- 1.1
- Author:
- Bauke Scholtz
-
-
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 Modifier Constructor Description protected
HttpServletResponseOutputWrapper(HttpServletResponse wrappedResponse)
Construct a newHttpServletResponseOutputWrapper
which wraps the given response.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
close()
Close the response body.protected abstract OutputStream
createOutputStream()
Returns the custom implementation of the servlet responseOutputStream
.void
flushBuffer()
ServletOutputStream
getOutputStream()
PrintWriter
getWriter()
boolean
isCommitted()
Returns whether the response is committed or not.boolean
isPassThrough()
Returns whether the writing has to be passed through to the wrappedServletOutputStream
.void
reset()
void
setPassThrough(boolean passThrough)
Sets whether the writing has to be passed through to the wrappedServletOutputStream
.-
Methods inherited from class jakarta.servlet.http.HttpServletResponseWrapper
addCookie, addDateHeader, addHeader, addIntHeader, containsHeader, encodeRedirectUrl, encodeRedirectURL, encodeUrl, encodeURL, getHeader, getHeaderNames, getHeaders, getStatus, getTrailerFields, sendError, sendError, sendRedirect, setDateHeader, setHeader, setIntHeader, setStatus, setStatus, setTrailerFields
-
Methods inherited from class jakarta.servlet.ServletResponseWrapper
getBufferSize, getCharacterEncoding, getContentType, getLocale, getResponse, isWrapperFor, isWrapperFor, resetBuffer, setBufferSize, 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
getBufferSize, getCharacterEncoding, getContentType, getLocale, resetBuffer, setBufferSize, setCharacterEncoding, setContentLength, setContentLengthLong, setContentType, setLocale
-
-
-
-
Constructor Detail
-
HttpServletResponseOutputWrapper
protected HttpServletResponseOutputWrapper(HttpServletResponse wrappedResponse)
Construct a newHttpServletResponseOutputWrapper
which wraps the given response.- Parameters:
wrappedResponse
- The wrapped response.
-
-
Method Detail
-
createOutputStream
protected abstract OutputStream createOutputStream()
Returns the custom implementation of the servlet responseOutputStream
.- Returns:
- The custom implementation of the servlet response
OutputStream
.
-
getOutputStream
public ServletOutputStream getOutputStream() throws IOException
- Specified by:
getOutputStream
in interfaceServletResponse
- Overrides:
getOutputStream
in classServletResponseWrapper
- Throws:
IOException
-
getWriter
public PrintWriter getWriter() throws IOException
- Specified by:
getWriter
in interfaceServletResponse
- Overrides:
getWriter
in classServletResponseWrapper
- Throws:
IOException
-
flushBuffer
public void flushBuffer() throws IOException
- Specified by:
flushBuffer
in interfaceServletResponse
- Overrides:
flushBuffer
in classServletResponseWrapper
- Throws:
IOException
-
close
public void close() throws IOException
Close the response body. This closes any created writer or output stream.- Throws:
IOException
- When an I/O error occurs.
-
reset
public void reset()
- Specified by:
reset
in interfaceServletResponse
- Overrides:
reset
in classServletResponseWrapper
-
isCommitted
public boolean isCommitted()
Returns whether the response is committed or not. The response is also considered committed when the resettable buffer has been flushed.- Specified by:
isCommitted
in interfaceServletResponse
- Overrides:
isCommitted
in classServletResponseWrapper
- Returns:
true
if the response is committed, otherwisefalse
.
-
isPassThrough
public boolean isPassThrough()
Returns whether the writing has to be passed through to the wrappedServletOutputStream
.- Returns:
true
, if the writing has to be passed through to the wrappedServletOutputStream
, otherwisefalse
.
-
setPassThrough
public void setPassThrough(boolean passThrough)
Sets whether the writing has to be passed through to the wrappedServletOutputStream
.- Parameters:
passThrough
- set totrue
if the writing has to be passed through to the wrappedServletOutputStream
.
-
-