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 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(OutputStream outAndErr)`
Construct a new `PumpStreamHandler`.
`PumpStreamHandler(OutputStream out, OutputStream err)`
Construct a new `PumpStreamHandler`.
`PumpStreamHandler(OutputStream out, OutputStream err, InputStream input)`
Construct a new `PumpStreamHandler`.
`PumpStreamHandler(OutputStream out, OutputStream err, InputStream input, boolean nonBlockingRead)`
Construct a new `PumpStreamHandler`.

## Method Summary

Modifier and Type
Method
Description
`protected void`
`createProcessErrorPump(InputStream is, OutputStream os)`
Create the pump to handle error output.
`protected void`
`createProcessOutputPump(InputStream is, OutputStream os)`
Create the pump to handle process output.
`protected Thread`
`createPump(InputStream is, OutputStream os)`
Creates a stream pumper to copy the given input stream to the given output stream.
`protected Thread`
`createPump(InputStream is, OutputStream os, boolean closeWhenExhausted)`
Creates a stream pumper to copy the given input stream to the given output stream.
`protected Thread`
`createPump(InputStream is, OutputStream os, boolean closeWhenExhausted, boolean nonBlockingIO)`
Creates a stream pumper to copy the given input stream to the given output stream.
`protected final void`
`finish(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 OutputStream`
`getErr()`
Get the error stream.
`protected OutputStream`
`getOut()`
Get the output stream.
`void`
`setProcessErrorStream(InputStream is)`
Set the `InputStream` from which to read the standard error of the process.
`void`
`setProcessInputStream(OutputStream os)`
Set the `OutputStream` by means of which input can be sent to the process.
`void`
`setProcessOutputStream(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(OutputStream out, OutputStream err, 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(OutputStream out, OutputStream err, 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(OutputStream out, 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(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(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(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(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(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 OutputStream getErr()
Get the error stream.

Returns:
  `OutputStream`.

### getOut

protected OutputStream getOut()
Get the output stream.

Returns:
  `OutputStream`.

### createProcessOutputPump

protected void createProcessOutputPump(InputStream is, OutputStream os)
Create the pump to handle process output.

Parameters:
  `is` - the `InputStream`.
  `os` - the `OutputStream`.

### createProcessErrorPump

protected void createProcessErrorPump(InputStream is, 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 Thread createPump(InputStream is, 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 Thread createPump(InputStream is, 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 Thread createPump(InputStream is, 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