org.apache.coyote

## Class Request

- java.lang.Object
- - org.apache.coyote.Request

    public final class Request
    extends Object

This is a low-level, efficient representation of a server request. Most fields are GC-free, expensive operations are delayed until the user code needs the information. Processing is delegated to modules, using a hook mechanism. This class is not intended for user code - it is used internally by tomcat for processing the request in the most efficient way. Users ( servlets ) can access the information using a facade, which provides the high-level view of the request. Tomcat defines a number of attributes:

- "org.apache.tomcat.request" - allows access to the low-level request object in trusted applications

Author:
  James Duncan Davidson [duncan@eng.sun.com], James Todd [gonzo@eng.sun.com], Jason Hunter [jch@eng.sun.com], Harish Prabandham, Alex Cruikshank [alex@epitonic.com], Hans Bergsten [hans@gefionsoftware.com], Costin Manolache, Remy Maucherat

### Constructor Summary

Constructors
Constructor and Description
`Request()`

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `action(ActionCode actionCode, Object param)`
`void` `addPathParameter(String name, String value)`
`MessageBytes` `contentType()`
`MessageBytes` `decodedURI()`
`int` `doRead(ApplicationBufferHandler handler)` Read data from the input buffer and put it into ApplicationBufferHandler.
`Object` `getAttribute(String name)`
`HashMap<String,Object>` `getAttributes()`
`MessageBytes` `getAuthType()`
`int` `getAvailable()`
`long` `getBytesRead()`
`String` `getCharacterEncoding()` Get the character encoding used for this request.
`Charset` `getCharset()` Get the character encoding used for this request.
`int` `getContentLength()`
`long` `getContentLengthLong()`
`String` `getContentType()`
`ServerCookies` `getCookies()`
`Exception` `getErrorException()` Get the Exception that occurred during the writing of the response.
`String` `getHeader(String name)`
`InputBuffer` `getInputBuffer()`
`int` `getLocalPort()`
`MimeHeaders` `getMimeHeaders()`
`Object` `getNote(int pos)`
`Parameters` `getParameters()`
`String` `getPathParameter(String name)`
`ReadListener` `getReadListener()`
`int` `getRemotePort()`
`MessageBytes` `getRemoteUser()`
`boolean` `getRemoteUserNeedsAuthorization()`
`RequestInfo` `getRequestProcessor()`
`Response` `getResponse()`
`boolean` `getSendfile()`
`int` `getServerPort()`
`long` `getStartTime()`
`boolean` `getSupportsRelativeRedirects()`
`Map<String,String>` `getTrailerFields()`
`UDecoder` `getURLDecoder()`
`boolean` `hasExpectation()`
`boolean` `isExceptionPresent()`
`boolean` `isFinished()`
`boolean` `isProcessing()`
`boolean` `isReady()`
`boolean` `isTrailerFieldsReady()`
`MessageBytes` `localAddr()`
`MessageBytes` `localName()`
`MessageBytes` `method()`
`void` `onDataAvailable()`
`MessageBytes` `peerAddr()`
`MessageBytes` `protocol()`
`MessageBytes` `queryString()`
`void` `recycle()`
`MessageBytes` `remoteAddr()`
`MessageBytes` `remoteHost()`
`MessageBytes` `requestURI()`
`MessageBytes` `scheme()`
`boolean` `sendAllDataReadEvent()`
`MessageBytes` `serverName()` Get the "virtual host", derived from the Host: header associated with this request.
`void` `setAttribute(String name, Object o)`
`void` `setAvailable(int available)`
`void` `setCharset(Charset charset)`
`void` `setContentLength(long len)`
`void` `setContentType(MessageBytes mb)`
`void` `setContentType(String type)`
`void` `setErrorException(Exception ex)` Set the error Exception that occurred during the writing of the response processing.
`void` `setExpectation(boolean expectation)`
`protected void` `setHook(ActionHook hook)`
`void` `setInputBuffer(InputBuffer inputBuffer)`
`void` `setLocalPort(int port)`
`void` `setNote(int pos, Object value)` Used to store private data.
`void` `setReadListener(ReadListener listener)`
`void` `setRemotePort(int port)`
`void` `setRemoteUserNeedsAuthorization(boolean remoteUserNeedsAuthorization)`
`void` `setResponse(Response response)`
`void` `setSendfile(boolean sendfile)`
`void` `setServerPort(int serverPort)`
`void` `setStartTime(long startTime)`
`String` `toString()`
`void` `updateCounters()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### Request

    public Request()

### Method Detail

#### getReadListener

    public ReadListener getReadListener()

#### setReadListener

    public void setReadListener(ReadListener listener)

#### isReady

    public boolean isReady()

#### onDataAvailable

    public void onDataAvailable()
                         throws IOException

Throws:
  `IOException`

#### sendAllDataReadEvent

    public boolean sendAllDataReadEvent()

#### getMimeHeaders

    public MimeHeaders getMimeHeaders()

#### isTrailerFieldsReady

    public boolean isTrailerFieldsReady()

#### getTrailerFields

    public Map<String,String> getTrailerFields()

#### getURLDecoder

    public UDecoder getURLDecoder()

#### scheme

    public MessageBytes scheme()

#### method

    public MessageBytes method()

#### requestURI

    public MessageBytes requestURI()

#### decodedURI

    public MessageBytes decodedURI()

#### queryString

    public MessageBytes queryString()

#### protocol

    public MessageBytes protocol()

#### serverName

    public MessageBytes serverName()

Get the "virtual host", derived from the Host: header associated with this request.

Returns:
  The buffer holding the server name, if any. Use isNull() to check if there is no value set.

#### getServerPort

    public int getServerPort()

#### setServerPort

    public void setServerPort(int serverPort)

#### remoteAddr

    public MessageBytes remoteAddr()

#### peerAddr

    public MessageBytes peerAddr()

#### remoteHost

    public MessageBytes remoteHost()

#### localName

    public MessageBytes localName()

#### localAddr

    public MessageBytes localAddr()

#### getRemotePort

    public int getRemotePort()

#### setRemotePort

    public void setRemotePort(int port)

#### getLocalPort

    public int getLocalPort()

#### setLocalPort

    public void setLocalPort(int port)

#### getCharacterEncoding

    public String getCharacterEncoding()

Get the character encoding used for this request.

Returns:
  The value set via `setCharset(Charset)` or if no call has been made to that method try to obtain if from the content type.

#### getCharset

    public Charset getCharset()
                       throws UnsupportedEncodingException

Get the character encoding used for this request.

Returns:
  The value set via `setCharset(Charset)` or if no call has been made to that method try to obtain if from the content type.
Throws:
  `UnsupportedEncodingException` - If the user agent has specified an invalid character encoding

#### setCharset

    public void setCharset(Charset charset)

#### setContentLength

    public void setContentLength(long len)

#### getContentLength

    public int getContentLength()

#### getContentLengthLong

    public long getContentLengthLong()

#### getContentType

    public String getContentType()

#### setContentType

    public void setContentType(String type)

#### contentType

    public MessageBytes contentType()

#### setContentType

    public void setContentType(MessageBytes mb)

#### getHeader

    public String getHeader(String name)

#### setExpectation

    public void setExpectation(boolean expectation)

#### hasExpectation

    public boolean hasExpectation()

#### getResponse

    public Response getResponse()

#### setResponse

    public void setResponse(Response response)

#### setHook

    protected void setHook(ActionHook hook)

#### action

    public void action(ActionCode actionCode,
                       Object param)

#### getCookies

    public ServerCookies getCookies()

#### getParameters

    public Parameters getParameters()

#### addPathParameter

    public void addPathParameter(String name,
                                 String value)

#### getPathParameter

    public String getPathParameter(String name)

#### setAttribute

    public void setAttribute(String name,
                             Object o)

#### getAttributes

    public HashMap<String,Object> getAttributes()

#### getAttribute

    public Object getAttribute(String name)

#### getRemoteUser

    public MessageBytes getRemoteUser()

#### getRemoteUserNeedsAuthorization

    public boolean getRemoteUserNeedsAuthorization()

#### setRemoteUserNeedsAuthorization

    public void setRemoteUserNeedsAuthorization(boolean remoteUserNeedsAuthorization)

#### getAuthType

    public MessageBytes getAuthType()

#### getAvailable

    public int getAvailable()

#### setAvailable

    public void setAvailable(int available)

#### getSendfile

    public boolean getSendfile()

#### setSendfile

    public void setSendfile(boolean sendfile)

#### isFinished

    public boolean isFinished()

#### getSupportsRelativeRedirects

    public boolean getSupportsRelativeRedirects()

#### getInputBuffer

    public InputBuffer getInputBuffer()

#### setInputBuffer

    public void setInputBuffer(InputBuffer inputBuffer)

#### doRead

    public int doRead(ApplicationBufferHandler handler)
               throws IOException

Read data from the input buffer and put it into ApplicationBufferHandler. The buffer is owned by the protocol implementation - it will be reused on the next read. The Adapter must either process the data in place or copy it to a separate buffer if it needs to hold it. In most cases this is done during byte->char conversions or via InputStream. Unlike InputStream, this interface allows the app to process data in place, without copy.

Parameters:
  `handler` - The destination to which to copy the data
Returns:
  The number of bytes copied
Throws:
  `IOException` - If an I/O error occurs during the copy

#### setErrorException

    public void setErrorException(Exception ex)

Set the error Exception that occurred during the writing of the response processing.

Parameters:
  `ex` - The exception that occurred

#### getErrorException

    public Exception getErrorException()

Get the Exception that occurred during the writing of the response.

Returns:
  The exception that occurred

#### isExceptionPresent

    public boolean isExceptionPresent()

#### toString

    public String toString()

Overrides:
  `toString` in class `Object`

#### getStartTime

    public long getStartTime()

#### setStartTime

    public void setStartTime(long startTime)

#### setNote

    public final void setNote(int pos,
                              Object value)

Used to store private data. Thread data could be used instead - but if you have the req, getting/setting a note is just an array access, may be faster than ThreadLocal for very frequent operations. Example use: Catalina CoyoteAdapter: ADAPTER_NOTES = 1 - stores the HttpServletRequest object ( req/res) To avoid conflicts, note in the range 0 - 8 are reserved for the servlet container ( catalina connector, etc ), and values in 9 - 16 for connector use. 17-31 range is not allocated or used.

Parameters:
  `pos` - Index to use to store the note
  `value` - The value to store at that index

#### getNote

    public final Object getNote(int pos)

#### recycle

    public void recycle()

#### updateCounters

    public void updateCounters()

#### getRequestProcessor

    public RequestInfo getRequestProcessor()

#### getBytesRead

    public long getBytesRead()

#### isProcessing

    public boolean isProcessing()