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