Package org.zeroturnaround.exec.stream
Class PumpStreamHandler
- java.lang.Object
-
- org.zeroturnaround.exec.stream.PumpStreamHandler
-
- All Implemented Interfaces:
ExecuteStreamHandler
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. If output or error stream are set to null, any feedback from that stream will be lost.
-
-
Field Summary
Fields Modifier and Type Field Description protected java.io.OutputStreamerrprotected java.lang.ThreaderrorThreadprotected java.io.InputStreaminputprotected InputStreamPumperinputStreamPumperprotected java.lang.ThreadinputThreadprivate static org.slf4j.Loggerlogprotected java.io.OutputStreamoutprotected java.lang.ThreadoutputThread
-
Constructor Summary
Constructors Constructor Description PumpStreamHandler()Construct a newPumpStreamHandler.PumpStreamHandler(java.io.OutputStream outAndErr)Construct a newPumpStreamHandler.PumpStreamHandler(java.io.OutputStream out, java.io.OutputStream err)Construct a newPumpStreamHandler.PumpStreamHandler(java.io.OutputStream out, java.io.OutputStream err, java.io.InputStream input)Construct a newPumpStreamHandler.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidcreateProcessErrorPump(java.io.InputStream is, java.io.OutputStream os)Create the pump to handle error output.protected voidcreateProcessOutputPump(java.io.InputStream is, java.io.OutputStream os)Create the pump to handle process output.protected java.lang.ThreadcreatePump(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.ThreadcreatePump(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.ThreadcreatePump(java.io.InputStream is, java.io.OutputStream os, boolean closeWhenExhausted, boolean flushImmediately)Creates a stream pumper to copy the given input stream to the given output stream.protected java.lang.ThreadcreateSystemInPump(java.io.InputStream is, java.io.OutputStream os)Creates a stream pumper to copy the given input stream to the given output stream.voidflush()java.io.OutputStreamgetErr()Get the error stream.java.io.InputStreamgetInput()Get the input stream.java.io.OutputStreamgetOut()Get the output stream.protected java.lang.ThreadnewThread(java.lang.Runnable task)Override this to customize how the background task is created.voidsetProcessErrorStream(java.io.InputStream is)Set theInputStreamfrom which to read the standard error of the process.voidsetProcessInputStream(java.io.OutputStream os)Set theOutputStreamby means of which input can be sent to the process.voidsetProcessOutputStream(java.io.InputStream is)Set theInputStreamfrom which to read the standard output of the process.voidstart()Start theThreads.voidstop()Stop pumping the streams.protected java.lang.RunnablewrapTask(java.lang.Runnable task)Override this to customize how the background task is created.
-
-
-
Field Detail
-
log
private static final org.slf4j.Logger log
-
outputThread
protected java.lang.Thread outputThread
-
errorThread
protected java.lang.Thread errorThread
-
inputThread
protected java.lang.Thread inputThread
-
out
protected final java.io.OutputStream out
-
err
protected final java.io.OutputStream err
-
input
protected final java.io.InputStream input
-
inputStreamPumper
protected InputStreamPumper inputStreamPumper
-
-
Constructor Detail
-
PumpStreamHandler
public PumpStreamHandler()
Construct a newPumpStreamHandler.
-
PumpStreamHandler
public PumpStreamHandler(java.io.OutputStream outAndErr)
Construct a newPumpStreamHandler.- Parameters:
outAndErr- the output/errorOutputStream.
-
PumpStreamHandler
public PumpStreamHandler(java.io.OutputStream out, java.io.OutputStream err)Construct a newPumpStreamHandler.- Parameters:
out- the outputOutputStream.err- the errorOutputStream.
-
PumpStreamHandler
public PumpStreamHandler(java.io.OutputStream out, java.io.OutputStream err, java.io.InputStream input)Construct a newPumpStreamHandler.- Parameters:
out- the outputOutputStream.err- the errorOutputStream.input- the inputInputStream.
-
-
Method Detail
-
setProcessOutputStream
public void setProcessOutputStream(java.io.InputStream is)
Set theInputStreamfrom which to read the standard output of the process.- Specified by:
setProcessOutputStreamin interfaceExecuteStreamHandler- Parameters:
is- theInputStream.
-
setProcessErrorStream
public void setProcessErrorStream(java.io.InputStream is)
Set theInputStreamfrom which to read the standard error of the process.- Specified by:
setProcessErrorStreamin interfaceExecuteStreamHandler- Parameters:
is- theInputStream.
-
setProcessInputStream
public void setProcessInputStream(java.io.OutputStream os)
Set theOutputStreamby means of which input can be sent to the process.- Specified by:
setProcessInputStreamin interfaceExecuteStreamHandler- Parameters:
os- theOutputStream.
-
start
public void start()
Start theThreads.- Specified by:
startin interfaceExecuteStreamHandler
-
stop
public void stop()
Stop pumping the streams.- Specified by:
stopin interfaceExecuteStreamHandler
-
flush
public void flush()
-
getOut
public java.io.OutputStream getOut()
Get the output stream.- Returns:
OutputStream.
-
getErr
public java.io.OutputStream getErr()
Get the error stream.- Returns:
OutputStream.
-
getInput
public java.io.InputStream getInput()
Get the input stream.- Returns:
InputStream.
-
createProcessOutputPump
protected void createProcessOutputPump(java.io.InputStream is, java.io.OutputStream os)Create the pump to handle process output.- Parameters:
is- theInputStream.os- theOutputStream.
-
createProcessErrorPump
protected void createProcessErrorPump(java.io.InputStream is, java.io.OutputStream os)Create the pump to handle error output.- Parameters:
is- theInputStream.os- theOutputStream.
-
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 fromos- the output stream to copy into- Returns:
- the stream pumper thread
-
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 fromos- the output stream to copy intocloseWhenExhausted- close the output stream when the input stream is exhausted- Returns:
- the stream pumper thread
-
createPump
protected java.lang.Thread createPump(java.io.InputStream is, java.io.OutputStream os, boolean closeWhenExhausted, boolean flushImmediately)Creates a stream pumper to copy the given input stream to the given output stream.- Parameters:
is- the input stream to copy fromos- the output stream to copy intocloseWhenExhausted- close the output stream when the input stream is exhaustedflushImmediately- flush the output stream whenever data was written to it- Returns:
- the stream pumper thread
-
createSystemInPump
protected java.lang.Thread createSystemInPump(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 System.in input stream to copy fromos- the output stream to copy into- Returns:
- the stream pumper thread
-
newThread
protected java.lang.Thread newThread(java.lang.Runnable task)
Override this to customize how the background task is created.- Parameters:
task- the task to be run in the background- Returns:
- the thread of the task
-
wrapTask
protected java.lang.Runnable wrapTask(java.lang.Runnable task)
Override this to customize how the background task is created.- Parameters:
task- the task to be run in the background- Returns:
- the runnable of the wrapped task
-
-