diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Java.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Java.java index c5956d101..4d3cb8421 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Java.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Java.java @@ -16,15 +16,13 @@ import org.apache.myrmidon.api.TaskException; import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.exec.Execute; -import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; import org.apache.tools.ant.taskdefs.exec.PumpStreamHandler; -import org.apache.tools.ant.types.Commandline; +import org.apache.tools.ant.types.Argument; import org.apache.tools.ant.types.CommandlineJava; -import org.apache.tools.ant.types.EnvironmentData; +import org.apache.tools.ant.types.EnvironmentVariable; import org.apache.tools.ant.types.Path; import org.apache.tools.ant.types.Reference; -import org.apache.tools.ant.types.EnvironmentVariable; -import org.apache.tools.ant.types.Argument; /** * This task acts as a loader for java applications but allows to use the same @@ -377,13 +375,17 @@ public class Java extends Task Execute exe = null; if( out == null ) { - exe = new Execute( new LogStreamHandler( this, Project.MSG_INFO, - Project.MSG_WARN ) ); + exe = new Execute(); + exe.setOutput( new LogOutputStream( this, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( this, Project.MSG_WARN ) ); + } else { fos = new FileOutputStream( out ); - exe = new Execute( new PumpStreamHandler( fos ) ); + exe = new Execute(); + exe.setOutput( fos ); + exe.setError( fos ); } if( dir == null ) diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Javadoc.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Javadoc.java index c12e4c51a..da69d42c3 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Javadoc.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Javadoc.java @@ -916,7 +916,9 @@ public class Javadoc extends Task JavadocOutputStream out = new JavadocOutputStream( Project.MSG_INFO ); JavadocOutputStream err = new JavadocOutputStream( Project.MSG_WARN ); - Execute exe = new Execute( new PumpStreamHandler( out, err ) ); + Execute exe = new Execute(); + exe.setOutput( out ); + exe.setError( err ); /* * No reason to change the working directory as all filenames and diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Patch.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Patch.java index d67b99d5c..24f32d8ae 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Patch.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Patch.java @@ -13,7 +13,7 @@ import org.apache.myrmidon.api.TaskException; import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.exec.Execute; -import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; import org.apache.tools.ant.types.Commandline; /** @@ -142,8 +142,9 @@ public class Patch extends Task toExecute.createArgument().setFile( originalFile ); } - Execute exe = new Execute( new LogStreamHandler( this, Project.MSG_INFO, - Project.MSG_WARN ) ); + Execute exe = new Execute(); + exe.setOutput( new LogOutputStream( this, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( this, Project.MSG_WARN ) ); exe.setCommandline( toExecute.getCommandline() ); try { diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java index da7b12c29..224353ae9 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java @@ -16,6 +16,7 @@ import org.apache.tools.ant.Project; import org.apache.tools.ant.taskdefs.Javac; import org.apache.tools.ant.taskdefs.exec.Execute; import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; import org.apache.tools.ant.types.Commandline; import org.apache.tools.ant.types.Path; @@ -434,9 +435,9 @@ public abstract class DefaultCompilerAdapter implements CompilerAdapter try { - Execute exe = new Execute( new LogStreamHandler( attributes, - Project.MSG_INFO, - Project.MSG_WARN ) ); + final Execute exe = new Execute(); + exe.setOutput( new LogOutputStream( attributes, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( attributes, Project.MSG_WARN ) ); exe.setWorkingDirectory( project.getBaseDir() ); exe.setCommandline( commandArray ); return exe.execute(); diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/ANTLR.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/ANTLR.java index 3b7b37bfa..5c8c2e248 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/ANTLR.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/ANTLR.java @@ -18,6 +18,7 @@ import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.ExecuteJava; import org.apache.tools.ant.taskdefs.exec.Execute; import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; import org.apache.tools.ant.types.Commandline; import org.apache.tools.ant.types.CommandlineJava; import org.apache.tools.ant.types.Path; @@ -228,8 +229,10 @@ public class ANTLR extends Task private int run( String[] command ) throws TaskException { - Execute exe = new Execute( new LogStreamHandler( this, Project.MSG_INFO, - Project.MSG_WARN ) ); + final Execute exe = new Execute(); + exe.setOutput( new LogOutputStream( this, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( this, Project.MSG_WARN ) ); + if( workingdir != null ) { exe.setWorkingDirectory( workingdir ); diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/clearcase/ClearCase.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/clearcase/ClearCase.java index 68f43672a..d2cdfc6bd 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/clearcase/ClearCase.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/clearcase/ClearCase.java @@ -13,6 +13,7 @@ import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.exec.Execute; import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; import org.apache.tools.ant.types.Commandline; /** @@ -108,8 +109,9 @@ public abstract class ClearCase extends Task { try { - Project aProj = getProject(); - Execute exe = new Execute( new LogStreamHandler( this, Project.MSG_INFO, Project.MSG_WARN ) ); + final Execute exe = new Execute(); + exe.setOutput( new LogOutputStream( this, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( this, Project.MSG_WARN ) ); exe.setWorkingDirectory( getBaseDirectory() ); exe.setCommandline( cmd.getCommandline() ); return exe.execute(); diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/NetCommand.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/NetCommand.java index 7f7805e01..0077a0966 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/NetCommand.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/NetCommand.java @@ -15,6 +15,7 @@ import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.exec.Execute; import org.apache.tools.ant.taskdefs.exec.ExecuteStreamHandler; import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; import org.apache.tools.ant.types.Commandline; /** @@ -201,9 +202,9 @@ public class NetCommand { // default directory to the project's base directory File dir = _owner.getBaseDirectory(); - ExecuteStreamHandler handler = new LogStreamHandler( _owner, - Project.MSG_INFO, Project.MSG_WARN ); - _exe = new Execute( handler ); + _exe = new Execute(); + _exe.setOutput( new LogOutputStream( _owner, Project.MSG_INFO ) ); + _exe.setError( new LogOutputStream( _owner, Project.MSG_WARN ) ); _exe.setWorkingDirectory( dir ); } -}//class +} diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java index 988d1a94b..4c80a24a2 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java @@ -16,6 +16,7 @@ import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.exec.Execute; import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; import org.apache.tools.ant.types.Commandline; import org.apache.tools.ant.types.CommandlineJava; import org.apache.tools.ant.types.Path; @@ -185,16 +186,16 @@ public class JJTree extends Task arg.setValue( "-mx140M" ); arg.setValue( "-Dinstall.root=" + javaccHome.getAbsolutePath() ); - final Execute process = - new Execute( new LogStreamHandler( this, - Project.MSG_INFO, - Project.MSG_INFO ) ); + final Execute exe = new Execute(); + exe.setOutput( new LogOutputStream( this, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( this, Project.MSG_INFO ) ); + log( cmdl.toString(), Project.MSG_VERBOSE ); - process.setCommandline( cmdl.getCommandline() ); + exe.setCommandline( cmdl.getCommandline() ); try { - if( process.execute() != 0 ) + if( exe.execute() != 0 ) { throw new TaskException( "JJTree failed." ); } diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/jdepend/JDependTask.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/jdepend/JDependTask.java index 4c544d5ba..9af50d28b 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/jdepend/JDependTask.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/jdepend/JDependTask.java @@ -16,14 +16,13 @@ import org.apache.tools.ant.PathTokenizer; import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.exec.Execute; -import org.apache.myrmidon.framework.exec.ExecuteWatchdog; import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; -import org.apache.tools.ant.types.Commandline; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; +import org.apache.tools.ant.types.Argument; import org.apache.tools.ant.types.CommandlineJava; import org.apache.tools.ant.types.EnumeratedAttribute; import org.apache.tools.ant.types.Path; import org.apache.tools.ant.types.Reference; -import org.apache.tools.ant.types.Argument; /** * Ant task to run JDepend tests.

@@ -329,12 +328,14 @@ public class JDependTask extends Task commandline.createArgument().setValue( f.getPath() ); } - Execute execute = - new Execute( new LogStreamHandler( this, Project.MSG_INFO, Project.MSG_WARN ) ); - execute.setCommandline( commandline.getCommandline() ); + final Execute exe = new Execute(); + exe.setOutput( new LogOutputStream( this, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( this, Project.MSG_WARN ) ); + + exe.setCommandline( commandline.getCommandline() ); if( getDir() != null ) { - execute.setWorkingDirectory( getDir() ); + exe.setWorkingDirectory( getDir() ); } if( getOutputFile() != null ) @@ -342,7 +343,7 @@ public class JDependTask extends Task log( "Executing: " + commandline.toString(), Project.MSG_VERBOSE ); try { - return execute.execute(); + return exe.execute(); } catch( IOException e ) { diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java index b1ee1a47c..0f30c31cd 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java @@ -13,26 +13,23 @@ import java.io.IOException; import java.io.OutputStream; import java.net.URL; import java.util.ArrayList; +import java.util.Enumeration; import java.util.Hashtable; import java.util.Iterator; import java.util.Properties; import java.util.Random; -import java.util.Enumeration; import org.apache.myrmidon.api.TaskException; import org.apache.tools.ant.AntClassLoader; import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.exec.Execute; -import org.apache.myrmidon.framework.exec.ExecuteWatchdog; import org.apache.tools.ant.taskdefs.exec.LogOutputStream; import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; -import org.apache.tools.ant.types.Commandline; +import org.apache.tools.ant.types.Argument; import org.apache.tools.ant.types.CommandlineJava; import org.apache.tools.ant.types.EnumeratedAttribute; -import org.apache.tools.ant.types.EnvironmentData; -import org.apache.tools.ant.types.Path; import org.apache.tools.ant.types.EnvironmentVariable; -import org.apache.tools.ant.types.Argument; +import org.apache.tools.ant.types.Path; /** * Ant task to run JUnit tests.

@@ -496,22 +493,7 @@ public class JUnitTask extends Task protected Iterator allTests() { Iterator[] enums = {tests.iterator(), batchTests.iterator()}; - return Iterators.fromCompound( enums ); - } - - /** - * @return null if there is a timeout value, otherwise the watchdog - * instance. - * @exception TaskException Description of Exception - */ - protected ExecuteWatchdog createWatchdog() - throws TaskException - { - if( timeout == null ) - { - return null; - } - return new ExecuteWatchdog( timeout.intValue() ); + return Iterator.fromCompound( enums ); } /** @@ -544,13 +526,7 @@ public class JUnitTask extends Task } else { - ExecuteWatchdog watchdog = createWatchdog(); - exitValue = executeAsForked( test, watchdog ); - // null watchdog means no timeout, you'd better not check with null - if( watchdog != null ) - { - wasKilled = watchdog.killedProcess(); - } + exitValue = executeAsForked( test ); } // if there is an error/failure and that it should halt, stop everything otherwise @@ -622,7 +598,7 @@ public class JUnitTask extends Task * @return Description of the Returned Value * @exception TaskException Description of Exception */ - private int executeAsForked( JUnitTest test, ExecuteWatchdog watchdog ) + private int executeAsForked( JUnitTest test ) throws TaskException { CommandlineJava cmd = (CommandlineJava)commandline.clone(); @@ -676,18 +652,21 @@ public class JUnitTask extends Task throw new TaskException( "Error creating temporary properties file.", ioe ); } - final Execute execute = new Execute( new LogStreamHandler( this, Project.MSG_INFO, Project.MSG_WARN ), watchdog ); - execute.setCommandline( cmd.getCommandline() ); + final Execute exe = new Execute(); + exe.setOutput( new LogOutputStream( this, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( this, Project.MSG_WARN ) ); + + exe.setCommandline( cmd.getCommandline() ); if( dir != null ) { - execute.setWorkingDirectory( dir ); + exe.setWorkingDirectory( dir ); } log( "Executing: " + cmd.toString(), Project.MSG_VERBOSE ); int retVal; try { - retVal = execute.execute(); + retVal = exe.execute(); } catch( IOException e ) { diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/metamata/AbstractMetamataTask.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/metamata/AbstractMetamataTask.java index 794a1e8fe..a455e154c 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/metamata/AbstractMetamataTask.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/metamata/AbstractMetamataTask.java @@ -200,8 +200,7 @@ public abstract class AbstractMetamataTask extends Task try { setUp(); - ExecuteStreamHandler handler = createStreamHandler(); - execute0( handler ); + execute0(); } finally { @@ -304,7 +303,7 @@ public abstract class AbstractMetamataTask extends Task * * @return Description of the Returned Value */ - protected abstract ExecuteStreamHandler createStreamHandler(); + protected abstract void setupStreamHandler( Execute exe ); /** * execute the process with a specific handler @@ -312,15 +311,16 @@ public abstract class AbstractMetamataTask extends Task * @param handler Description of Parameter * @exception TaskException Description of Exception */ - protected void execute0( ExecuteStreamHandler handler ) + protected void execute0() throws TaskException { - final Execute process = new Execute( handler ); + final Execute exe = new Execute(); + setupStreamHandler( exe ); log( cmdl.toString(), Project.MSG_VERBOSE ); - process.setCommandline( cmdl.getCommandline() ); + exe.setCommandline( cmdl.getCommandline() ); try { - if( process.execute() != 0 ) + if( exe.execute() != 0 ) { throw new TaskException( "Metamata task failed." ); } diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MAudit.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MAudit.java index ee34810bd..2169c1c59 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MAudit.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MAudit.java @@ -16,6 +16,8 @@ import org.apache.myrmidon.api.TaskException; import org.apache.tools.ant.Project; import org.apache.tools.ant.taskdefs.exec.ExecuteStreamHandler; import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; +import org.apache.tools.ant.taskdefs.exec.Execute; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; import org.apache.tools.ant.types.Path; /** @@ -186,7 +188,7 @@ public class MAudit extends AbstractMetamataTask options.add( "-unused" ); options.add( searchPath.toString() ); } - addAllArrayList( options, includedFiles.keys() ); + addAllArrayList( options, includedFiles.keySet().iterator() ); return options; } @@ -220,14 +222,14 @@ public class MAudit extends AbstractMetamataTask */ } - protected ExecuteStreamHandler createStreamHandler() + protected void setupStreamHandler( final Execute exe ) throws TaskException { - ExecuteStreamHandler handler = null; // if we didn't specify a file, then use a screen report if( outFile == null ) { - handler = new LogStreamHandler( this, Project.MSG_INFO, Project.MSG_INFO ); + exe.setOutput( new LogOutputStream( this, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( this, Project.MSG_WARN ) ); } else { @@ -235,14 +237,16 @@ public class MAudit extends AbstractMetamataTask { //XXX OutputStream out = new FileOutputStream( outFile ); - handler = new MAuditStreamHandler( this, out ); + //handler = new MAuditStreamHandler( this, out ); + //FIXME: should behave like in Ant1.x + exe.setOutput( out ); + exe.setError( out ); } catch( IOException e ) { throw new TaskException( "Error", e ); } } - return handler; } /** diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MMetrics.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MMetrics.java index 95c137803..f3f344f75 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MMetrics.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MMetrics.java @@ -16,6 +16,8 @@ import org.apache.myrmidon.api.TaskException; import org.apache.tools.ant.Project; import org.apache.tools.ant.taskdefs.exec.ExecuteStreamHandler; import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; +import org.apache.tools.ant.taskdefs.exec.Execute; import org.apache.tools.ant.types.Path; /** @@ -161,7 +163,7 @@ public class MMetrics extends AbstractMetamataTask options.add( dirs[ i ] ); } // files next. - addAllArrayList( options, includedFiles.keys() ); + addAllArrayList( options, includedFiles.keySet().iterator() ); return options; } @@ -223,11 +225,10 @@ public class MMetrics extends AbstractMetamataTask * * @return Description of the Returned Value */ - protected ExecuteStreamHandler createStreamHandler() + protected void setupStreamHandler( final Execute exe ) { - // write the report directtly to an XML stream - // return new MMetricsStreamHandler(this, xmlStream); - return new LogStreamHandler( this, Project.MSG_INFO, Project.MSG_INFO ); + exe.setOutput( new LogOutputStream( this, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( this, Project.MSG_INFO ) ); } protected void execute0( ExecuteStreamHandler handler ) diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/SimpleP4OutputHandler.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/SimpleP4OutputHandler.java index 7ab63ca4b..e0cac3b79 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/SimpleP4OutputHandler.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/SimpleP4OutputHandler.java @@ -10,10 +10,10 @@ package org.apache.tools.ant.taskdefs.optional.perforce; import org.apache.myrmidon.api.TaskException; import org.apache.tools.ant.Project; -public class SimpleP4OutputHandler extends P4HandlerAdapter +public class SimpleP4OutputHandler + extends P4HandlerAdapter { - - P4Base parent; + private P4Base parent; public SimpleP4OutputHandler( P4Base parent ) { diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java index ed83945a5..38b8a0a35 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java @@ -15,6 +15,7 @@ import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; +import java.io.OutputStream; import java.text.MessageFormat; import java.text.ParseException; import java.util.ArrayList; @@ -23,10 +24,7 @@ import java.util.Random; import org.apache.myrmidon.api.TaskException; import org.apache.tools.ant.Project; import org.apache.tools.ant.taskdefs.exec.Execute; -import org.apache.tools.ant.taskdefs.exec.ExecuteStreamHandler; import org.apache.tools.ant.taskdefs.exec.LogOutputStream; -import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; -import org.apache.tools.ant.taskdefs.exec.PumpStreamHandler; import org.apache.tools.ant.types.Commandline; /** @@ -367,7 +365,7 @@ public class Pvcs extends org.apache.tools.ant.Task tmp = new File( "pvcs_ant_" + rand.nextLong() + ".log" ); tmp2 = new File( "pvcs_ant_" + rand.nextLong() + ".log" ); log( "Executing " + commandLine.toString(), Project.MSG_VERBOSE ); - result = runCmd( commandLine, new PumpStreamHandler( new FileOutputStream( tmp ), new LogOutputStream( this, Project.MSG_WARN ) ) ); + result = runCmd( commandLine, new FileOutputStream( tmp ), new LogOutputStream( this, Project.MSG_WARN ) ); if( result != 0 && !ignorerc ) { String msg = "Failed executing: " + commandLine.toString(); @@ -409,7 +407,10 @@ public class Pvcs extends org.apache.tools.ant.Task commandLine.createArgument().setValue( "@" + tmp2.getAbsolutePath() ); log( "Getting files", Project.MSG_INFO ); log( "Executing " + commandLine.toString(), Project.MSG_VERBOSE ); - result = runCmd( commandLine, new LogStreamHandler( this, Project.MSG_INFO, Project.MSG_WARN ) ); + final LogOutputStream output = new LogOutputStream( this, Project.MSG_INFO ); + final LogOutputStream error = new LogOutputStream( this, Project.MSG_WARN ); + result = runCmd( commandLine, output, error ); + if( result != 0 && !ignorerc ) { String msg = "Failed executing: " + commandLine.toString() + ". Return code was " + result; @@ -445,13 +446,14 @@ public class Pvcs extends org.apache.tools.ant.Task } } - protected int runCmd( Commandline cmd, ExecuteStreamHandler out ) + protected int runCmd( Commandline cmd, OutputStream output, OutputStream error ) throws TaskException { try { - Project aProj = getProject(); - Execute exe = new Execute( out ); + final Execute exe = new Execute(); + exe.setOutput( output ); + exe.setError( error ); exe.setWorkingDirectory( getBaseDirectory() ); exe.setCommandline( cmd.getCommandline() ); return exe.execute(); diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovMerge.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovMerge.java index e161a784a..8628704b9 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovMerge.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovMerge.java @@ -19,6 +19,7 @@ import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.exec.Execute; import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; import org.apache.tools.ant.types.Commandline; import org.apache.tools.ant.types.FileSet; @@ -115,14 +116,15 @@ public class CovMerge extends Task } cmdl.createArgument().setValue( "-jp_paramfile=" + paramfile.getAbsolutePath() ); - LogStreamHandler handler = new LogStreamHandler( this, Project.MSG_INFO, Project.MSG_WARN ); - Execute exec = new Execute( handler ); + final Execute exe = new Execute(); + exe.setOutput( new LogOutputStream( this, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( this, Project.MSG_WARN ) ); log( cmdl.toString(), Project.MSG_VERBOSE ); - exec.setCommandline( cmdl.getCommandline() ); + exe.setCommandline( cmdl.getCommandline() ); // JProbe process always return 0 so we will not be // able to check for failure ! :-( - int exitValue = exec.execute(); + int exitValue = exe.execute(); if( exitValue != 0 ) { throw new TaskException( "JProbe Coverage Merging failed (" + exitValue + ")" ); diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovReport.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovReport.java index 6c0b7f2a8..03c56cdd4 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovReport.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovReport.java @@ -22,6 +22,7 @@ import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.exec.Execute; import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; import org.apache.tools.ant.types.Commandline; import org.apache.tools.ant.types.EnumeratedAttribute; import org.apache.tools.ant.types.Path; @@ -242,11 +243,12 @@ public class CovReport extends Task } // use the custom handler for stdin issues - LogStreamHandler handler = new LogStreamHandler( this, Project.MSG_INFO, Project.MSG_WARN ); - Execute exec = new Execute( handler ); + final Execute exe = new Execute(); + exe.setOutput( new LogOutputStream( this, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( this, Project.MSG_WARN ) ); log( cmdl.toString(), Project.MSG_VERBOSE ); - exec.setCommandline( cmdl.getCommandline() ); - int exitValue = exec.execute(); + exe.setCommandline( cmdl.getCommandline() ); + int exitValue = exe.execute(); if( exitValue != 0 ) { throw new TaskException( "JProbe Coverage Report failed (" + exitValue + ")" ); diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/Coverage.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/Coverage.java index a812e039c..23090e0bd 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/Coverage.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/Coverage.java @@ -539,8 +539,6 @@ public class Coverage extends Task /** * specific pumper to avoid those nasty stdin issues - * - * @author RT */ static class CoverageStreamHandler extends LogStreamHandler { diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java index 3f0b62c62..1a5b0e4bd 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java @@ -15,6 +15,7 @@ import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.exec.Execute; import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; import org.apache.tools.ant.types.Commandline; /** @@ -206,9 +207,9 @@ public abstract class MSVSS extends Task { try { - Execute exe = new Execute( new LogStreamHandler( this, - Project.MSG_INFO, - Project.MSG_WARN ) ); + final Execute exe = new Execute(); + exe.setOutput( new LogOutputStream( this, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( this, Project.MSG_WARN ) ); // If location of ss.ini is specified we need to set the // environment-variable SSDIR to this value diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/unix/Rpm.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/unix/Rpm.java index 6acbec601..348f33eef 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/unix/Rpm.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/unix/Rpm.java @@ -144,13 +144,13 @@ public class Rpm extends Task toExecute.createArgument().setValue( "SPECS/" + specFile ); - ExecuteStreamHandler streamhandler = null; OutputStream outputstream = null; OutputStream errorstream = null; + if( error == null && output == null ) { - streamhandler = new LogStreamHandler( this, Project.MSG_INFO, - Project.MSG_WARN ); + outputstream = new LogOutputStream( this, Project.MSG_INFO ); + errorstream = new LogOutputStream( this, Project.MSG_WARN ); } else { @@ -184,10 +184,11 @@ public class Rpm extends Task { errorstream = new LogOutputStream( this, Project.MSG_WARN ); } - streamhandler = new PumpStreamHandler( outputstream, errorstream ); } - Execute exe = new Execute( streamhandler ); + Execute exe = new Execute(); + exe.setOutput( outputstream ); + exe.setError( errorstream ); if( topDir == null ) topDir = getBaseDirectory(); exe.setWorkingDirectory( topDir ); diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Java.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Java.java index c5956d101..4d3cb8421 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Java.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Java.java @@ -16,15 +16,13 @@ import org.apache.myrmidon.api.TaskException; import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.exec.Execute; -import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; import org.apache.tools.ant.taskdefs.exec.PumpStreamHandler; -import org.apache.tools.ant.types.Commandline; +import org.apache.tools.ant.types.Argument; import org.apache.tools.ant.types.CommandlineJava; -import org.apache.tools.ant.types.EnvironmentData; +import org.apache.tools.ant.types.EnvironmentVariable; import org.apache.tools.ant.types.Path; import org.apache.tools.ant.types.Reference; -import org.apache.tools.ant.types.EnvironmentVariable; -import org.apache.tools.ant.types.Argument; /** * This task acts as a loader for java applications but allows to use the same @@ -377,13 +375,17 @@ public class Java extends Task Execute exe = null; if( out == null ) { - exe = new Execute( new LogStreamHandler( this, Project.MSG_INFO, - Project.MSG_WARN ) ); + exe = new Execute(); + exe.setOutput( new LogOutputStream( this, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( this, Project.MSG_WARN ) ); + } else { fos = new FileOutputStream( out ); - exe = new Execute( new PumpStreamHandler( fos ) ); + exe = new Execute(); + exe.setOutput( fos ); + exe.setError( fos ); } if( dir == null ) diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Javadoc.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Javadoc.java index c12e4c51a..da69d42c3 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Javadoc.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Javadoc.java @@ -916,7 +916,9 @@ public class Javadoc extends Task JavadocOutputStream out = new JavadocOutputStream( Project.MSG_INFO ); JavadocOutputStream err = new JavadocOutputStream( Project.MSG_WARN ); - Execute exe = new Execute( new PumpStreamHandler( out, err ) ); + Execute exe = new Execute(); + exe.setOutput( out ); + exe.setError( err ); /* * No reason to change the working directory as all filenames and diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Patch.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Patch.java index d67b99d5c..24f32d8ae 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Patch.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Patch.java @@ -13,7 +13,7 @@ import org.apache.myrmidon.api.TaskException; import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.exec.Execute; -import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; import org.apache.tools.ant.types.Commandline; /** @@ -142,8 +142,9 @@ public class Patch extends Task toExecute.createArgument().setFile( originalFile ); } - Execute exe = new Execute( new LogStreamHandler( this, Project.MSG_INFO, - Project.MSG_WARN ) ); + Execute exe = new Execute(); + exe.setOutput( new LogOutputStream( this, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( this, Project.MSG_WARN ) ); exe.setCommandline( toExecute.getCommandline() ); try { diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java index da7b12c29..224353ae9 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java @@ -16,6 +16,7 @@ import org.apache.tools.ant.Project; import org.apache.tools.ant.taskdefs.Javac; import org.apache.tools.ant.taskdefs.exec.Execute; import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; import org.apache.tools.ant.types.Commandline; import org.apache.tools.ant.types.Path; @@ -434,9 +435,9 @@ public abstract class DefaultCompilerAdapter implements CompilerAdapter try { - Execute exe = new Execute( new LogStreamHandler( attributes, - Project.MSG_INFO, - Project.MSG_WARN ) ); + final Execute exe = new Execute(); + exe.setOutput( new LogOutputStream( attributes, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( attributes, Project.MSG_WARN ) ); exe.setWorkingDirectory( project.getBaseDir() ); exe.setCommandline( commandArray ); return exe.execute(); diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/ANTLR.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/ANTLR.java index 3b7b37bfa..5c8c2e248 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/ANTLR.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/ANTLR.java @@ -18,6 +18,7 @@ import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.ExecuteJava; import org.apache.tools.ant.taskdefs.exec.Execute; import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; import org.apache.tools.ant.types.Commandline; import org.apache.tools.ant.types.CommandlineJava; import org.apache.tools.ant.types.Path; @@ -228,8 +229,10 @@ public class ANTLR extends Task private int run( String[] command ) throws TaskException { - Execute exe = new Execute( new LogStreamHandler( this, Project.MSG_INFO, - Project.MSG_WARN ) ); + final Execute exe = new Execute(); + exe.setOutput( new LogOutputStream( this, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( this, Project.MSG_WARN ) ); + if( workingdir != null ) { exe.setWorkingDirectory( workingdir ); diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/clearcase/ClearCase.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/clearcase/ClearCase.java index 68f43672a..d2cdfc6bd 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/clearcase/ClearCase.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/clearcase/ClearCase.java @@ -13,6 +13,7 @@ import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.exec.Execute; import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; import org.apache.tools.ant.types.Commandline; /** @@ -108,8 +109,9 @@ public abstract class ClearCase extends Task { try { - Project aProj = getProject(); - Execute exe = new Execute( new LogStreamHandler( this, Project.MSG_INFO, Project.MSG_WARN ) ); + final Execute exe = new Execute(); + exe.setOutput( new LogOutputStream( this, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( this, Project.MSG_WARN ) ); exe.setWorkingDirectory( getBaseDirectory() ); exe.setCommandline( cmd.getCommandline() ); return exe.execute(); diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/dotnet/NetCommand.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/dotnet/NetCommand.java index 7f7805e01..0077a0966 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/dotnet/NetCommand.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/dotnet/NetCommand.java @@ -15,6 +15,7 @@ import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.exec.Execute; import org.apache.tools.ant.taskdefs.exec.ExecuteStreamHandler; import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; import org.apache.tools.ant.types.Commandline; /** @@ -201,9 +202,9 @@ public class NetCommand { // default directory to the project's base directory File dir = _owner.getBaseDirectory(); - ExecuteStreamHandler handler = new LogStreamHandler( _owner, - Project.MSG_INFO, Project.MSG_WARN ); - _exe = new Execute( handler ); + _exe = new Execute(); + _exe.setOutput( new LogOutputStream( _owner, Project.MSG_INFO ) ); + _exe.setError( new LogOutputStream( _owner, Project.MSG_WARN ) ); _exe.setWorkingDirectory( dir ); } -}//class +} diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java index 988d1a94b..4c80a24a2 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java @@ -16,6 +16,7 @@ import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.exec.Execute; import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; import org.apache.tools.ant.types.Commandline; import org.apache.tools.ant.types.CommandlineJava; import org.apache.tools.ant.types.Path; @@ -185,16 +186,16 @@ public class JJTree extends Task arg.setValue( "-mx140M" ); arg.setValue( "-Dinstall.root=" + javaccHome.getAbsolutePath() ); - final Execute process = - new Execute( new LogStreamHandler( this, - Project.MSG_INFO, - Project.MSG_INFO ) ); + final Execute exe = new Execute(); + exe.setOutput( new LogOutputStream( this, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( this, Project.MSG_INFO ) ); + log( cmdl.toString(), Project.MSG_VERBOSE ); - process.setCommandline( cmdl.getCommandline() ); + exe.setCommandline( cmdl.getCommandline() ); try { - if( process.execute() != 0 ) + if( exe.execute() != 0 ) { throw new TaskException( "JJTree failed." ); } diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/jdepend/JDependTask.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/jdepend/JDependTask.java index 4c544d5ba..9af50d28b 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/jdepend/JDependTask.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/jdepend/JDependTask.java @@ -16,14 +16,13 @@ import org.apache.tools.ant.PathTokenizer; import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.exec.Execute; -import org.apache.myrmidon.framework.exec.ExecuteWatchdog; import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; -import org.apache.tools.ant.types.Commandline; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; +import org.apache.tools.ant.types.Argument; import org.apache.tools.ant.types.CommandlineJava; import org.apache.tools.ant.types.EnumeratedAttribute; import org.apache.tools.ant.types.Path; import org.apache.tools.ant.types.Reference; -import org.apache.tools.ant.types.Argument; /** * Ant task to run JDepend tests.

@@ -329,12 +328,14 @@ public class JDependTask extends Task commandline.createArgument().setValue( f.getPath() ); } - Execute execute = - new Execute( new LogStreamHandler( this, Project.MSG_INFO, Project.MSG_WARN ) ); - execute.setCommandline( commandline.getCommandline() ); + final Execute exe = new Execute(); + exe.setOutput( new LogOutputStream( this, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( this, Project.MSG_WARN ) ); + + exe.setCommandline( commandline.getCommandline() ); if( getDir() != null ) { - execute.setWorkingDirectory( getDir() ); + exe.setWorkingDirectory( getDir() ); } if( getOutputFile() != null ) @@ -342,7 +343,7 @@ public class JDependTask extends Task log( "Executing: " + commandline.toString(), Project.MSG_VERBOSE ); try { - return execute.execute(); + return exe.execute(); } catch( IOException e ) { diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java index b1ee1a47c..0f30c31cd 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java @@ -13,26 +13,23 @@ import java.io.IOException; import java.io.OutputStream; import java.net.URL; import java.util.ArrayList; +import java.util.Enumeration; import java.util.Hashtable; import java.util.Iterator; import java.util.Properties; import java.util.Random; -import java.util.Enumeration; import org.apache.myrmidon.api.TaskException; import org.apache.tools.ant.AntClassLoader; import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.exec.Execute; -import org.apache.myrmidon.framework.exec.ExecuteWatchdog; import org.apache.tools.ant.taskdefs.exec.LogOutputStream; import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; -import org.apache.tools.ant.types.Commandline; +import org.apache.tools.ant.types.Argument; import org.apache.tools.ant.types.CommandlineJava; import org.apache.tools.ant.types.EnumeratedAttribute; -import org.apache.tools.ant.types.EnvironmentData; -import org.apache.tools.ant.types.Path; import org.apache.tools.ant.types.EnvironmentVariable; -import org.apache.tools.ant.types.Argument; +import org.apache.tools.ant.types.Path; /** * Ant task to run JUnit tests.

@@ -496,22 +493,7 @@ public class JUnitTask extends Task protected Iterator allTests() { Iterator[] enums = {tests.iterator(), batchTests.iterator()}; - return Iterators.fromCompound( enums ); - } - - /** - * @return null if there is a timeout value, otherwise the watchdog - * instance. - * @exception TaskException Description of Exception - */ - protected ExecuteWatchdog createWatchdog() - throws TaskException - { - if( timeout == null ) - { - return null; - } - return new ExecuteWatchdog( timeout.intValue() ); + return Iterator.fromCompound( enums ); } /** @@ -544,13 +526,7 @@ public class JUnitTask extends Task } else { - ExecuteWatchdog watchdog = createWatchdog(); - exitValue = executeAsForked( test, watchdog ); - // null watchdog means no timeout, you'd better not check with null - if( watchdog != null ) - { - wasKilled = watchdog.killedProcess(); - } + exitValue = executeAsForked( test ); } // if there is an error/failure and that it should halt, stop everything otherwise @@ -622,7 +598,7 @@ public class JUnitTask extends Task * @return Description of the Returned Value * @exception TaskException Description of Exception */ - private int executeAsForked( JUnitTest test, ExecuteWatchdog watchdog ) + private int executeAsForked( JUnitTest test ) throws TaskException { CommandlineJava cmd = (CommandlineJava)commandline.clone(); @@ -676,18 +652,21 @@ public class JUnitTask extends Task throw new TaskException( "Error creating temporary properties file.", ioe ); } - final Execute execute = new Execute( new LogStreamHandler( this, Project.MSG_INFO, Project.MSG_WARN ), watchdog ); - execute.setCommandline( cmd.getCommandline() ); + final Execute exe = new Execute(); + exe.setOutput( new LogOutputStream( this, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( this, Project.MSG_WARN ) ); + + exe.setCommandline( cmd.getCommandline() ); if( dir != null ) { - execute.setWorkingDirectory( dir ); + exe.setWorkingDirectory( dir ); } log( "Executing: " + cmd.toString(), Project.MSG_VERBOSE ); int retVal; try { - retVal = execute.execute(); + retVal = exe.execute(); } catch( IOException e ) { diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/metamata/AbstractMetamataTask.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/metamata/AbstractMetamataTask.java index 794a1e8fe..a455e154c 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/metamata/AbstractMetamataTask.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/metamata/AbstractMetamataTask.java @@ -200,8 +200,7 @@ public abstract class AbstractMetamataTask extends Task try { setUp(); - ExecuteStreamHandler handler = createStreamHandler(); - execute0( handler ); + execute0(); } finally { @@ -304,7 +303,7 @@ public abstract class AbstractMetamataTask extends Task * * @return Description of the Returned Value */ - protected abstract ExecuteStreamHandler createStreamHandler(); + protected abstract void setupStreamHandler( Execute exe ); /** * execute the process with a specific handler @@ -312,15 +311,16 @@ public abstract class AbstractMetamataTask extends Task * @param handler Description of Parameter * @exception TaskException Description of Exception */ - protected void execute0( ExecuteStreamHandler handler ) + protected void execute0() throws TaskException { - final Execute process = new Execute( handler ); + final Execute exe = new Execute(); + setupStreamHandler( exe ); log( cmdl.toString(), Project.MSG_VERBOSE ); - process.setCommandline( cmdl.getCommandline() ); + exe.setCommandline( cmdl.getCommandline() ); try { - if( process.execute() != 0 ) + if( exe.execute() != 0 ) { throw new TaskException( "Metamata task failed." ); } diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/metamata/MAudit.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/metamata/MAudit.java index ee34810bd..2169c1c59 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/metamata/MAudit.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/metamata/MAudit.java @@ -16,6 +16,8 @@ import org.apache.myrmidon.api.TaskException; import org.apache.tools.ant.Project; import org.apache.tools.ant.taskdefs.exec.ExecuteStreamHandler; import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; +import org.apache.tools.ant.taskdefs.exec.Execute; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; import org.apache.tools.ant.types.Path; /** @@ -186,7 +188,7 @@ public class MAudit extends AbstractMetamataTask options.add( "-unused" ); options.add( searchPath.toString() ); } - addAllArrayList( options, includedFiles.keys() ); + addAllArrayList( options, includedFiles.keySet().iterator() ); return options; } @@ -220,14 +222,14 @@ public class MAudit extends AbstractMetamataTask */ } - protected ExecuteStreamHandler createStreamHandler() + protected void setupStreamHandler( final Execute exe ) throws TaskException { - ExecuteStreamHandler handler = null; // if we didn't specify a file, then use a screen report if( outFile == null ) { - handler = new LogStreamHandler( this, Project.MSG_INFO, Project.MSG_INFO ); + exe.setOutput( new LogOutputStream( this, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( this, Project.MSG_WARN ) ); } else { @@ -235,14 +237,16 @@ public class MAudit extends AbstractMetamataTask { //XXX OutputStream out = new FileOutputStream( outFile ); - handler = new MAuditStreamHandler( this, out ); + //handler = new MAuditStreamHandler( this, out ); + //FIXME: should behave like in Ant1.x + exe.setOutput( out ); + exe.setError( out ); } catch( IOException e ) { throw new TaskException( "Error", e ); } } - return handler; } /** diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/metamata/MMetrics.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/metamata/MMetrics.java index 95c137803..f3f344f75 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/metamata/MMetrics.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/metamata/MMetrics.java @@ -16,6 +16,8 @@ import org.apache.myrmidon.api.TaskException; import org.apache.tools.ant.Project; import org.apache.tools.ant.taskdefs.exec.ExecuteStreamHandler; import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; +import org.apache.tools.ant.taskdefs.exec.Execute; import org.apache.tools.ant.types.Path; /** @@ -161,7 +163,7 @@ public class MMetrics extends AbstractMetamataTask options.add( dirs[ i ] ); } // files next. - addAllArrayList( options, includedFiles.keys() ); + addAllArrayList( options, includedFiles.keySet().iterator() ); return options; } @@ -223,11 +225,10 @@ public class MMetrics extends AbstractMetamataTask * * @return Description of the Returned Value */ - protected ExecuteStreamHandler createStreamHandler() + protected void setupStreamHandler( final Execute exe ) { - // write the report directtly to an XML stream - // return new MMetricsStreamHandler(this, xmlStream); - return new LogStreamHandler( this, Project.MSG_INFO, Project.MSG_INFO ); + exe.setOutput( new LogOutputStream( this, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( this, Project.MSG_INFO ) ); } protected void execute0( ExecuteStreamHandler handler ) diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/perforce/SimpleP4OutputHandler.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/perforce/SimpleP4OutputHandler.java index 7ab63ca4b..e0cac3b79 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/perforce/SimpleP4OutputHandler.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/perforce/SimpleP4OutputHandler.java @@ -10,10 +10,10 @@ package org.apache.tools.ant.taskdefs.optional.perforce; import org.apache.myrmidon.api.TaskException; import org.apache.tools.ant.Project; -public class SimpleP4OutputHandler extends P4HandlerAdapter +public class SimpleP4OutputHandler + extends P4HandlerAdapter { - - P4Base parent; + private P4Base parent; public SimpleP4OutputHandler( P4Base parent ) { diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java index ed83945a5..38b8a0a35 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/pvcs/Pvcs.java @@ -15,6 +15,7 @@ import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; +import java.io.OutputStream; import java.text.MessageFormat; import java.text.ParseException; import java.util.ArrayList; @@ -23,10 +24,7 @@ import java.util.Random; import org.apache.myrmidon.api.TaskException; import org.apache.tools.ant.Project; import org.apache.tools.ant.taskdefs.exec.Execute; -import org.apache.tools.ant.taskdefs.exec.ExecuteStreamHandler; import org.apache.tools.ant.taskdefs.exec.LogOutputStream; -import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; -import org.apache.tools.ant.taskdefs.exec.PumpStreamHandler; import org.apache.tools.ant.types.Commandline; /** @@ -367,7 +365,7 @@ public class Pvcs extends org.apache.tools.ant.Task tmp = new File( "pvcs_ant_" + rand.nextLong() + ".log" ); tmp2 = new File( "pvcs_ant_" + rand.nextLong() + ".log" ); log( "Executing " + commandLine.toString(), Project.MSG_VERBOSE ); - result = runCmd( commandLine, new PumpStreamHandler( new FileOutputStream( tmp ), new LogOutputStream( this, Project.MSG_WARN ) ) ); + result = runCmd( commandLine, new FileOutputStream( tmp ), new LogOutputStream( this, Project.MSG_WARN ) ); if( result != 0 && !ignorerc ) { String msg = "Failed executing: " + commandLine.toString(); @@ -409,7 +407,10 @@ public class Pvcs extends org.apache.tools.ant.Task commandLine.createArgument().setValue( "@" + tmp2.getAbsolutePath() ); log( "Getting files", Project.MSG_INFO ); log( "Executing " + commandLine.toString(), Project.MSG_VERBOSE ); - result = runCmd( commandLine, new LogStreamHandler( this, Project.MSG_INFO, Project.MSG_WARN ) ); + final LogOutputStream output = new LogOutputStream( this, Project.MSG_INFO ); + final LogOutputStream error = new LogOutputStream( this, Project.MSG_WARN ); + result = runCmd( commandLine, output, error ); + if( result != 0 && !ignorerc ) { String msg = "Failed executing: " + commandLine.toString() + ". Return code was " + result; @@ -445,13 +446,14 @@ public class Pvcs extends org.apache.tools.ant.Task } } - protected int runCmd( Commandline cmd, ExecuteStreamHandler out ) + protected int runCmd( Commandline cmd, OutputStream output, OutputStream error ) throws TaskException { try { - Project aProj = getProject(); - Execute exe = new Execute( out ); + final Execute exe = new Execute(); + exe.setOutput( output ); + exe.setError( error ); exe.setWorkingDirectory( getBaseDirectory() ); exe.setCommandline( cmd.getCommandline() ); return exe.execute(); diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/sitraka/CovMerge.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/sitraka/CovMerge.java index e161a784a..8628704b9 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/sitraka/CovMerge.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/sitraka/CovMerge.java @@ -19,6 +19,7 @@ import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.exec.Execute; import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; import org.apache.tools.ant.types.Commandline; import org.apache.tools.ant.types.FileSet; @@ -115,14 +116,15 @@ public class CovMerge extends Task } cmdl.createArgument().setValue( "-jp_paramfile=" + paramfile.getAbsolutePath() ); - LogStreamHandler handler = new LogStreamHandler( this, Project.MSG_INFO, Project.MSG_WARN ); - Execute exec = new Execute( handler ); + final Execute exe = new Execute(); + exe.setOutput( new LogOutputStream( this, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( this, Project.MSG_WARN ) ); log( cmdl.toString(), Project.MSG_VERBOSE ); - exec.setCommandline( cmdl.getCommandline() ); + exe.setCommandline( cmdl.getCommandline() ); // JProbe process always return 0 so we will not be // able to check for failure ! :-( - int exitValue = exec.execute(); + int exitValue = exe.execute(); if( exitValue != 0 ) { throw new TaskException( "JProbe Coverage Merging failed (" + exitValue + ")" ); diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/sitraka/CovReport.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/sitraka/CovReport.java index 6c0b7f2a8..03c56cdd4 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/sitraka/CovReport.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/sitraka/CovReport.java @@ -22,6 +22,7 @@ import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.exec.Execute; import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; import org.apache.tools.ant.types.Commandline; import org.apache.tools.ant.types.EnumeratedAttribute; import org.apache.tools.ant.types.Path; @@ -242,11 +243,12 @@ public class CovReport extends Task } // use the custom handler for stdin issues - LogStreamHandler handler = new LogStreamHandler( this, Project.MSG_INFO, Project.MSG_WARN ); - Execute exec = new Execute( handler ); + final Execute exe = new Execute(); + exe.setOutput( new LogOutputStream( this, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( this, Project.MSG_WARN ) ); log( cmdl.toString(), Project.MSG_VERBOSE ); - exec.setCommandline( cmdl.getCommandline() ); - int exitValue = exec.execute(); + exe.setCommandline( cmdl.getCommandline() ); + int exitValue = exe.execute(); if( exitValue != 0 ) { throw new TaskException( "JProbe Coverage Report failed (" + exitValue + ")" ); diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/sitraka/Coverage.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/sitraka/Coverage.java index a812e039c..23090e0bd 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/sitraka/Coverage.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/sitraka/Coverage.java @@ -539,8 +539,6 @@ public class Coverage extends Task /** * specific pumper to avoid those nasty stdin issues - * - * @author RT */ static class CoverageStreamHandler extends LogStreamHandler { diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java index 3f0b62c62..1a5b0e4bd 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java @@ -15,6 +15,7 @@ import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.exec.Execute; import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; +import org.apache.tools.ant.taskdefs.exec.LogOutputStream; import org.apache.tools.ant.types.Commandline; /** @@ -206,9 +207,9 @@ public abstract class MSVSS extends Task { try { - Execute exe = new Execute( new LogStreamHandler( this, - Project.MSG_INFO, - Project.MSG_WARN ) ); + final Execute exe = new Execute(); + exe.setOutput( new LogOutputStream( this, Project.MSG_INFO ) ); + exe.setError( new LogOutputStream( this, Project.MSG_WARN ) ); // If location of ss.ini is specified we need to set the // environment-variable SSDIR to this value diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/unix/Rpm.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/unix/Rpm.java index 6acbec601..348f33eef 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/unix/Rpm.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/unix/Rpm.java @@ -144,13 +144,13 @@ public class Rpm extends Task toExecute.createArgument().setValue( "SPECS/" + specFile ); - ExecuteStreamHandler streamhandler = null; OutputStream outputstream = null; OutputStream errorstream = null; + if( error == null && output == null ) { - streamhandler = new LogStreamHandler( this, Project.MSG_INFO, - Project.MSG_WARN ); + outputstream = new LogOutputStream( this, Project.MSG_INFO ); + errorstream = new LogOutputStream( this, Project.MSG_WARN ); } else { @@ -184,10 +184,11 @@ public class Rpm extends Task { errorstream = new LogOutputStream( this, Project.MSG_WARN ); } - streamhandler = new PumpStreamHandler( outputstream, errorstream ); } - Execute exe = new Execute( streamhandler ); + Execute exe = new Execute(); + exe.setOutput( outputstream ); + exe.setError( errorstream ); if( topDir == null ) topDir = getBaseDirectory(); exe.setWorkingDirectory( topDir );