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

Constructor Summary
`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
`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`.
    `err` - the error `OutputStream`.
    `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`.
    `err` - the error `OutputStream`.
    `input` - the input `InputStream`.

### PumpStreamHandler

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

  Construct a new `PumpStreamHandler`.

  Parameters:
    `out` - the output `OutputStream`.
    `err` - the error `OutputStream`.

### PumpStreamHandler

    public PumpStreamHandler(java.io.OutputStream outAndErr)

  Construct a new `PumpStreamHandler`.

  Parameters:
    `outAndErr` - the output/error `OutputStream`.

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

  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