jodd.decora
Class BufferResponseWrapper

java.lang.Object
  extended by javax.servlet.ServletResponseWrapper
      extended by javax.servlet.http.HttpServletResponseWrapper
          extended by jodd.decora.BufferResponseWrapper
All Implemented Interfaces:
javax.servlet.http.HttpServletResponse, javax.servlet.ServletResponse
Direct Known Subclasses:
DecoraResponseWrapper

public class BufferResponseWrapper
extends javax.servlet.http.HttpServletResponseWrapper

Buffered servlet response wrapper.


Field Summary
protected  Buffer buffer
           
protected static java.lang.String CONTENT_LENGTH
           
protected static java.lang.String CONTENT_TYPE
           
protected static java.lang.String LAST_MODIFIED
           
protected  LastModifiedData lastModifiedData
           
 
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
BufferResponseWrapper(javax.servlet.http.HttpServletResponse originalResponse, LastModifiedData lastModifiedData)
           
 
Method Summary
 void addDateHeader(java.lang.String name, long value)
           
 void addHeader(java.lang.String name, java.lang.String value)
          Prevents setting content-length if buffering enabled.
 void addIntHeader(java.lang.String name, int value)
          Prevents setting content-length if buffering enabled.
protected  boolean bufferContentType(java.lang.String contentType, java.lang.String mimeType, java.lang.String encoding)
          Determines if some content type has to be buffered.
protected  boolean bufferStatusCode(int statusCode)
          Determines if buffering should be used for some HTTP status code.
protected  void disableBuffering()
          Disables buffering by transferring the output to original destinations.
protected  void enableBuffering()
          Enables buffering by transferring the output to the buffer.
 void flushBuffer()
          Prevents flushing buffer if buffering enabled.
 byte[] getBufferedBytes()
          Returns buffered bytes or null if buffering was not enabled.
 char[] getBufferedChars()
          Returns buffered content or null if buffering was not enabled.
 javax.servlet.ServletOutputStream getOutputStream()
          Returns buffered output stream if buffering is enabled, otherwise returns the original stream.
 java.io.PrintWriter getWriter()
          Returns buffered writer if buffering is enabled, otherwise returns the original writer.
 boolean isBufferingEnabled()
          Returns true if buffering is enabled.
 boolean isBufferStreamBased()
          Returns true if underlying buffer was written to using getOutputStream() (as opposed to getWriter().
protected  void preResponseCommit()
          Called just before stream or writer is accessed.
 void sendError(int statusCode)
           
 void sendError(int statusCode, java.lang.String reason)
           
 void sendRedirect(java.lang.String location)
           
 void setContentLength(int contentLength)
          Prevents content-length being set if buffering enabled.
 void setContentType(java.lang.String type)
          Sets the content type and enables or disables buffering.
 void setDateHeader(java.lang.String name, long value)
           
 void setHeader(java.lang.String name, java.lang.String value)
          Prevents setting content-length fif buffering enabled.
 void setIntHeader(java.lang.String name, int value)
          Prevents setting content-length if buffering enabled.
 void setStatus(int statusCode)
           
 void setStatus(int statusCode, java.lang.String reason)
           
protected  void stopBufferingForStatusCode(int statusCode)
           
 
Methods inherited from class javax.servlet.http.HttpServletResponseWrapper
addCookie, containsHeader, encodeRedirectUrl, encodeRedirectURL, encodeUrl, encodeURL
 
Methods inherited from class javax.servlet.ServletResponseWrapper
getBufferSize, getCharacterEncoding, getContentType, getLocale, getResponse, isCommitted, reset, resetBuffer, setBufferSize, setCharacterEncoding, 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, setLocale
 

Field Detail

CONTENT_TYPE

protected static final java.lang.String CONTENT_TYPE
See Also:
Constant Field Values

CONTENT_LENGTH

protected static final java.lang.String CONTENT_LENGTH
See Also:
Constant Field Values

LAST_MODIFIED

protected static final java.lang.String LAST_MODIFIED
See Also:
Constant Field Values

lastModifiedData

protected final LastModifiedData lastModifiedData

buffer

protected Buffer buffer
Constructor Detail

BufferResponseWrapper

public BufferResponseWrapper(javax.servlet.http.HttpServletResponse originalResponse,
                             LastModifiedData lastModifiedData)
Method Detail

preResponseCommit

protected void preResponseCommit()
Called just before stream or writer is accessed. After that point response is considered as committed and should not be modified.


enableBuffering

protected void enableBuffering()
Enables buffering by transferring the output to the buffer.


disableBuffering

protected void disableBuffering()
Disables buffering by transferring the output to original destinations.


isBufferingEnabled

public boolean isBufferingEnabled()
Returns true if buffering is enabled.


isBufferStreamBased

public boolean isBufferStreamBased()
Returns true if underlying buffer was written to using getOutputStream() (as opposed to getWriter(). If buffering was not enabled at all, false will be returned, therefore an additional check is required.


getWriter

public java.io.PrintWriter getWriter()
                              throws java.io.IOException
Returns buffered writer if buffering is enabled, otherwise returns the original writer.

Specified by:
getWriter in interface javax.servlet.ServletResponse
Overrides:
getWriter in class javax.servlet.ServletResponseWrapper
Throws:
java.io.IOException

getOutputStream

public javax.servlet.ServletOutputStream getOutputStream()
                                                  throws java.io.IOException
Returns buffered output stream if buffering is enabled, otherwise returns the original stream.

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

getBufferedChars

public char[] getBufferedChars()
Returns buffered content or null if buffering was not enabled.


getBufferedBytes

public byte[] getBufferedBytes()
Returns buffered bytes or null if buffering was not enabled.


bufferContentType

protected boolean bufferContentType(java.lang.String contentType,
                                    java.lang.String mimeType,
                                    java.lang.String encoding)
Determines if some content type has to be buffered. By default returns true.

Parameters:
contentType - full content-type, e.g. "text/html; charset=utf-8"
mimeType - extracted mime-type, e.g. "text/html"
encoding - extracted encoding, e.g. "utf-8" (may be null)

setContentType

public void setContentType(java.lang.String type)
Sets the content type and enables or disables buffering.

Specified by:
setContentType in interface javax.servlet.ServletResponse
Overrides:
setContentType in class javax.servlet.ServletResponseWrapper

flushBuffer

public void flushBuffer()
                 throws java.io.IOException
Prevents flushing buffer if buffering enabled.

Specified by:
flushBuffer in interface javax.servlet.ServletResponse
Overrides:
flushBuffer in class javax.servlet.ServletResponseWrapper
Throws:
java.io.IOException

setContentLength

public void setContentLength(int contentLength)
Prevents content-length being set if buffering enabled.

Specified by:
setContentLength in interface javax.servlet.ServletResponse
Overrides:
setContentLength in class javax.servlet.ServletResponseWrapper

setHeader

public void setHeader(java.lang.String name,
                      java.lang.String value)
Prevents setting content-length fif buffering enabled.

Specified by:
setHeader in interface javax.servlet.http.HttpServletResponse
Overrides:
setHeader in class javax.servlet.http.HttpServletResponseWrapper

addHeader

public void addHeader(java.lang.String name,
                      java.lang.String value)
Prevents setting content-length if buffering enabled.

Specified by:
addHeader in interface javax.servlet.http.HttpServletResponse
Overrides:
addHeader in class javax.servlet.http.HttpServletResponseWrapper

setIntHeader

public void setIntHeader(java.lang.String name,
                         int value)
Prevents setting content-length if buffering enabled.

Specified by:
setIntHeader in interface javax.servlet.http.HttpServletResponse
Overrides:
setIntHeader in class javax.servlet.http.HttpServletResponseWrapper

addIntHeader

public void addIntHeader(java.lang.String name,
                         int value)
Prevents setting content-length if buffering enabled.

Specified by:
addIntHeader in interface javax.servlet.http.HttpServletResponse
Overrides:
addIntHeader in class javax.servlet.http.HttpServletResponseWrapper

setDateHeader

public void setDateHeader(java.lang.String name,
                          long value)
Specified by:
setDateHeader in interface javax.servlet.http.HttpServletResponse
Overrides:
setDateHeader in class javax.servlet.http.HttpServletResponseWrapper

addDateHeader

public void addDateHeader(java.lang.String name,
                          long value)
Specified by:
addDateHeader in interface javax.servlet.http.HttpServletResponse
Overrides:
addDateHeader in class javax.servlet.http.HttpServletResponseWrapper

setStatus

public void setStatus(int statusCode)
Specified by:
setStatus in interface javax.servlet.http.HttpServletResponse
Overrides:
setStatus in class javax.servlet.http.HttpServletResponseWrapper

setStatus

public void setStatus(int statusCode,
                      java.lang.String reason)
Specified by:
setStatus in interface javax.servlet.http.HttpServletResponse
Overrides:
setStatus in class javax.servlet.http.HttpServletResponseWrapper

sendError

public void sendError(int statusCode)
               throws java.io.IOException
Specified by:
sendError in interface javax.servlet.http.HttpServletResponse
Overrides:
sendError in class javax.servlet.http.HttpServletResponseWrapper
Throws:
java.io.IOException

sendError

public void sendError(int statusCode,
                      java.lang.String reason)
               throws java.io.IOException
Specified by:
sendError in interface javax.servlet.http.HttpServletResponse
Overrides:
sendError in class javax.servlet.http.HttpServletResponseWrapper
Throws:
java.io.IOException

sendRedirect

public void sendRedirect(java.lang.String location)
                  throws java.io.IOException
Specified by:
sendRedirect in interface javax.servlet.http.HttpServletResponse
Overrides:
sendRedirect in class javax.servlet.http.HttpServletResponseWrapper
Throws:
java.io.IOException

stopBufferingForStatusCode

protected void stopBufferingForStatusCode(int statusCode)

bufferStatusCode

protected boolean bufferStatusCode(int statusCode)
Determines if buffering should be used for some HTTP status code. By default returns true only for status code 200.



Copyright © 2003-2011 Jodd Team