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`