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