org.apache.catalina.connector
Class Response

java.lang.Object
  extended byorg.apache.catalina.connector.Response
All Implemented Interfaces:
javax.servlet.http.HttpServletResponse, javax.servlet.ServletResponse

public class Response
extends java.lang.Object
implements javax.servlet.http.HttpServletResponse

Wrapper object for the Coyote response.

Version:
$Id: Response.java 939525 2010-04-30 00:36:35Z kkolinko $
Author:
Remy Maucherat, Craig R. McClanahan

Field Summary
protected  boolean appCommitted
          The application commit flag.
protected  Connector connector
          Associated Catalina connector.
protected  java.util.ArrayList cookies
          The set of Cookies associated with this Response.
protected  Response coyoteResponse
          Coyote response.
protected  boolean error
          The error flag.
protected  ResponseFacade facade
          The facade associated with this response.
protected  java.text.SimpleDateFormat format
          The date format we will use for creating date headers.
protected  boolean included
          The included flag.
protected static java.lang.String info
          Descriptive information about this Response implementation.
protected  OutputBuffer outputBuffer
          The associated output buffer.
protected  CoyoteOutputStream outputStream
          The associated output stream.
protected  CharChunk redirectURLCC
          Recyclable buffer to hold the redirect URL.
protected  Request request
          The request with which this response is associated.
protected static StringManager sm
          The string manager for this package.
protected  UEncoder urlEncoder
          URL encoder.
protected  boolean usingOutputStream
          Using output stream flag.
protected  boolean usingWriter
          Using writer flag.
protected  CoyoteWriter writer
          The associated writer.
 
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
Response()
           
 
Method Summary
 void addCookie(javax.servlet.http.Cookie cookie)
          Add the specified Cookie to those that will be included with this Response.
 void addCookieInternal(javax.servlet.http.Cookie cookie, boolean httpOnly)
          Add the specified Cookie to those that will be included with this Response.
 void addDateHeader(java.lang.String name, long value)
          Add the specified date header to the specified value.
 void addHeader(java.lang.String name, java.lang.String value)
          Add the specified header to the specified value.
 void addIntHeader(java.lang.String name, int value)
          Add the specified integer header to the specified value.
 boolean containsHeader(java.lang.String name)
          Has the specified header been set already in this response?
 javax.servlet.ServletOutputStream createOutputStream()
          Create and return a ServletOutputStream to write the content associated with this Response.
 java.lang.String encodeRedirectUrl(java.lang.String url)
          Deprecated. As of Version 2.1 of the Java Servlet API, use encodeRedirectURL() instead.
 java.lang.String encodeRedirectURL(java.lang.String url)
          Encode the session identifier associated with this response into the specified redirect URL, if necessary.
 java.lang.String encodeUrl(java.lang.String url)
          Deprecated. As of Version 2.1 of the Java Servlet API, use encodeURL() instead.
 java.lang.String encodeURL(java.lang.String url)
          Encode the session identifier associated with this response into the specified URL, if necessary.
 void finishResponse()
          Perform whatever actions are required to flush and close the output stream or writer, in a single operation.
 void flushBuffer()
          Flush the buffer and commit this response.
 int getBufferSize()
          Return the actual buffer size used for this Response.
 java.lang.String getCharacterEncoding()
          Return the character encoding used for this Response.
 Connector getConnector()
          Return the Connector through which this Request was received.
 int getContentCount()
          Return the number of bytes actually written to the output stream.
 long getContentCountLong()
          Return the number of bytes actually written to the output stream.
 int getContentLength()
          Return the content length that was set or calculated for this Response.
 java.lang.String getContentType()
          Return the content type that was set or calculated for this response, or null if no content type was set.
 Context getContext()
          Return the Context within which this Request is being processed.
 javax.servlet.http.Cookie[] getCookies()
          Return an array of all cookies set for this response, or a zero-length array if no cookies have been set.
 Response getCoyoteResponse()
          Get the Coyote response.
 java.lang.String getHeader(java.lang.String name)
          Return the value for the specified header, or null if this header has not been set.
 java.lang.String[] getHeaderNames()
          Return an array of all the header names set for this response, or a zero-length array if no headers have been set.
 java.lang.String[] getHeaderValues(java.lang.String name)
          Return an array of all the header values associated with the specified header name, or an zero-length array if there are no such header values.
 boolean getIncluded()
          Return the "processing inside an include" flag.
 java.lang.String getInfo()
          Return descriptive information about this Response implementation and the corresponding version number, in the format <description>/<version>.
 java.util.Locale getLocale()
          Return the Locale assigned to this response.
 java.lang.String getMessage()
          Return the error message that was set with sendError() for this Response.
 javax.servlet.ServletOutputStream getOutputStream()
          Return the servlet output stream associated with this Response.
 java.io.PrintWriter getReporter()
          Return a PrintWriter that can be used to render error messages, regardless of whether a stream or writer has already been acquired.
 Request getRequest()
          Return the Request with which this Response is associated.
 javax.servlet.http.HttpServletResponse getResponse()
          Return the ServletResponse for which this object is the facade.
 int getStatus()
          Return the HTTP status code associated with this Response.
 java.io.OutputStream getStream()
          Return the output stream associated with this Response.
 java.io.PrintWriter getWriter()
          Return the writer associated with this Response.
 boolean isAppCommitted()
          Application commit flag accessor.
 boolean isCommitted()
          Has the output of this response already been committed?
protected  boolean isEncodeable(java.lang.String location)
          Return true if the specified URL should be encoded with a session identifier.
 boolean isError()
          Error flag accessor.
 boolean isSuspended()
          Suspended flag accessor.
 void recycle()
          Release all object references, and initialize instance variables, in preparation for reuse of this object.
 void reset()
          Clear any content written to the buffer.
 void reset(int status, java.lang.String message)
          Reset this response, and specify the values for the HTTP status code and corresponding message.
 void resetBuffer()
          Reset the data buffer but not any status or header information.
 void sendAcknowledgement()
          Send an acknowledgment of a request.
 void sendError(int status)
          Send an error response with the specified status and a default message.
 void sendError(int status, java.lang.String message)
          Send an error response with the specified status and message.
 void sendRedirect(java.lang.String location)
          Send a temporary redirect to the specified redirect location URL.
 void setAppCommitted(boolean appCommitted)
          Set the application commit flag.
 void setBufferSize(int size)
          Set the buffer size to be used for this Response.
 void setCharacterEncoding(java.lang.String charset)
           
 void setConnector(Connector connector)
          Set the Connector through which this Request was received.
 void setContentLength(int length)
          Set the content length (in bytes) for this Response.
 void setContentType(java.lang.String type)
          Set the content type for this Response.
 void setContext(Context context)
          Set the Context within which this Request is being processed.
 void setCoyoteResponse(Response coyoteResponse)
          Set the Coyote response.
 void setDateHeader(java.lang.String name, long value)
          Set the specified date header to the specified value.
 void setError()
          Set the error flag.
 void setHeader(java.lang.String name, java.lang.String value)
          Set the specified header to the specified value.
 void setIncluded(boolean included)
          Set the "processing inside an include" flag.
 void setIntHeader(java.lang.String name, int value)
          Set the specified integer header to the specified value.
 void setLocale(java.util.Locale locale)
          Set the Locale that is appropriate for this response, including setting the appropriate character encoding.
 void setRequest(Request request)
          Set the Request with which this Response is associated.
 void setStatus(int status)
          Set the HTTP status to be returned with this response.
 void setStatus(int status, java.lang.String message)
          Deprecated. As of Version 2.1 of the Java Servlet API, this method has been deprecated due to the ambiguous meaning of the message parameter.
 void setStream(java.io.OutputStream stream)
          Set the output stream associated with this Response.
 void setSuspended(boolean suspended)
          Set the suspended flag.
protected  java.lang.String toEncoded(java.lang.String url, java.lang.String sessionId)
          Return the specified URL with the specified session identifier suitably encoded.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

info

protected static final java.lang.String info
Descriptive information about this Response implementation.

See Also:
Constant Field Values

sm

protected static StringManager sm
The string manager for this package.


format

protected java.text.SimpleDateFormat format
The date format we will use for creating date headers.


connector

protected Connector connector
Associated Catalina connector.


coyoteResponse

protected Response coyoteResponse
Coyote response.


outputBuffer

protected OutputBuffer outputBuffer
The associated output buffer.


outputStream

protected CoyoteOutputStream outputStream
The associated output stream.


writer

protected CoyoteWriter writer
The associated writer.


appCommitted

protected boolean appCommitted
The application commit flag.


included

protected boolean included
The included flag.


error

protected boolean error
The error flag.


cookies

protected java.util.ArrayList cookies
The set of Cookies associated with this Response.


usingOutputStream

protected boolean usingOutputStream
Using output stream flag.


usingWriter

protected boolean usingWriter
Using writer flag.


urlEncoder

protected UEncoder urlEncoder
URL encoder.


redirectURLCC

protected CharChunk redirectURLCC
Recyclable buffer to hold the redirect URL.


request

protected Request request
The request with which this response is associated.


facade

protected ResponseFacade facade
The facade associated with this response.

Constructor Detail

Response

public Response()
Method Detail

getConnector

public Connector getConnector()
Return the Connector through which this Request was received.


setConnector

public void setConnector(Connector connector)
Set the Connector through which this Request was received.

Parameters:
connector - The new connector

setCoyoteResponse

public void setCoyoteResponse(Response coyoteResponse)
Set the Coyote response.

Parameters:
coyoteResponse - The Coyote response

getCoyoteResponse

public Response getCoyoteResponse()
Get the Coyote response.


getContext

public Context getContext()
Return the Context within which this Request is being processed.


setContext

public void setContext(Context context)
Set the Context within which this Request is being processed. This must be called as soon as the appropriate Context is identified, because it identifies the value to be returned by getContextPath(), and thus enables parsing of the request URI.

Parameters:
context - The newly associated Context

recycle

public void recycle()
Release all object references, and initialize instance variables, in preparation for reuse of this object.


getContentCount

public int getContentCount()
Return the number of bytes actually written to the output stream.


getContentCountLong

public long getContentCountLong()
Return the number of bytes actually written to the output stream.


setAppCommitted

public void setAppCommitted(boolean appCommitted)
Set the application commit flag.

Parameters:
appCommitted - The new application committed flag value

isAppCommitted

public boolean isAppCommitted()
Application commit flag accessor.


getIncluded

public boolean getIncluded()
Return the "processing inside an include" flag.


setIncluded

public void setIncluded(boolean included)
Set the "processing inside an include" flag.

Parameters:
included - true if we are currently inside a RequestDispatcher.include(), else false

getInfo

public java.lang.String getInfo()
Return descriptive information about this Response implementation and the corresponding version number, in the format <description>/<version>.


getRequest

public Request getRequest()
Return the Request with which this Response is associated.


setRequest

public void setRequest(Request request)
Set the Request with which this Response is associated.

Parameters:
request - The new associated request

getResponse

public javax.servlet.http.HttpServletResponse getResponse()
Return the ServletResponse for which this object is the facade.


getStream

public java.io.OutputStream getStream()
Return the output stream associated with this Response.


setStream

public void setStream(java.io.OutputStream stream)
Set the output stream associated with this Response.

Parameters:
stream - The new output stream

setSuspended

public void setSuspended(boolean suspended)
Set the suspended flag.

Parameters:
suspended - The new suspended flag value

isSuspended

public boolean isSuspended()
Suspended flag accessor.


setError

public void setError()
Set the error flag.


isError

public boolean isError()
Error flag accessor.


createOutputStream

public javax.servlet.ServletOutputStream createOutputStream()
                                                     throws java.io.IOException
Create and return a ServletOutputStream to write the content associated with this Response.

Throws:
java.io.IOException - if an input/output error occurs

finishResponse

public void finishResponse()
                    throws java.io.IOException
Perform whatever actions are required to flush and close the output stream or writer, in a single operation.

Throws:
java.io.IOException - if an input/output error occurs

getContentLength

public int getContentLength()
Return the content length that was set or calculated for this Response.


getContentType

public java.lang.String getContentType()
Return the content type that was set or calculated for this response, or null if no content type was set.

Specified by:
getContentType in interface javax.servlet.ServletResponse

getReporter

public java.io.PrintWriter getReporter()
                                throws java.io.IOException
Return a PrintWriter that can be used to render error messages, regardless of whether a stream or writer has already been acquired.

Returns:
Writer which can be used for error reports. If the response is not an error report returned using sendError or triggered by an unexpected exception thrown during the servlet processing (and only in that case), null will be returned if the response stream has already been used.
Throws:
java.io.IOException - if an input/output error occurs

flushBuffer

public void flushBuffer()
                 throws java.io.IOException
Flush the buffer and commit this response.

Specified by:
flushBuffer in interface javax.servlet.ServletResponse
Throws:
java.io.IOException - if an input/output error occurs

getBufferSize

public int getBufferSize()
Return the actual buffer size used for this Response.

Specified by:
getBufferSize in interface javax.servlet.ServletResponse

getCharacterEncoding

public java.lang.String getCharacterEncoding()
Return the character encoding used for this Response.

Specified by:
getCharacterEncoding in interface javax.servlet.ServletResponse

getOutputStream

public javax.servlet.ServletOutputStream getOutputStream()
                                                  throws java.io.IOException
Return the servlet output stream associated with this Response.

Specified by:
getOutputStream in interface javax.servlet.ServletResponse
Throws:
java.lang.IllegalStateException - if getWriter has already been called for this response
java.io.IOException - if an input/output error occurs

getLocale

public java.util.Locale getLocale()
Return the Locale assigned to this response.

Specified by:
getLocale in interface javax.servlet.ServletResponse

getWriter

public java.io.PrintWriter getWriter()
                              throws java.io.IOException
Return the writer associated with this Response.

Specified by:
getWriter in interface javax.servlet.ServletResponse
Throws:
java.lang.IllegalStateException - if getOutputStream has already been called for this response
java.io.IOException - if an input/output error occurs

isCommitted

public boolean isCommitted()
Has the output of this response already been committed?

Specified by:
isCommitted in interface javax.servlet.ServletResponse

reset

public void reset()
Clear any content written to the buffer.

Specified by:
reset in interface javax.servlet.ServletResponse
Throws:
java.lang.IllegalStateException - if this response has already been committed

resetBuffer

public void resetBuffer()
Reset the data buffer but not any status or header information.

Specified by:
resetBuffer in interface javax.servlet.ServletResponse
Throws:
java.lang.IllegalStateException - if the response has already been committed

setBufferSize

public void setBufferSize(int size)
Set the buffer size to be used for this Response.

Specified by:
setBufferSize in interface javax.servlet.ServletResponse
Parameters:
size - The new buffer size
Throws:
java.lang.IllegalStateException - if this method is called after output has been committed for this response

setContentLength

public void setContentLength(int length)
Set the content length (in bytes) for this Response.

Specified by:
setContentLength in interface javax.servlet.ServletResponse
Parameters:
length - The new content length

setContentType

public void setContentType(java.lang.String type)
Set the content type for this Response.

Specified by:
setContentType in interface javax.servlet.ServletResponse
Parameters:
type - The new content type

setCharacterEncoding

public void setCharacterEncoding(java.lang.String charset)
Specified by:
setCharacterEncoding in interface javax.servlet.ServletResponse

setLocale

public void setLocale(java.util.Locale locale)
Set the Locale that is appropriate for this response, including setting the appropriate character encoding.

Specified by:
setLocale in interface javax.servlet.ServletResponse
Parameters:
locale - The new locale

getCookies

public javax.servlet.http.Cookie[] getCookies()
Return an array of all cookies set for this response, or a zero-length array if no cookies have been set.


getHeader

public java.lang.String getHeader(java.lang.String name)
Return the value for the specified header, or null if this header has not been set. If more than one value was added for this name, only the first is returned; use getHeaderValues() to retrieve all of them.

Parameters:
name - Header name to look up

getHeaderNames

public java.lang.String[] getHeaderNames()
Return an array of all the header names set for this response, or a zero-length array if no headers have been set.


getHeaderValues

public java.lang.String[] getHeaderValues(java.lang.String name)
Return an array of all the header values associated with the specified header name, or an zero-length array if there are no such header values.

Parameters:
name - Header name to look up

getMessage

public java.lang.String getMessage()
Return the error message that was set with sendError() for this Response.


getStatus

public int getStatus()
Return the HTTP status code associated with this Response.


reset

public void reset(int status,
                  java.lang.String message)
Reset this response, and specify the values for the HTTP status code and corresponding message.

Throws:
java.lang.IllegalStateException - if this response has already been committed

addCookie

public void addCookie(javax.servlet.http.Cookie cookie)
Add the specified Cookie to those that will be included with this Response.

Specified by:
addCookie in interface javax.servlet.http.HttpServletResponse
Parameters:
cookie - Cookie to be added

addCookieInternal

public void addCookieInternal(javax.servlet.http.Cookie cookie,
                              boolean httpOnly)
Add the specified Cookie to those that will be included with this Response.

Parameters:
cookie - Cookie to be added
httpOnly - Should the httpOnly flag be set on this cookie

addDateHeader

public void addDateHeader(java.lang.String name,
                          long value)
Add the specified date header to the specified value.

Specified by:
addDateHeader in interface javax.servlet.http.HttpServletResponse
Parameters:
name - Name of the header to set
value - Date value to be set

addHeader

public void addHeader(java.lang.String name,
                      java.lang.String value)
Add the specified header to the specified value.

Specified by:
addHeader in interface javax.servlet.http.HttpServletResponse
Parameters:
name - Name of the header to set
value - Value to be set

addIntHeader

public void addIntHeader(java.lang.String name,
                         int value)
Add the specified integer header to the specified value.

Specified by:
addIntHeader in interface javax.servlet.http.HttpServletResponse
Parameters:
name - Name of the header to set
value - Integer value to be set

containsHeader

public boolean containsHeader(java.lang.String name)
Has the specified header been set already in this response?

Specified by:
containsHeader in interface javax.servlet.http.HttpServletResponse
Parameters:
name - Name of the header to check

encodeRedirectURL

public java.lang.String encodeRedirectURL(java.lang.String url)
Encode the session identifier associated with this response into the specified redirect URL, if necessary.

Specified by:
encodeRedirectURL in interface javax.servlet.http.HttpServletResponse
Parameters:
url - URL to be encoded

encodeRedirectUrl

public java.lang.String encodeRedirectUrl(java.lang.String url)
Deprecated. As of Version 2.1 of the Java Servlet API, use encodeRedirectURL() instead.

Encode the session identifier associated with this response into the specified redirect URL, if necessary.

Specified by:
encodeRedirectUrl in interface javax.servlet.http.HttpServletResponse
Parameters:
url - URL to be encoded

encodeURL

public java.lang.String encodeURL(java.lang.String url)
Encode the session identifier associated with this response into the specified URL, if necessary.

Specified by:
encodeURL in interface javax.servlet.http.HttpServletResponse
Parameters:
url - URL to be encoded

encodeUrl

public java.lang.String encodeUrl(java.lang.String url)
Deprecated. As of Version 2.1 of the Java Servlet API, use encodeURL() instead.

Encode the session identifier associated with this response into the specified URL, if necessary.

Specified by:
encodeUrl in interface javax.servlet.http.HttpServletResponse
Parameters:
url - URL to be encoded

sendAcknowledgement

public void sendAcknowledgement()
                         throws java.io.IOException
Send an acknowledgment of a request.

Throws:
java.io.IOException - if an input/output error occurs

sendError

public void sendError(int status)
               throws java.io.IOException
Send an error response with the specified status and a default message.

Specified by:
sendError in interface javax.servlet.http.HttpServletResponse
Parameters:
status - HTTP status code to send
Throws:
java.lang.IllegalStateException - if this response has already been committed
java.io.IOException - if an input/output error occurs

sendError

public void sendError(int status,
                      java.lang.String message)
               throws java.io.IOException
Send an error response with the specified status and message.

Specified by:
sendError in interface javax.servlet.http.HttpServletResponse
Parameters:
status - HTTP status code to send
message - Corresponding message to send
Throws:
java.lang.IllegalStateException - if this response has already been committed
java.io.IOException - if an input/output error occurs

sendRedirect

public void sendRedirect(java.lang.String location)
                  throws java.io.IOException
Send a temporary redirect to the specified redirect location URL.

Specified by:
sendRedirect in interface javax.servlet.http.HttpServletResponse
Parameters:
location - Location URL to redirect to
Throws:
java.lang.IllegalStateException - if this response has already been committed
java.io.IOException - if an input/output error occurs

setDateHeader

public void setDateHeader(java.lang.String name,
                          long value)
Set the specified date header to the specified value.

Specified by:
setDateHeader in interface javax.servlet.http.HttpServletResponse
Parameters:
name - Name of the header to set
value - Date value to be set

setHeader

public void setHeader(java.lang.String name,
                      java.lang.String value)
Set the specified header to the specified value.

Specified by:
setHeader in interface javax.servlet.http.HttpServletResponse
Parameters:
name - Name of the header to set
value - Value to be set

setIntHeader

public void setIntHeader(java.lang.String name,
                         int value)
Set the specified integer header to the specified value.

Specified by:
setIntHeader in interface javax.servlet.http.HttpServletResponse
Parameters:
name - Name of the header to set
value - Integer value to be set

setStatus

public void setStatus(int status)
Set the HTTP status to be returned with this response.

Specified by:
setStatus in interface javax.servlet.http.HttpServletResponse
Parameters:
status - The new HTTP status

setStatus

public void setStatus(int status,
                      java.lang.String message)
Deprecated. As of Version 2.1 of the Java Servlet API, this method has been deprecated due to the ambiguous meaning of the message parameter.

Set the HTTP status and message to be returned with this response.

Specified by:
setStatus in interface javax.servlet.http.HttpServletResponse
Parameters:
status - The new HTTP status
message - The associated text message

isEncodeable

protected boolean isEncodeable(java.lang.String location)
Return true if the specified URL should be encoded with a session identifier. This will be true if all of the following conditions are met:

Parameters:
location - Absolute URL to be validated

toEncoded

protected java.lang.String toEncoded(java.lang.String url,
                                     java.lang.String sessionId)
Return the specified URL with the specified session identifier suitably encoded.

Parameters:
url - URL to be encoded with the session id
sessionId - Session id to be included in the encoded URL


Copyright © 2000-2012 Apache Software Foundation. All Rights Reserved.