org.apache.coyote.tomcat4
Class CoyoteResponse

java.lang.Object
  extended byorg.apache.coyote.tomcat4.CoyoteResponse
All Implemented Interfaces:
HttpResponse, javax.servlet.http.HttpServletResponse, Response, javax.servlet.ServletResponse

public class CoyoteResponse
extends java.lang.Object
implements HttpResponse, javax.servlet.http.HttpServletResponse

Wrapper object for the Coyote response.

Version:
$Revision: 1.35 $ $Date: 2004/05/16 16:38:12 $
Author:
Remy Maucherat, Craig R. McClanahan

Field Summary
protected  boolean appCommitted
          The application commit flag.
protected  Connector connector
          Associated Catalina connector.
protected  Context context
          The Context within which this Request is being processed.
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  CoyoteResponseFacade 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  org.apache.coyote.tomcat4.CoyoteOutputStream outputStream
          The associated output stream.
protected  CharChunk redirectURLCC
          Recyclable buffer to hold the redirect URL.
protected  CoyoteRequest 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  org.apache.coyote.tomcat4.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
CoyoteResponse()
           
 
Method Summary
 void addCookie(javax.servlet.http.Cookie cookie)
          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.
 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.ServletResponse 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 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.
 
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
setCharacterEncoding
 

Field Detail

format

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


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.


connector

protected Connector connector
Associated Catalina connector.


coyoteResponse

protected Response coyoteResponse
Coyote response.


context

protected Context context
The Context within which this Request is being processed.


outputBuffer

protected OutputBuffer outputBuffer
The associated output buffer.


outputStream

protected org.apache.coyote.tomcat4.CoyoteOutputStream outputStream
The associated output stream.


writer

protected org.apache.coyote.tomcat4.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 CoyoteRequest request
The request with which this response is associated.


facade

protected CoyoteResponseFacade facade
The facade associated with this response.

Constructor Detail

CoyoteResponse

public CoyoteResponse()
Method Detail

getConnector

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

Specified by:
getConnector in interface Response

setConnector

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

Specified by:
setConnector in interface Response
Parameters:
connector - The new connector

setCoyoteResponse

public void setCoyoteResponse(Response coyoteResponse)
Set 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.

Specified by:
getContext in interface Response

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.

Specified by:
setContext in interface Response
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.

Specified by:
recycle in interface Response

getContentCount

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

Specified by:
getContentCount in interface Response

setAppCommitted

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

Specified by:
setAppCommitted in interface Response
Parameters:
appCommitted - The new application committed flag value

isAppCommitted

public boolean isAppCommitted()
Application commit flag accessor.

Specified by:
isAppCommitted in interface Response

getIncluded

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

Specified by:
getIncluded in interface Response

setIncluded

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

Specified by:
setIncluded in interface Response
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>.

Specified by:
getInfo in interface Response

getRequest

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

Specified by:
getRequest in interface Response

setRequest

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

Specified by:
setRequest in interface Response
Parameters:
request - The new associated request

getResponse

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

Specified by:
getResponse in interface Response

getStream

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

Specified by:
getStream in interface Response

setStream

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

Specified by:
setStream in interface Response
Parameters:
stream - The new output stream

setSuspended

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

Specified by:
setSuspended in interface Response
Parameters:
suspended - The new suspended flag value

isSuspended

public boolean isSuspended()
Suspended flag accessor.

Specified by:
isSuspended in interface Response

setError

public void setError()
Set the error flag.

Specified by:
setError in interface Response

isError

public boolean isError()
Error flag accessor.

Specified by:
isError in interface Response

createOutputStream

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

Specified by:
createOutputStream in interface 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.

Specified by:
finishResponse in interface Response
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.

Specified by:
getContentLength in interface 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 Response

getReporter

public 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.

Specified by:
getReporter in interface Response
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.

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 Response
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

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.

Specified by:
getCookies in interface HttpResponse

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.

Specified by:
getHeader in interface HttpResponse
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.

Specified by:
getHeaderNames in interface HttpResponse

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.

Specified by:
getHeaderValues in interface HttpResponse
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.

Specified by:
getMessage in interface HttpResponse

getStatus

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

Specified by:
getStatus in interface HttpResponse

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.

Specified by:
reset in interface HttpResponse
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

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.

Specified by:
sendAcknowledgement in interface Response
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:
  • The request we are responding to asked for a valid session
  • The requested session ID was not received via a cookie
  • The specified URL points back to somewhere within the web application that is responding to this request

Parameters:
location - Absolute URL to be validated


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