git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270268 13f79535-47bb-0310-9956-ffa450edef68master
@@ -24,34 +24,34 @@ import org.apache.myrmidon.api.TaskException; | |||||
* @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a> | * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a> | ||||
* @see Execute | * @see Execute | ||||
*/ | */ | ||||
public class ExecuteWatchdog implements Runnable | |||||
public class ExecuteWatchdog | |||||
implements Runnable | |||||
{ | { | ||||
/** | /** | ||||
* say whether or not the watchog is currently monitoring a process | * say whether or not the watchog is currently monitoring a process | ||||
*/ | */ | ||||
private boolean watch = false; | |||||
private boolean m_watch; | |||||
/** | /** | ||||
* exception that might be thrown during the process execution | * exception that might be thrown during the process execution | ||||
*/ | */ | ||||
private Exception caught = null; | |||||
private Exception m_caught; | |||||
/** | /** | ||||
* say whether or not the process was killed due to running overtime | * say whether or not the process was killed due to running overtime | ||||
*/ | */ | ||||
private boolean killedProcess = false; | |||||
private boolean m_killedProcess; | |||||
/** | /** | ||||
* the process to execute and watch for duration | * the process to execute and watch for duration | ||||
*/ | */ | ||||
private Process process; | |||||
private Process m_process; | |||||
/** | /** | ||||
* timeout duration. Once the process running time exceeds this it should be | * timeout duration. Once the process running time exceeds this it should be | ||||
* killed | * killed | ||||
*/ | */ | ||||
private int timeout; | |||||
private int m_timeout; | |||||
/** | /** | ||||
* Creates a new watchdog with a given timeout. | * Creates a new watchdog with a given timeout. | ||||
@@ -65,7 +65,7 @@ public class ExecuteWatchdog implements Runnable | |||||
{ | { | ||||
throw new IllegalArgumentException( "timeout lesser than 1." ); | throw new IllegalArgumentException( "timeout lesser than 1." ); | ||||
} | } | ||||
this.timeout = timeout; | |||||
this.m_timeout = timeout; | |||||
} | } | ||||
/** | /** | ||||
@@ -76,7 +76,7 @@ public class ExecuteWatchdog implements Runnable | |||||
*/ | */ | ||||
public boolean isWatching() | public boolean isWatching() | ||||
{ | { | ||||
return watch; | |||||
return m_watch; | |||||
} | } | ||||
/** | /** | ||||
@@ -91,10 +91,10 @@ public class ExecuteWatchdog implements Runnable | |||||
public void checkException() | public void checkException() | ||||
throws TaskException | throws TaskException | ||||
{ | { | ||||
if( caught != null ) | |||||
if( m_caught != null ) | |||||
{ | { | ||||
throw new TaskException( "Exception in ExecuteWatchdog.run: " | throw new TaskException( "Exception in ExecuteWatchdog.run: " | ||||
+ caught.getMessage(), caught ); | |||||
+ m_caught.getMessage(), m_caught ); | |||||
} | } | ||||
} | } | ||||
@@ -106,7 +106,7 @@ public class ExecuteWatchdog implements Runnable | |||||
*/ | */ | ||||
public boolean killedProcess() | public boolean killedProcess() | ||||
{ | { | ||||
return killedProcess; | |||||
return m_killedProcess; | |||||
} | } | ||||
/** | /** | ||||
@@ -118,9 +118,9 @@ public class ExecuteWatchdog implements Runnable | |||||
{ | { | ||||
// This isn't a Task, don't have a Project object to log. | // This isn't a Task, don't have a Project object to log. | ||||
// project.log("ExecuteWatchdog: timeout = "+timeout+" msec", Project.MSG_VERBOSE); | // project.log("ExecuteWatchdog: timeout = "+timeout+" msec", Project.MSG_VERBOSE); | ||||
final long until = System.currentTimeMillis() + timeout; | |||||
final long until = System.currentTimeMillis() + m_timeout; | |||||
long now; | long now; | ||||
while( watch && until > ( now = System.currentTimeMillis() ) ) | |||||
while( m_watch && until > ( now = System.currentTimeMillis() ) ) | |||||
{ | { | ||||
try | try | ||||
{ | { | ||||
@@ -138,22 +138,22 @@ public class ExecuteWatchdog implements Runnable | |||||
{ | { | ||||
// We must check if the process was not stopped | // We must check if the process was not stopped | ||||
// before being here | // before being here | ||||
process.exitValue(); | |||||
m_process.exitValue(); | |||||
} | } | ||||
catch( IllegalThreadStateException e ) | catch( IllegalThreadStateException e ) | ||||
{ | { | ||||
// the process is not terminated, if this is really | // the process is not terminated, if this is really | ||||
// a timeout and not a manual stop then kill it. | // a timeout and not a manual stop then kill it. | ||||
if( watch ) | |||||
if( m_watch ) | |||||
{ | { | ||||
killedProcess = true; | |||||
process.destroy(); | |||||
m_killedProcess = true; | |||||
m_process.destroy(); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
catch( Exception e ) | catch( Exception e ) | ||||
{ | { | ||||
caught = e; | |||||
m_caught = e; | |||||
} | } | ||||
finally | finally | ||||
{ | { | ||||
@@ -175,14 +175,14 @@ public class ExecuteWatchdog implements Runnable | |||||
{ | { | ||||
throw new NullPointerException( "process is null." ); | throw new NullPointerException( "process is null." ); | ||||
} | } | ||||
if( this.process != null ) | |||||
if( this.m_process != null ) | |||||
{ | { | ||||
throw new IllegalStateException( "Already running." ); | throw new IllegalStateException( "Already running." ); | ||||
} | } | ||||
this.caught = null; | |||||
this.killedProcess = false; | |||||
this.watch = true; | |||||
this.process = process; | |||||
this.m_caught = null; | |||||
this.m_killedProcess = false; | |||||
this.m_watch = true; | |||||
this.m_process = process; | |||||
final Thread thread = new Thread( this, "WATCHDOG" ); | final Thread thread = new Thread( this, "WATCHDOG" ); | ||||
thread.setDaemon( true ); | thread.setDaemon( true ); | ||||
thread.start(); | thread.start(); | ||||
@@ -194,7 +194,7 @@ public class ExecuteWatchdog implements Runnable | |||||
*/ | */ | ||||
public synchronized void stop() | public synchronized void stop() | ||||
{ | { | ||||
watch = false; | |||||
m_watch = false; | |||||
notifyAll(); | notifyAll(); | ||||
} | } | ||||
@@ -203,8 +203,8 @@ public class ExecuteWatchdog implements Runnable | |||||
*/ | */ | ||||
protected void cleanUp() | protected void cleanUp() | ||||
{ | { | ||||
watch = false; | |||||
process = null; | |||||
m_watch = false; | |||||
m_process = null; | |||||
} | } | ||||
} | } | ||||
@@ -19,18 +19,20 @@ import org.apache.myrmidon.api.TaskException; | |||||
* | * | ||||
* @author thomas.haas@softwired-inc.com | * @author thomas.haas@softwired-inc.com | ||||
*/ | */ | ||||
public class PumpStreamHandler implements ExecuteStreamHandler | |||||
public class PumpStreamHandler | |||||
implements ExecuteStreamHandler | |||||
{ | { | ||||
private Thread errorThread; | |||||
private Thread m_errorThread; | |||||
private Thread m_inputThread; | |||||
private Thread inputThread; | |||||
private OutputStream m_output; | |||||
private OutputStream m_error; | |||||
private OutputStream out, err; | |||||
public PumpStreamHandler( OutputStream out, OutputStream err ) | |||||
public PumpStreamHandler( final OutputStream output, | |||||
final OutputStream error ) | |||||
{ | { | ||||
this.out = out; | |||||
this.err = err; | |||||
m_output = output; | |||||
m_error = error; | |||||
} | } | ||||
public PumpStreamHandler( OutputStream outAndErr ) | public PumpStreamHandler( OutputStream outAndErr ) | ||||
@@ -45,7 +47,7 @@ public class PumpStreamHandler implements ExecuteStreamHandler | |||||
public void setProcessErrorStream( InputStream is ) | public void setProcessErrorStream( InputStream is ) | ||||
{ | { | ||||
createProcessErrorPump( is, err ); | |||||
createProcessErrorPump( is, m_error ); | |||||
} | } | ||||
public void setProcessInputStream( OutputStream os ) | public void setProcessInputStream( OutputStream os ) | ||||
@@ -54,13 +56,13 @@ public class PumpStreamHandler implements ExecuteStreamHandler | |||||
public void setProcessOutputStream( InputStream is ) | public void setProcessOutputStream( InputStream is ) | ||||
{ | { | ||||
createProcessOutputPump( is, out ); | |||||
createProcessOutputPump( is, m_output ); | |||||
} | } | ||||
public void start() | public void start() | ||||
{ | { | ||||
inputThread.start(); | |||||
errorThread.start(); | |||||
m_inputThread.start(); | |||||
m_errorThread.start(); | |||||
} | } | ||||
public void stop() | public void stop() | ||||
@@ -68,28 +70,28 @@ public class PumpStreamHandler implements ExecuteStreamHandler | |||||
{ | { | ||||
try | try | ||||
{ | { | ||||
inputThread.join(); | |||||
m_inputThread.join(); | |||||
} | } | ||||
catch( InterruptedException e ) | catch( InterruptedException e ) | ||||
{ | { | ||||
} | } | ||||
try | try | ||||
{ | { | ||||
errorThread.join(); | |||||
m_errorThread.join(); | |||||
} | } | ||||
catch( InterruptedException e ) | catch( InterruptedException e ) | ||||
{ | { | ||||
} | } | ||||
try | try | ||||
{ | { | ||||
err.flush(); | |||||
m_error.flush(); | |||||
} | } | ||||
catch( IOException e ) | catch( IOException e ) | ||||
{ | { | ||||
} | } | ||||
try | try | ||||
{ | { | ||||
out.flush(); | |||||
m_output.flush(); | |||||
} | } | ||||
catch( IOException e ) | catch( IOException e ) | ||||
{ | { | ||||
@@ -98,22 +100,22 @@ public class PumpStreamHandler implements ExecuteStreamHandler | |||||
protected OutputStream getErr() | protected OutputStream getErr() | ||||
{ | { | ||||
return err; | |||||
return m_error; | |||||
} | } | ||||
protected OutputStream getOut() | protected OutputStream getOut() | ||||
{ | { | ||||
return out; | |||||
return m_output; | |||||
} | } | ||||
protected void createProcessErrorPump( InputStream is, OutputStream os ) | protected void createProcessErrorPump( InputStream is, OutputStream os ) | ||||
{ | { | ||||
errorThread = createPump( is, os ); | |||||
m_errorThread = createPump( is, os ); | |||||
} | } | ||||
protected void createProcessOutputPump( InputStream is, OutputStream os ) | protected void createProcessOutputPump( InputStream is, OutputStream os ) | ||||
{ | { | ||||
inputThread = createPump( is, os ); | |||||
m_inputThread = createPump( is, os ); | |||||
} | } | ||||
/** | /** | ||||
@@ -124,11 +126,11 @@ public class PumpStreamHandler implements ExecuteStreamHandler | |||||
* @param os Description of Parameter | * @param os Description of Parameter | ||||
* @return Description of the Returned Value | * @return Description of the Returned Value | ||||
*/ | */ | ||||
protected Thread createPump( InputStream is, OutputStream os ) | |||||
protected Thread createPump( final InputStream input, | |||||
final OutputStream output ) | |||||
{ | { | ||||
final Thread result = new Thread( new StreamPumper( is, os ) ); | |||||
final Thread result = new Thread( new StreamPumper( input, output ) ); | |||||
result.setDaemon( true ); | result.setDaemon( true ); | ||||
return result; | return result; | ||||
} | } | ||||
} | } |
@@ -24,34 +24,34 @@ import org.apache.myrmidon.api.TaskException; | |||||
* @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a> | * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a> | ||||
* @see Execute | * @see Execute | ||||
*/ | */ | ||||
public class ExecuteWatchdog implements Runnable | |||||
public class ExecuteWatchdog | |||||
implements Runnable | |||||
{ | { | ||||
/** | /** | ||||
* say whether or not the watchog is currently monitoring a process | * say whether or not the watchog is currently monitoring a process | ||||
*/ | */ | ||||
private boolean watch = false; | |||||
private boolean m_watch; | |||||
/** | /** | ||||
* exception that might be thrown during the process execution | * exception that might be thrown during the process execution | ||||
*/ | */ | ||||
private Exception caught = null; | |||||
private Exception m_caught; | |||||
/** | /** | ||||
* say whether or not the process was killed due to running overtime | * say whether or not the process was killed due to running overtime | ||||
*/ | */ | ||||
private boolean killedProcess = false; | |||||
private boolean m_killedProcess; | |||||
/** | /** | ||||
* the process to execute and watch for duration | * the process to execute and watch for duration | ||||
*/ | */ | ||||
private Process process; | |||||
private Process m_process; | |||||
/** | /** | ||||
* timeout duration. Once the process running time exceeds this it should be | * timeout duration. Once the process running time exceeds this it should be | ||||
* killed | * killed | ||||
*/ | */ | ||||
private int timeout; | |||||
private int m_timeout; | |||||
/** | /** | ||||
* Creates a new watchdog with a given timeout. | * Creates a new watchdog with a given timeout. | ||||
@@ -65,7 +65,7 @@ public class ExecuteWatchdog implements Runnable | |||||
{ | { | ||||
throw new IllegalArgumentException( "timeout lesser than 1." ); | throw new IllegalArgumentException( "timeout lesser than 1." ); | ||||
} | } | ||||
this.timeout = timeout; | |||||
this.m_timeout = timeout; | |||||
} | } | ||||
/** | /** | ||||
@@ -76,7 +76,7 @@ public class ExecuteWatchdog implements Runnable | |||||
*/ | */ | ||||
public boolean isWatching() | public boolean isWatching() | ||||
{ | { | ||||
return watch; | |||||
return m_watch; | |||||
} | } | ||||
/** | /** | ||||
@@ -91,10 +91,10 @@ public class ExecuteWatchdog implements Runnable | |||||
public void checkException() | public void checkException() | ||||
throws TaskException | throws TaskException | ||||
{ | { | ||||
if( caught != null ) | |||||
if( m_caught != null ) | |||||
{ | { | ||||
throw new TaskException( "Exception in ExecuteWatchdog.run: " | throw new TaskException( "Exception in ExecuteWatchdog.run: " | ||||
+ caught.getMessage(), caught ); | |||||
+ m_caught.getMessage(), m_caught ); | |||||
} | } | ||||
} | } | ||||
@@ -106,7 +106,7 @@ public class ExecuteWatchdog implements Runnable | |||||
*/ | */ | ||||
public boolean killedProcess() | public boolean killedProcess() | ||||
{ | { | ||||
return killedProcess; | |||||
return m_killedProcess; | |||||
} | } | ||||
/** | /** | ||||
@@ -118,9 +118,9 @@ public class ExecuteWatchdog implements Runnable | |||||
{ | { | ||||
// This isn't a Task, don't have a Project object to log. | // This isn't a Task, don't have a Project object to log. | ||||
// project.log("ExecuteWatchdog: timeout = "+timeout+" msec", Project.MSG_VERBOSE); | // project.log("ExecuteWatchdog: timeout = "+timeout+" msec", Project.MSG_VERBOSE); | ||||
final long until = System.currentTimeMillis() + timeout; | |||||
final long until = System.currentTimeMillis() + m_timeout; | |||||
long now; | long now; | ||||
while( watch && until > ( now = System.currentTimeMillis() ) ) | |||||
while( m_watch && until > ( now = System.currentTimeMillis() ) ) | |||||
{ | { | ||||
try | try | ||||
{ | { | ||||
@@ -138,22 +138,22 @@ public class ExecuteWatchdog implements Runnable | |||||
{ | { | ||||
// We must check if the process was not stopped | // We must check if the process was not stopped | ||||
// before being here | // before being here | ||||
process.exitValue(); | |||||
m_process.exitValue(); | |||||
} | } | ||||
catch( IllegalThreadStateException e ) | catch( IllegalThreadStateException e ) | ||||
{ | { | ||||
// the process is not terminated, if this is really | // the process is not terminated, if this is really | ||||
// a timeout and not a manual stop then kill it. | // a timeout and not a manual stop then kill it. | ||||
if( watch ) | |||||
if( m_watch ) | |||||
{ | { | ||||
killedProcess = true; | |||||
process.destroy(); | |||||
m_killedProcess = true; | |||||
m_process.destroy(); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
catch( Exception e ) | catch( Exception e ) | ||||
{ | { | ||||
caught = e; | |||||
m_caught = e; | |||||
} | } | ||||
finally | finally | ||||
{ | { | ||||
@@ -175,14 +175,14 @@ public class ExecuteWatchdog implements Runnable | |||||
{ | { | ||||
throw new NullPointerException( "process is null." ); | throw new NullPointerException( "process is null." ); | ||||
} | } | ||||
if( this.process != null ) | |||||
if( this.m_process != null ) | |||||
{ | { | ||||
throw new IllegalStateException( "Already running." ); | throw new IllegalStateException( "Already running." ); | ||||
} | } | ||||
this.caught = null; | |||||
this.killedProcess = false; | |||||
this.watch = true; | |||||
this.process = process; | |||||
this.m_caught = null; | |||||
this.m_killedProcess = false; | |||||
this.m_watch = true; | |||||
this.m_process = process; | |||||
final Thread thread = new Thread( this, "WATCHDOG" ); | final Thread thread = new Thread( this, "WATCHDOG" ); | ||||
thread.setDaemon( true ); | thread.setDaemon( true ); | ||||
thread.start(); | thread.start(); | ||||
@@ -194,7 +194,7 @@ public class ExecuteWatchdog implements Runnable | |||||
*/ | */ | ||||
public synchronized void stop() | public synchronized void stop() | ||||
{ | { | ||||
watch = false; | |||||
m_watch = false; | |||||
notifyAll(); | notifyAll(); | ||||
} | } | ||||
@@ -203,8 +203,8 @@ public class ExecuteWatchdog implements Runnable | |||||
*/ | */ | ||||
protected void cleanUp() | protected void cleanUp() | ||||
{ | { | ||||
watch = false; | |||||
process = null; | |||||
m_watch = false; | |||||
m_process = null; | |||||
} | } | ||||
} | } | ||||
@@ -19,18 +19,20 @@ import org.apache.myrmidon.api.TaskException; | |||||
* | * | ||||
* @author thomas.haas@softwired-inc.com | * @author thomas.haas@softwired-inc.com | ||||
*/ | */ | ||||
public class PumpStreamHandler implements ExecuteStreamHandler | |||||
public class PumpStreamHandler | |||||
implements ExecuteStreamHandler | |||||
{ | { | ||||
private Thread errorThread; | |||||
private Thread m_errorThread; | |||||
private Thread m_inputThread; | |||||
private Thread inputThread; | |||||
private OutputStream m_output; | |||||
private OutputStream m_error; | |||||
private OutputStream out, err; | |||||
public PumpStreamHandler( OutputStream out, OutputStream err ) | |||||
public PumpStreamHandler( final OutputStream output, | |||||
final OutputStream error ) | |||||
{ | { | ||||
this.out = out; | |||||
this.err = err; | |||||
m_output = output; | |||||
m_error = error; | |||||
} | } | ||||
public PumpStreamHandler( OutputStream outAndErr ) | public PumpStreamHandler( OutputStream outAndErr ) | ||||
@@ -45,7 +47,7 @@ public class PumpStreamHandler implements ExecuteStreamHandler | |||||
public void setProcessErrorStream( InputStream is ) | public void setProcessErrorStream( InputStream is ) | ||||
{ | { | ||||
createProcessErrorPump( is, err ); | |||||
createProcessErrorPump( is, m_error ); | |||||
} | } | ||||
public void setProcessInputStream( OutputStream os ) | public void setProcessInputStream( OutputStream os ) | ||||
@@ -54,13 +56,13 @@ public class PumpStreamHandler implements ExecuteStreamHandler | |||||
public void setProcessOutputStream( InputStream is ) | public void setProcessOutputStream( InputStream is ) | ||||
{ | { | ||||
createProcessOutputPump( is, out ); | |||||
createProcessOutputPump( is, m_output ); | |||||
} | } | ||||
public void start() | public void start() | ||||
{ | { | ||||
inputThread.start(); | |||||
errorThread.start(); | |||||
m_inputThread.start(); | |||||
m_errorThread.start(); | |||||
} | } | ||||
public void stop() | public void stop() | ||||
@@ -68,28 +70,28 @@ public class PumpStreamHandler implements ExecuteStreamHandler | |||||
{ | { | ||||
try | try | ||||
{ | { | ||||
inputThread.join(); | |||||
m_inputThread.join(); | |||||
} | } | ||||
catch( InterruptedException e ) | catch( InterruptedException e ) | ||||
{ | { | ||||
} | } | ||||
try | try | ||||
{ | { | ||||
errorThread.join(); | |||||
m_errorThread.join(); | |||||
} | } | ||||
catch( InterruptedException e ) | catch( InterruptedException e ) | ||||
{ | { | ||||
} | } | ||||
try | try | ||||
{ | { | ||||
err.flush(); | |||||
m_error.flush(); | |||||
} | } | ||||
catch( IOException e ) | catch( IOException e ) | ||||
{ | { | ||||
} | } | ||||
try | try | ||||
{ | { | ||||
out.flush(); | |||||
m_output.flush(); | |||||
} | } | ||||
catch( IOException e ) | catch( IOException e ) | ||||
{ | { | ||||
@@ -98,22 +100,22 @@ public class PumpStreamHandler implements ExecuteStreamHandler | |||||
protected OutputStream getErr() | protected OutputStream getErr() | ||||
{ | { | ||||
return err; | |||||
return m_error; | |||||
} | } | ||||
protected OutputStream getOut() | protected OutputStream getOut() | ||||
{ | { | ||||
return out; | |||||
return m_output; | |||||
} | } | ||||
protected void createProcessErrorPump( InputStream is, OutputStream os ) | protected void createProcessErrorPump( InputStream is, OutputStream os ) | ||||
{ | { | ||||
errorThread = createPump( is, os ); | |||||
m_errorThread = createPump( is, os ); | |||||
} | } | ||||
protected void createProcessOutputPump( InputStream is, OutputStream os ) | protected void createProcessOutputPump( InputStream is, OutputStream os ) | ||||
{ | { | ||||
inputThread = createPump( is, os ); | |||||
m_inputThread = createPump( is, os ); | |||||
} | } | ||||
/** | /** | ||||
@@ -124,11 +126,11 @@ public class PumpStreamHandler implements ExecuteStreamHandler | |||||
* @param os Description of Parameter | * @param os Description of Parameter | ||||
* @return Description of the Returned Value | * @return Description of the Returned Value | ||||
*/ | */ | ||||
protected Thread createPump( InputStream is, OutputStream os ) | |||||
protected Thread createPump( final InputStream input, | |||||
final OutputStream output ) | |||||
{ | { | ||||
final Thread result = new Thread( new StreamPumper( is, os ) ); | |||||
final Thread result = new Thread( new StreamPumper( input, output ) ); | |||||
result.setDaemon( true ); | result.setDaemon( true ); | ||||
return result; | return result; | ||||
} | } | ||||
} | } |