org.omnifaces.servlet
Class HttpServletResponseOutputWrapper

java.lang.Object
  extended by javax.servlet.ServletResponseWrapper
      extended by javax.servlet.http.HttpServletResponseWrapper
          extended by org.omnifaces.servlet.HttpServletResponseOutputWrapper
All Implemented Interfaces:
javax.servlet.http.HttpServletResponse, javax.servlet.ServletResponse
Direct Known Subclasses:
BufferedHttpServletResponse, GzipHttpServletResponse

public abstract class HttpServletResponseOutputWrapper
extends javax.servlet.http.HttpServletResponseWrapper

Convenience class for extending HttpServletResponseWrapper wherein the servlet response OutputStream has to be replaced by a custom implementation. This saves the developer from writing repeated getOutputStream(), getWriter() and flushBuffer() boilerplate. All the developer has to do is to implement the createOutputStream() accordingly. This will in turn be used by both getOutputStream() and getWriter().

The boolean property passThrough, which defaults to false also enables the developer to control whether to pass through to the wrapped ServletOutputStream or not.

Since:
1.1
Author:
Bauke Scholtz

Field Summary
 
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
HttpServletResponseOutputWrapper(javax.servlet.http.HttpServletResponse wrappedResponse)
          Construct a new HttpServletResponseOutputWrapper which wraps the given response.
 
Method Summary
 void close()
          Close the response body.
protected abstract  java.io.OutputStream createOutputStream()
          Returns the custom implementation of the servlet response OutputStream.
 void flushBuffer()
           
 javax.servlet.ServletOutputStream getOutputStream()
           
 java.io.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 wrapped ServletOutputStream.
 void reset()
           
 void setPassThrough(boolean passThrough)
          Sets whether the writing has to be passed through to the wrapped ServletOutputStream.
 
Methods inherited from class javax.servlet.http.HttpServletResponseWrapper
addCookie, addDateHeader, addHeader, addIntHeader, containsHeader, encodeRedirectUrl, encodeRedirectURL, encodeUrl, encodeURL, getHeader, getHeaderNames, getHeaders, getStatus, sendError, sendError, sendRedirect, setDateHeader, setHeader, setIntHeader, setStatus, setStatus
 
Methods inherited from class javax.servlet.ServletResponseWrapper
getBufferSize, getCharacterEncoding, getContentType, getLocale, getResponse, isWrapperFor, isWrapperFor, resetBuffer, setBufferSize, setCharacterEncoding, setContentLength, 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 javax.servlet.ServletResponse
getBufferSize, getCharacterEncoding, getContentType, getLocale, resetBuffer, setBufferSize, setCharacterEncoding, setContentLength, setContentType, setLocale
 

Constructor Detail

HttpServletResponseOutputWrapper

public HttpServletResponseOutputWrapper(javax.servlet.http.HttpServletResponse wrappedResponse)
Construct a new HttpServletResponseOutputWrapper which wraps the given response.

Parameters:
wrappedResponse - The wrapped response.
Method Detail

createOutputStream

protected abstract java.io.OutputStream createOutputStream()
Returns the custom implementation of the servlet response OutputStream.

Returns:
The custom implementation of the servlet response OutputStream.

getOutputStream

public javax.servlet.ServletOutputStream getOutputStream()
                                                  throws java.io.IOException
Specified by:
getOutputStream in interface javax.servlet.ServletResponse
Overrides:
getOutputStream in class javax.servlet.ServletResponseWrapper
Throws:
java.io.IOException

getWriter

public java.io.PrintWriter getWriter()
                              throws java.io.IOException
Specified by:
getWriter in interface javax.servlet.ServletResponse
Overrides:
getWriter in class javax.servlet.ServletResponseWrapper
Throws:
java.io.IOException

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

close

public void close()
           throws java.io.IOException
Close the response body. This closes any created writer or output stream.

Throws:
java.io.IOException - When an I/O error occurs.

reset

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

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 interface javax.servlet.ServletResponse
Overrides:
isCommitted in class javax.servlet.ServletResponseWrapper
Returns:
true if the response is committed, otherwise false.

isPassThrough

public boolean isPassThrough()
Returns whether the writing has to be passed through to the wrapped ServletOutputStream.

Returns:
true, if the writing has to be passed through to the wrapped ServletOutputStream, otherwise false.

setPassThrough

public void setPassThrough(boolean passThrough)
Sets whether the writing has to be passed through to the wrapped ServletOutputStream.

Parameters:
passThrough - set to true if the writing has to be passed through to the wrapped ServletOutputStream.