Package org.apache.coyote.http11.filters

# Class SavedRequestInputFilter

java.lang.Object
org.apache.coyote.http11.filters.SavedRequestInputFilter

All Implemented Interfaces:
  `InputFilter`, `InputBuffer`

public class SavedRequestInputFilter extends Object implements InputFilter
Input filter responsible for replaying the request body when restoring the saved request after FORM authentication.

## Field Summary

Fields
Modifier and Type
Field
Description
`protected ByteChunk`
`input`
The original request body.

## Constructor Summary

Constructors
Constructor
Description
`SavedRequestInputFilter(ByteChunk input)`
Create a new SavedRequestInputFilter.

## Method Summary

Modifier and Type
Method
Description
`int`
`available()`
Obtain an estimate of the number of bytes that can be read without blocking.
`int`
`doRead(ApplicationBufferHandler handler)`
Read from the input stream into the ByteBuffer provided by the ApplicationBufferHandler.
`long`
`end()`
End the current request (has no effect).
`ByteChunk`
`getEncodingName()`
Get the name of the encoding handled by this filter.
`boolean`
`isFinished()`
Has the request body been read fully?
`void`
`recycle()`
Make the filter ready to process the next request.
`void`
`setBuffer(InputBuffer buffer)`
Set the next buffer in the filter pipeline (has no effect).
`void`
`setRequest(Request request)`
Some filters need additional parameters from the request.

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

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

## Field Details

### input

protected ByteChunk input
The original request body.

## Constructor Details

### SavedRequestInputFilter

public SavedRequestInputFilter(ByteChunk input)
Create a new SavedRequestInputFilter.

Parameters:
  `input` - The saved request body to be replayed.

## Method Details

### doRead

public int doRead(ApplicationBufferHandler handler) throws IOException
Description copied from interface: `InputBuffer`
Read from the input stream into the ByteBuffer provided by the ApplicationBufferHandler. IMPORTANT: the current model assumes that the protocol will 'own' the ByteBuffer and return a pointer to it.

Specified by:
  `doRead` in interface `InputBuffer`
Parameters:
  `handler` - ApplicationBufferHandler that provides the buffer to read data into.
Returns:
  The number of bytes that have been added to the buffer or -1 for end of stream
Throws:
  `IOException` - If an I/O error occurs reading from the input stream

### setRequest

public void setRequest(Request request)
Some filters need additional parameters from the request. Set the content length on the request.

Specified by:
  `setRequest` in interface `InputFilter`
Parameters:
  `request` - The request to be associated with this filter

### recycle

public void recycle()
Description copied from interface: `InputFilter`
Make the filter ready to process the next request.

Specified by:
  `recycle` in interface `InputFilter`

### getEncodingName

public ByteChunk getEncodingName()
Description copied from interface: `InputFilter`
Get the name of the encoding handled by this filter.

Specified by:
  `getEncodingName` in interface `InputFilter`
Returns:
  null

### setBuffer

public void setBuffer(InputBuffer buffer)
Set the next buffer in the filter pipeline (has no effect).

Specified by:
  `setBuffer` in interface `InputFilter`
Parameters:
  `buffer` - ignored

### available

public int available()
Description copied from interface: `InputBuffer`
Obtain an estimate of the number of bytes that can be read without blocking. Typically, this will be the number of available bytes known to be buffered.

Specified by:
  `available` in interface `InputBuffer`
Returns:
  The number of bytes that can be read without blocking

### end

public long end() throws IOException
End the current request (has no effect).

Specified by:
  `end` in interface `InputFilter`
Returns:
  0
Throws:
  `IOException` - If an error happens

### isFinished

public boolean isFinished()
Description copied from interface: `InputFilter`
Has the request body been read fully?

Specified by:
  `isFinished` in interface `InputFilter`
Returns:
  `true` if the request body has been fully read, otherwise `false`