PumpStreamHandler (Apache Ant API)
Date: 2018-07-10

org.apache.tools.ant.taskdefs

## Class PumpStreamHandler

- java.lang.Object
- - org.apache.tools.ant.taskdefs.PumpStreamHandler

- All Implemented Interfaces:
    ExecuteStreamHandler
  Direct Known Subclasses:
    JUnitTask.JUnitLogStreamHandler, LogStreamHandler

      public class PumpStreamHandler
      extends java.lang.Object
      implements ExecuteStreamHandler

  Copies standard output and error of subprocesses to standard output and error of the parent process.
  Since:
    Ant 1.2

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `protected static class` | `PumpStreamHandler.ThreadWithPumper` Specialized subclass that allows access to the running StreamPumper.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `PumpStreamHandler()` Construct a new `PumpStreamHandler`.
    `PumpStreamHandler(java.io.OutputStream outAndErr)` Construct a new `PumpStreamHandler`.
    `PumpStreamHandler(java.io.OutputStream out, java.io.OutputStream err)` Construct a new `PumpStreamHandler`.
    `PumpStreamHandler(java.io.OutputStream out, java.io.OutputStream err, java.io.InputStream input)` Construct a new `PumpStreamHandler`.
    `PumpStreamHandler(java.io.OutputStream out, java.io.OutputStream err, java.io.InputStream input, boolean nonBlockingRead)` Construct a new `PumpStreamHandler`.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `createProcessErrorPump(java.io.InputStream is, java.io.OutputStream os)` Create the pump to handle error output.
    `protected void` | `createProcessOutputPump(java.io.InputStream is, java.io.OutputStream os)` Create the pump to handle process output.
    `protected java.lang.Thread` | `createPump(java.io.InputStream is, java.io.OutputStream os)` Creates a stream pumper to copy the given input stream to the given output stream.
    `protected java.lang.Thread` | `createPump(java.io.InputStream is, java.io.OutputStream os, boolean closeWhenExhausted)` Creates a stream pumper to copy the given input stream to the given output stream.
    `protected java.lang.Thread` | `createPump(java.io.InputStream is, java.io.OutputStream os, boolean closeWhenExhausted, boolean nonBlockingIO)` Creates a stream pumper to copy the given input stream to the given output stream.
    `protected void` | `finish(java.lang.Thread t)` Waits for a thread to finish while trying to make it finish quicker by stopping the pumper (if the thread is a `ThreadWithPumper` instance) or interrupting the thread.
    `protected java.io.OutputStream` | `getErr()` Get the error stream.
    `protected java.io.OutputStream` | `getOut()` Get the output stream.
    `void` | `setProcessErrorStream(java.io.InputStream is)` Set the `InputStream` from which to read the standard error of the process.
    `void` | `setProcessInputStream(java.io.OutputStream os)` Set the `OutputStream` by means of which input can be sent to the process.
    `void` | `setProcessOutputStream(java.io.InputStream is)` Set the `InputStream` from which to read the standard output of the process.
    `void` | `start()` Start the `Thread`s.
    `void` | `stop()` Stop pumping the streams.

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

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

- - ### Constructor Detail

    - #### PumpStreamHandler

          public PumpStreamHandler(java.io.OutputStream out,
                                   java.io.OutputStream err,
                                   java.io.InputStream input,
                                   boolean nonBlockingRead)

      Construct a new `PumpStreamHandler`.
      Parameters:
        `out` - the output `OutputStream`, must not be null.
        `err` - the error `OutputStream`, must not be null.
        `input` - the input `InputStream`.
        `nonBlockingRead` - set it to `true` if the input should be read with simulated non blocking IO.

    - #### PumpStreamHandler

          public PumpStreamHandler(java.io.OutputStream out,
                                   java.io.OutputStream err,
                                   java.io.InputStream input)

      Construct a new `PumpStreamHandler`.
      Parameters:
        `out` - the output `OutputStream`, must not be null.
        `err` - the error `OutputStream`, must not be null.
        `input` - the input `InputStream`.

    - #### PumpStreamHandler

          public PumpStreamHandler(java.io.OutputStream out,
                                   java.io.OutputStream err)

      Construct a new `PumpStreamHandler`.
      Parameters:
        `out` - the output `OutputStream`, must not be null.
        `err` - the error `OutputStream`, must not be null.

    - #### PumpStreamHandler

          public PumpStreamHandler(java.io.OutputStream outAndErr)

      Construct a new `PumpStreamHandler`.
      Parameters:
        `outAndErr` - the output/error `OutputStream`, must not be null.

    - #### PumpStreamHandler

          public PumpStreamHandler()

      Construct a new `PumpStreamHandler`.

  - ### Method Detail

    - #### setProcessOutputStream

          public void setProcessOutputStream(java.io.InputStream is)

      Set the `InputStream` from which to read the standard output of the process.
      Specified by:
        `setProcessOutputStream` in interface `ExecuteStreamHandler`
      Parameters:
        `is` - the `InputStream`.

    - #### setProcessErrorStream

          public void setProcessErrorStream(java.io.InputStream is)

      Set the `InputStream` from which to read the standard error of the process.
      Specified by:
        `setProcessErrorStream` in interface `ExecuteStreamHandler`
      Parameters:
        `is` - the `InputStream`.

    - #### setProcessInputStream

          public void setProcessInputStream(java.io.OutputStream os)

      Set the `OutputStream` by means of which input can be sent to the process.
      Specified by:
        `setProcessInputStream` in interface `ExecuteStreamHandler`
      Parameters:
        `os` - the `OutputStream`.

    - #### start

          public void start()

      Start the `Thread`s.
      Specified by:
        `start` in interface `ExecuteStreamHandler`

    - #### stop

          public void stop()

      Stop pumping the streams.
      Specified by:
        `stop` in interface `ExecuteStreamHandler`

    - #### finish

          protected final void finish(java.lang.Thread t)

      Waits for a thread to finish while trying to make it finish quicker by stopping the pumper (if the thread is a `ThreadWithPumper` instance) or interrupting the thread.
      Parameters:
        `t` - Thread
      Since:
        Ant 1.8.0

    - #### getErr

          protected java.io.OutputStream getErr()

      Get the error stream.
      Returns:
        `OutputStream`.

    - #### getOut

          protected java.io.OutputStream getOut()

      Get the output stream.
      Returns:
        `OutputStream`.

    - #### createProcessOutputPump

          protected void createProcessOutputPump(java.io.InputStream is,
                                                 java.io.OutputStream os)

      Create the pump to handle process output.
      Parameters:
        `is` - the `InputStream`.
        `os` - the `OutputStream`.

    - #### createProcessErrorPump

          protected void createProcessErrorPump(java.io.InputStream is,
                                                java.io.OutputStream os)

      Create the pump to handle error output.
      Parameters:
        `is` - the input stream to copy from.
        `os` - the output stream to copy to.

    - #### createPump

          protected java.lang.Thread createPump(java.io.InputStream is,
                                                java.io.OutputStream os)

      Creates a stream pumper to copy the given input stream to the given output stream.
      Parameters:
        `is` - the input stream to copy from.
        `os` - the output stream to copy to.
      Returns:
        a thread object that does the pumping.

    - #### createPump

          protected java.lang.Thread createPump(java.io.InputStream is,
                                                java.io.OutputStream os,
                                                boolean closeWhenExhausted)

      Creates a stream pumper to copy the given input stream to the given output stream.
      Parameters:
        `is` - the input stream to copy from.
        `os` - the output stream to copy to.
        `closeWhenExhausted` - if true close the inputstream.
      Returns:
        a thread object that does the pumping, subclasses should return an instance of `ThreadWithPumper`.

    - #### createPump

          protected java.lang.Thread createPump(java.io.InputStream is,
                                                java.io.OutputStream os,
                                                boolean closeWhenExhausted,
                                                boolean nonBlockingIO)

      Creates a stream pumper to copy the given input stream to the given output stream.
      Parameters:
        `is` - the input stream to copy from.
        `os` - the output stream to copy to.
        `closeWhenExhausted` - if true close the inputstream.
        `nonBlockingIO` - set it to `true` to use simulated non blocking IO.
      Returns:
        a thread object that does the pumping, subclasses should return an instance of `ThreadWithPumper`.
      Since:
        Ant 1.8.2