com.opensymphony.module.sitemesh.filter
Class PageResponseWrapper

java.lang.Object
  extended byjavax.servlet.ServletResponseWrapper
      extended byjavax.servlet.http.HttpServletResponseWrapper
          extended bycom.opensymphony.module.sitemesh.filter.PageResponseWrapper
All Implemented Interfaces:
HttpServletResponse, ServletResponse

public final class PageResponseWrapper
extends HttpServletResponseWrapper

Implementation of HttpServletResponseWrapper that captures page data instead of sending to the writer.

Should be used in filter-chains or when forwarding/including pages using a RequestDispatcher.

Version:
$Revision: 1.11 $
Author:
Joe Walnes, Scott Farquhar

Field Summary
private  boolean aborted
           
private  Buffer buffer
           
private  Factory factory
           
private  boolean parseablePage
           
private  RoutablePrintWriter routablePrintWriter
           
private  RoutableServletOutputStream routableServletOutputStream
           
 
Fields inherited from class javax.servlet.ServletResponseWrapper
 
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_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
PageResponseWrapper(HttpServletResponse response, Factory factory)
           
 
Method Summary
private  void activateSiteMesh(String contentType, String encoding)
           
 void addHeader(String name, String value)
          Prevent content-length being set if page is parseable.
private  String extractContentTypeValue(String type, int startIndex)
           
 ServletOutputStream getOutputStream()
           
 Page getPage()
           
 PrintWriter getWriter()
           
 boolean isUsingStream()
           
 void sendError(int sc)
           
 void sendError(int sc, String msg)
           
 void sendRedirect(String location)
           
 void setContentLength(int contentLength)
          Prevent content-length being set if page is parseable.
 void setContentType(String type)
          Set the content-type of the request and store it so it can be passed to the PageParser.
 void setHeader(String name, String value)
          Prevent content-length being set if page is parseable.
 void setStatus(int sc)
          Prevent 'not modified' (304) HTTP status from being sent if page is parseable (so web-server/browser doesn't cache contents).
 
Methods inherited from class javax.servlet.http.HttpServletResponseWrapper
addCookie, addDateHeader, addIntHeader, containsHeader, encodeRedirectUrl, encodeRedirectURL, encodeUrl, encodeURL, setDateHeader, setIntHeader, setStatus
 
Methods inherited from class javax.servlet.ServletResponseWrapper
flushBuffer, getBufferSize, getCharacterEncoding, getLocale, getResponse, isCommitted, reset, resetBuffer, setBufferSize, 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
flushBuffer, getBufferSize, getCharacterEncoding, getLocale, isCommitted, reset, resetBuffer, setBufferSize, setLocale
 

Field Detail

routablePrintWriter

private final RoutablePrintWriter routablePrintWriter

routableServletOutputStream

private final RoutableServletOutputStream routableServletOutputStream

factory

private final Factory factory

buffer

private Buffer buffer

aborted

private boolean aborted

parseablePage

private boolean parseablePage
Constructor Detail

PageResponseWrapper

public PageResponseWrapper(HttpServletResponse response,
                           Factory factory)
Method Detail

setContentType

public void setContentType(String type)
Set the content-type of the request and store it so it can be passed to the PageParser.


activateSiteMesh

private void activateSiteMesh(String contentType,
                              String encoding)

extractContentTypeValue

private String extractContentTypeValue(String type,
                                       int startIndex)

setContentLength

public void setContentLength(int contentLength)
Prevent content-length being set if page is parseable.


setHeader

public void setHeader(String name,
                      String value)
Prevent content-length being set if page is parseable.


addHeader

public void addHeader(String name,
                      String value)
Prevent content-length being set if page is parseable.


setStatus

public void setStatus(int sc)
Prevent 'not modified' (304) HTTP status from being sent if page is parseable (so web-server/browser doesn't cache contents).


getOutputStream

public ServletOutputStream getOutputStream()

getWriter

public PrintWriter getWriter()

getPage

public Page getPage()
             throws IOException
Throws:
IOException

sendError

public void sendError(int sc)
               throws IOException
Throws:
IOException

sendError

public void sendError(int sc,
                      String msg)
               throws IOException
Throws:
IOException

sendRedirect

public void sendRedirect(String location)
                  throws IOException
Throws:
IOException

isUsingStream

public boolean isUsingStream()

www.opensymphony.com/sitemesh/