# Class ByteArrayServletOutputStream

java.lang.Object
java.io.OutputStream
javax.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()`
Checks if a non-blocking write will succeed.
`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

`print, print, print, print, print, print, print, println, println, println, println, println, println, println, println`

### Methods inherited from class OutputStream

`close, 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: `javax.servlet.ServletOutputStream`
Checks if a non-blocking write will succeed. If this returns `false`, it will cause a callback to `WriteListener.onWritePossible()` when the buffer has emptied. If this method returns `false` no further data must be written until the container calls `WriteListener.onWritePossible()`.

Specified by:
  `isReady` in class `ServletOutputStream`
Returns:
  `true` if data can be written, else `false`

### setWriteListener

public void setWriteListener(WriteListener listener)
Description copied from class: `javax.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