Package org.apache.catalina.ssi

# Class ResponseIncludeWrapper

java.lang.Object
javax.servlet.ServletResponseWrapper
javax.servlet.http.HttpServletResponseWrapper
org.apache.catalina.ssi.ResponseIncludeWrapper

All Implemented Interfaces:
  `HttpServletResponse`, `ServletResponse`

public class ResponseIncludeWrapper extends HttpServletResponseWrapper
An HttpServletResponseWrapper, used from `SSIServletExternalResolver`

Author:
  Bip Thelin, David Becker

## Field Summary

Fields
Modifier and Type
Field
Description
`protected final ServletOutputStream`
`captureServletOutputStream`
Our ServletOutputStream
`protected long`
`lastModified`
`protected PrintWriter`
`printWriter`
`protected ServletOutputStream`
`servletOutputStream`

### 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
`ResponseIncludeWrapper(HttpServletResponse response, ServletOutputStream captureServletOutputStream)`
Initialize our wrapper with the current HttpServletResponse and ServletOutputStream.

## Method Summary

Modifier and Type
Method
Description
`void`
`addDateHeader(String name, long value)`
The default behavior of this method is to call addDateHeader(String name, long date) on the wrapped response object.
`void`
`addHeader(String name, String value)`
The default behavior of this method is to return addHeader(String name, String value) on the wrapped response object.
`void`
`flushOutputStreamOrWriter()`
Flush the servletOutputStream or printWriter ( only one will be non-null ) This must be called after a requestDispatcher.include, since we can't assume that the included servlet flushed its stream.
`long`
`getLastModified()`
Returns the value of the `last-modified` header field.
`ServletOutputStream`
`getOutputStream()`
Return an OutputStream, throws an exception if a printwriter already been returned.
`PrintWriter`
`getWriter()`
Return a printwriter, throws an exception if an OutputStream already been returned.
`void`
`setDateHeader(String name, long value)`
The default behavior of this method is to call setDateHeader(String name, long date) on the wrapped response object.
`void`
`setHeader(String name, String value)`
The default behavior of this method is to return setHeader(String name, String value) on the wrapped response object.

### Methods inherited from class javax.servlet.http.HttpServletResponseWrapper

`addCookie, addIntHeader, containsHeader, encodeRedirectUrl, encodeRedirectURL, encodeUrl, encodeURL, getHeader, getHeaderNames, getHeaders, getStatus, getTrailerFields, sendError, sendError, sendRedirect, setIntHeader, setStatus, setStatus, setTrailerFields`

### Methods inherited from class javax.servlet.ServletResponseWrapper

`flushBuffer, getBufferSize, getCharacterEncoding, getContentType, getLocale, getResponse, isCommitted, isWrapperFor, isWrapperFor, reset, 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 javax.servlet.ServletResponse

`flushBuffer, getBufferSize, getCharacterEncoding, getContentType, getLocale, isCommitted, reset, resetBuffer, setBufferSize, setCharacterEncoding, setContentLength, setContentLengthLong, setContentType, setLocale`

## Field Details

### lastModified

protected long lastModified

### captureServletOutputStream

protected final ServletOutputStream captureServletOutputStream
Our ServletOutputStream

### servletOutputStream

protected ServletOutputStream servletOutputStream

### printWriter

protected PrintWriter printWriter

## Constructor Details

### ResponseIncludeWrapper

public ResponseIncludeWrapper(HttpServletResponse response, ServletOutputStream captureServletOutputStream)
Initialize our wrapper with the current HttpServletResponse and ServletOutputStream.

Parameters:
  `response` - The response to use
  `captureServletOutputStream` - The ServletOutputStream to use

## Method Details

### flushOutputStreamOrWriter

public void flushOutputStreamOrWriter() throws IOException
Flush the servletOutputStream or printWriter ( only one will be non-null ) This must be called after a requestDispatcher.include, since we can't assume that the included servlet flushed its stream.

Throws:
  `IOException` - an IO error occurred

### getWriter

public PrintWriter getWriter() throws IOException
Return a printwriter, throws an exception if an OutputStream already been returned.

Specified by:
  `getWriter` in interface `ServletResponse`
Overrides:
  `getWriter` in class `ServletResponseWrapper`
Returns:
  a PrintWriter object
Throws:
  `IOException` - if the outputstream already been called
See Also:
  - `ServletResponse.getOutputStream()`
  - `ServletResponse.setCharacterEncoding(java.lang.String)`

### getOutputStream

public ServletOutputStream getOutputStream() throws IOException
Return an OutputStream, throws an exception if a printwriter already been returned.

Specified by:
  `getOutputStream` in interface `ServletResponse`
Overrides:
  `getOutputStream` in class `ServletResponseWrapper`
Returns:
  an OutputStream object
Throws:
  `IOException` - if the printwriter already been called
See Also:
  - `ServletResponse.getWriter()`

### getLastModified

public long getLastModified()
Returns the value of the `last-modified` header field. The result is the number of milliseconds since January 1, 1970 GMT.

Returns:
  the date the resource referenced by this `ResponseIncludeWrapper` was last modified, or -1 if not known.

### addDateHeader

public void addDateHeader(String name, long value)
Description copied from class: `javax.servlet.http.HttpServletResponseWrapper`
The default behavior of this method is to call addDateHeader(String name, long date) on the wrapped response object.

Specified by:
  `addDateHeader` in interface `HttpServletResponse`
Overrides:
  `addDateHeader` in class `HttpServletResponseWrapper`
Parameters:
  `name` - the name of the header to set
  `value` - the additional date value
See Also:
  - `HttpServletResponse.setDateHeader(java.lang.String, long)`

### addHeader

public void addHeader(String name, String value)
Description copied from class: `javax.servlet.http.HttpServletResponseWrapper`
The default behavior of this method is to return addHeader(String name, String value) on the wrapped response object.

Specified by:
  `addHeader` in interface `HttpServletResponse`
Overrides:
  `addHeader` in class `HttpServletResponseWrapper`
Parameters:
  `name` - the name of the header
  `value` - the additional header value If it contains octet string, it should be encoded according to RFC 2047 (http://www.ietf.org/rfc/rfc2047.txt)
See Also:
  - `HttpServletResponse.setHeader(java.lang.String, java.lang.String)`

### setDateHeader

public void setDateHeader(String name, long value)
Description copied from class: `javax.servlet.http.HttpServletResponseWrapper`
The default behavior of this method is to call setDateHeader(String name, long date) on the wrapped response object.

Specified by:
  `setDateHeader` in interface `HttpServletResponse`
Overrides:
  `setDateHeader` in class `HttpServletResponseWrapper`
Parameters:
  `name` - the name of the header to set
  `value` - the assigned date value
See Also:
  - `HttpServletResponse.containsHeader(java.lang.String)`
  - `HttpServletResponse.addDateHeader(java.lang.String, long)`

### setHeader

public void setHeader(String name, String value)
Description copied from class: `javax.servlet.http.HttpServletResponseWrapper`
The default behavior of this method is to return setHeader(String name, String value) on the wrapped response object.

Specified by:
  `setHeader` in interface `HttpServletResponse`
Overrides:
  `setHeader` in class `HttpServletResponseWrapper`
Parameters:
  `name` - the name of the header
  `value` - the header value If it contains octet string, it should be encoded according to RFC 2047 (http://www.ietf.org/rfc/rfc2047.txt)
See Also:
  - `HttpServletResponse.containsHeader(java.lang.String)`
  - `HttpServletResponse.addHeader(java.lang.String, java.lang.String)`