# Class ExpiresFilter.XServletOutputStream

java.lang.Object
java.io.OutputStream
javax.servlet.ServletOutputStream
org.apache.catalina.filters.ExpiresFilter.XServletOutputStream

All Implemented Interfaces:
  `Closeable, Flushable, AutoCloseable`

Enclosing class:
  `ExpiresFilter`

public class ExpiresFilter.XServletOutputStream extends ServletOutputStream
Wrapping extension of `ServletOutputStream` to trap the "Start Write Response Body" event.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `XServletOutputStream(ServletOutputStream servletOutputStream, HttpServletRequest request, ExpiresFilter.XHttpServletResponse response)`
  Creates a new XServletOutputStream wrapping the given stream.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `close()`
  `void`
  `flush()`
  `boolean`
  `isReady()`
  Checks if a non-blocking write will succeed.
  `void`
  `print(boolean b)`
  Writes a `boolean` value to the client, with no carriage return-line feed (CRLF) character at the end.
  `void`
  `print(char c)`
  Writes a character to the client, with no carriage return-line feed (CRLF) at the end.
  `void`
  `print(double d)`
  Writes a `double` value to the client, with no carriage return-line feed (CRLF) at the end.
  `void`
  `print(float f)`
  Writes a `float` value to the client, with no carriage return-line feed (CRLF) at the end.
  `void`
  `print(int i)`
  Writes an int to the client, with no carriage return-line feed (CRLF) at the end.
  `void`
  `print(long l)`
  Writes a `long` value to the client, with no carriage return-line feed (CRLF) at the end.
  `void`
  `print(String s)`
  Writes a `String` to the client, without a carriage return-line feed (CRLF) character at the end.
  `void`
  `println()`
  Writes a carriage return-line feed (CRLF) to the client.
  `void`
  `println(boolean b)`
  Writes a `boolean` value to the client, followed by a carriage return-line feed (CRLF).
  `void`
  `println(char c)`
  Writes a character to the client, followed by a carriage return-line feed (CRLF).
  `void`
  `println(double d)`
  Writes a `double` value to the client, followed by a carriage return-line feed (CRLF).
  `void`
  `println(float f)`
  Writes a `float` value to the client, followed by a carriage return-line feed (CRLF).
  `void`
  `println(int i)`
  Writes an int to the client, followed by a carriage return-line feed (CRLF) character.
  `void`
  `println(long l)`
  Writes a `long` value to the client, followed by a carriage return-line feed (CRLF).
  `void`
  `println(String s)`
  Writes a `String` to the client, followed by a carriage return-line feed (CRLF).
  `void`
  `setWriteListener(WriteListener listener)`
  Sets the `WriteListener` for this `ServletOutputStream` and thereby switches to non-blocking IO.
  `void`
  `write(byte[] b)`
  `void`
  `write(byte[] b, int off, int len)`
  `void`
  `write(int b)`

  ### Methods inherited from class OutputStream

  `nullOutputStream`

  ### Methods inherited from class Object

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

- ## Constructor Details

  - ### XServletOutputStream

    public XServletOutputStream(ServletOutputStream servletOutputStream, HttpServletRequest request, ExpiresFilter.XHttpServletResponse response)
    Creates a new XServletOutputStream wrapping the given stream.
    Parameters:
      `servletOutputStream` - the ServletOutputStream to wrap
      `request` - the HTTP servlet request
      `response` - the wrapped HTTP servlet response

- ## Method Details

  - ### close

    public void close() throws IOException
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `Closeable`
    Overrides:
      `close` in class `OutputStream`
    Throws:
      `IOException`

  - ### flush

    public void flush() throws IOException
    Specified by:
      `flush` in interface `Flushable`
    Overrides:
      `flush` in class `OutputStream`
    Throws:
      `IOException`

  - ### print

    public void print(boolean b) throws IOException
    Description copied from class: `javax.servlet.ServletOutputStream`
    Writes a `boolean` value to the client, with no carriage return-line feed (CRLF) character at the end.
    Overrides:
      `print` in class `ServletOutputStream`
    Parameters:
      `b` - the `boolean` value to send to the client
    Throws:
      `IOException` - if an input or output exception occurred

  - ### print

    public void print(char c) throws IOException
    Description copied from class: `javax.servlet.ServletOutputStream`
    Writes a character to the client, with no carriage return-line feed (CRLF) at the end.
    Overrides:
      `print` in class `ServletOutputStream`
    Parameters:
      `c` - the character to send to the client
    Throws:
      `IOException` - if an input or output exception occurred

  - ### print

    public void print(double d) throws IOException
    Description copied from class: `javax.servlet.ServletOutputStream`
    Writes a `double` value to the client, with no carriage return-line feed (CRLF) at the end.
    Overrides:
      `print` in class `ServletOutputStream`
    Parameters:
      `d` - the `double` value to send to the client
    Throws:
      `IOException` - if an input or output exception occurred

  - ### print

    public void print(float f) throws IOException
    Description copied from class: `javax.servlet.ServletOutputStream`
    Writes a `float` value to the client, with no carriage return-line feed (CRLF) at the end.
    Overrides:
      `print` in class `ServletOutputStream`
    Parameters:
      `f` - the `float` value to send to the client
    Throws:
      `IOException` - if an input or output exception occurred

  - ### print

    public void print(int i) throws IOException
    Description copied from class: `javax.servlet.ServletOutputStream`
    Writes an int to the client, with no carriage return-line feed (CRLF) at the end.
    Overrides:
      `print` in class `ServletOutputStream`
    Parameters:
      `i` - the int to send to the client
    Throws:
      `IOException` - if an input or output exception occurred

  - ### print

    public void print(long l) throws IOException
    Description copied from class: `javax.servlet.ServletOutputStream`
    Writes a `long` value to the client, with no carriage return-line feed (CRLF) at the end.
    Overrides:
      `print` in class `ServletOutputStream`
    Parameters:
      `l` - the `long` value to send to the client
    Throws:
      `IOException` - if an input or output exception occurred

  - ### print

    public void print(String s) throws IOException
    Description copied from class: `javax.servlet.ServletOutputStream`
    Writes a `String` to the client, without a carriage return-line feed (CRLF) character at the end.
    Overrides:
      `print` in class `ServletOutputStream`
    Parameters:
      `s` - the `String` to send to the client
    Throws:
      `IOException` - if an input or output exception occurred

  - ### println

    public void println() throws IOException
    Description copied from class: `javax.servlet.ServletOutputStream`
    Writes a carriage return-line feed (CRLF) to the client.
    Overrides:
      `println` in class `ServletOutputStream`
    Throws:
      `IOException` - if an input or output exception occurred

  - ### println

    public void println(boolean b) throws IOException
    Description copied from class: `javax.servlet.ServletOutputStream`
    Writes a `boolean` value to the client, followed by a carriage return-line feed (CRLF).
    Overrides:
      `println` in class `ServletOutputStream`
    Parameters:
      `b` - the `boolean` value to write to the client
    Throws:
      `IOException` - if an input or output exception occurred

  - ### println

    public void println(char c) throws IOException
    Description copied from class: `javax.servlet.ServletOutputStream`
    Writes a character to the client, followed by a carriage return-line feed (CRLF).
    Overrides:
      `println` in class `ServletOutputStream`
    Parameters:
      `c` - the character to write to the client
    Throws:
      `IOException` - if an input or output exception occurred

  - ### println

    public void println(double d) throws IOException
    Description copied from class: `javax.servlet.ServletOutputStream`
    Writes a `double` value to the client, followed by a carriage return-line feed (CRLF).
    Overrides:
      `println` in class `ServletOutputStream`
    Parameters:
      `d` - the `double` value to write to the client
    Throws:
      `IOException` - if an input or output exception occurred

  - ### println

    public void println(float f) throws IOException
    Description copied from class: `javax.servlet.ServletOutputStream`
    Writes a `float` value to the client, followed by a carriage return-line feed (CRLF).
    Overrides:
      `println` in class `ServletOutputStream`
    Parameters:
      `f` - the `float` value to write to the client
    Throws:
      `IOException` - if an input or output exception occurred

  - ### println

    public void println(int i) throws IOException
    Description copied from class: `javax.servlet.ServletOutputStream`
    Writes an int to the client, followed by a carriage return-line feed (CRLF) character.
    Overrides:
      `println` in class `ServletOutputStream`
    Parameters:
      `i` - the int to write to the client
    Throws:
      `IOException` - if an input or output exception occurred

  - ### println

    public void println(long l) throws IOException
    Description copied from class: `javax.servlet.ServletOutputStream`
    Writes a `long` value to the client, followed by a carriage return-line feed (CRLF).
    Overrides:
      `println` in class `ServletOutputStream`
    Parameters:
      `l` - the `long` value to write to the client
    Throws:
      `IOException` - if an input or output exception occurred

  - ### println

    public void println(String s) throws IOException
    Description copied from class: `javax.servlet.ServletOutputStream`
    Writes a `String` to the client, followed by a carriage return-line feed (CRLF).
    Overrides:
      `println` in class `ServletOutputStream`
    Parameters:
      `s` - the `String` to write to the client
    Throws:
      `IOException` - if an input or output exception occurred

  - ### write

    public void write(byte[] b) throws IOException
    Overrides:
      `write` in class `OutputStream`
    Throws:
      `IOException`

  - ### write

    public void write(byte[] b, int off, int len) throws IOException
    Overrides:
      `write` in class `OutputStream`
    Throws:
      `IOException`

  - ### write

    public void write(int b) throws IOException
    Specified by:
      `write` in class `OutputStream`
    Throws:
      `IOException`

  - ### 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