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