Package 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 | Description
  --- | --- | ---
  `protected static class` | `PumpStreamHandler.ThreadWithPumper` | Specialized subclass that allows access to the running StreamPumper.

- ## Constructor Summary

  Constructors
  Constructor | 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

  Modifier and Type | Method | 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 Details

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

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