ByteArrayServletOutputStream (Apache Tomcat 11.0.23 API Documentation)
Description: declaration: package: org.apache.catalina.ssi, class: ByteArrayServletOutputStream

# Class ByteArrayServletOutputStream

java.lang.Object
java.io.OutputStream
jakarta.servlet.ServletOutputStream
org.apache.catalina.ssi.ByteArrayServletOutputStream

All Implemented Interfaces:
  `Closeable, Flushable, AutoCloseable`

public class ByteArrayServletOutputStream extends ServletOutputStream
Class that extends ServletOutputStream, used as a wrapper from within `SsiInclude`

See Also:
  - and ByteArrayOutputStream

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected final ByteArrayOutputStream`
  `buf`
  Our buffer to hold the stream.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ByteArrayServletOutputStream()`
  Construct a new ServletOutputStream.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `isReady()`
  Returns `true` if it is allowable to call any method that may write data (e.g.
  `void`
  `setWriteListener(WriteListener listener)`
  Sets the `WriteListener` for this `ServletOutputStream` and thereby switches to non-blocking IO.
  `byte[]`
  `toByteArray()`
  Returns the underlying byte array.
  `void`
  `write(int b)`
  Write to our buffer.

  ### Methods inherited from class ServletOutputStream

  `close, print, print, print, print, print, print, print, println, println, println, println, println, println, println, println, write`

  ### Methods inherited from class OutputStream

  `flush, nullOutputStream, write, write`

  ### Methods inherited from class Object

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

- ## Field Details

  - ### buf

    protected final ByteArrayOutputStream buf
    Our buffer to hold the stream.

- ## Constructor Details

  - ### ByteArrayServletOutputStream

    public ByteArrayServletOutputStream()
    Construct a new ServletOutputStream.

- ## Method Details

  - ### toByteArray

    public byte[] toByteArray()
    Returns the underlying byte array.
    Returns:
      the byte array

  - ### write

    public void write(int b)
    Write to our buffer.
    Specified by:
      `write` in class `OutputStream`
    Parameters:
      `b` - The parameter to write

  - ### isReady

    public boolean isReady()
    Description copied from class: `jakarta.servlet.ServletOutputStream`
    Returns `true` if it is allowable to call any method that may write data (e.g. `write()`, `print()` or `flush`). In blocking mode, this method will always return `true`, but a subsequent call to a method that writes data may block. In non-blocking mode this method may return `false`, in which case it is illegal to call a method that writes data and an `IllegalStateException` MUST be thrown. When `WriteListener.onWritePossible()` is called, a call to this method that returned `true` is implicit.

    If this method returns `false` and a `WriteListener` has been set via `ServletOutputStream.setWriteListener(WriteListener)`, then container will subsequently invoke `WriteListener.onWritePossible()` once a write operation becomes possible without blocking. Other than the initial call, `WriteListener.onWritePossible()` will only be called if and only if this method is called and returns false.

    Specified by:
      `isReady` in class `ServletOutputStream`
    Returns:
      `true` if data can be written without blocking, otherwise returns `false`.

  - ### setWriteListener

    public void setWriteListener(WriteListener listener)
    Description copied from class: `jakarta.servlet.ServletOutputStream`
    Sets the `WriteListener` for this `ServletOutputStream` and thereby switches to non-blocking IO. It is only valid to switch to non-blocking IO within async processing or HTTP upgrade processing.
    Specified by:
      `setWriteListener` in class `ServletOutputStream`
    Parameters:
      `listener` - The non-blocking IO write listener