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