diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/exec/Execute.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/exec/Execute.java index cde925b23..7bf2af3dc 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/exec/Execute.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/exec/Execute.java @@ -11,10 +11,13 @@ import java.io.File; import java.io.IOException; import java.io.OutputStream; import java.util.Properties; -import org.apache.myrmidon.api.TaskException; import org.apache.aut.nativelib.ExecException; +import org.apache.aut.nativelib.ExecManager; import org.apache.aut.nativelib.ExecMetaData; -import org.apache.aut.nativelib.impl.DefaultExecManager; +import org.apache.avalon.excalibur.io.IOUtil; +import org.apache.myrmidon.api.TaskException; +import org.apache.myrmidon.framework.factorys.ExecManagerFactory; +import org.apache.myrmidon.services.ServiceException; /** * Runs an external program. @@ -36,34 +39,6 @@ public class Execute */ private boolean m_useVMLauncher = true; - private static File getAntHomeDirectory() - { - final String antHome = System.getProperty( "myrmidon.home" ); - if( null == antHome ) - { - final String message = - "Cannot locate antRun script: Property 'ant.home' not specified"; - throw new IllegalStateException( message ); - } - - return new File( antHome ); - } - - /** - * Creates a new execute object. - * - * @param streamHandler the stream handler used to handle the input and - * output streams of the subprocess. - */ - public Execute( final ExecuteStreamHandler streamHandler ) - { - //m_streamHandler = streamHandler; - } - - public Execute() - { - } - public void setTimeout( final long timeout ) { m_timeout = timeout; @@ -142,8 +117,8 @@ public class Execute { try { - final DefaultExecManager manager = - new DefaultExecManager( getAntHomeDirectory() ); + final ExecManagerFactory factory = new ExecManagerFactory(); + final ExecManager manager = (ExecManager)factory.createService(); final ExecMetaData metaData = new ExecMetaData( m_command, m_environment, @@ -154,5 +129,14 @@ public class Execute { throw new TaskException( ee.getMessage(), ee ); } + catch( final ServiceException se ) + { + throw new TaskException( se.getMessage(), se ); + } + finally + { + IOUtil.shutdownStream( m_output ); + IOUtil.shutdownStream( m_error ); + } } } diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/exec/Execute2.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/exec/Execute2.java index 0d561fab5..6ae62eb94 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/exec/Execute2.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/exec/Execute2.java @@ -10,13 +10,15 @@ package org.apache.tools.ant.taskdefs.exec; import java.io.File; import java.io.IOException; import java.util.Properties; -import org.apache.avalon.framework.logger.AbstractLogEnabled; -import org.apache.myrmidon.api.TaskException; import org.apache.aut.nativelib.DefaultExecOutputHandler; import org.apache.aut.nativelib.ExecException; +import org.apache.aut.nativelib.ExecManager; import org.apache.aut.nativelib.ExecMetaData; import org.apache.aut.nativelib.ExecOutputHandler; -import org.apache.aut.nativelib.impl.DefaultExecManager; +import org.apache.avalon.framework.logger.AbstractLogEnabled; +import org.apache.myrmidon.api.TaskException; +import org.apache.myrmidon.framework.factorys.ExecManagerFactory; +import org.apache.myrmidon.services.ServiceException; /** * Runs an external program. @@ -38,19 +40,6 @@ public class Execute2 */ private boolean m_useVMLauncher = true; - private static File getAntHomeDirectory() - { - final String antHome = System.getProperty( "myrmidon.home" ); - if( null == antHome ) - { - final String message = - "Cannot locate antRun script: Property 'ant.home' not specified"; - throw new IllegalStateException( message ); - } - - return new File( antHome ); - } - public void setTimeout( final long timeout ) { m_timeout = timeout; @@ -66,7 +55,7 @@ public class Execute2 * * @param commandline the commandline of the subprocess to launch */ - public void setCommandline( String[] commandline ) + public void setCommandline( final String[] commandline ) { m_command = commandline; } @@ -117,8 +106,8 @@ public class Execute2 try { - final DefaultExecManager manager = - new DefaultExecManager( getAntHomeDirectory() ); + final ExecManagerFactory factory = new ExecManagerFactory(); + final ExecManager manager = (ExecManager)factory.createService(); final ExecMetaData metaData = new ExecMetaData( m_command, m_environment, @@ -130,5 +119,9 @@ public class Execute2 { throw new TaskException( ee.getMessage(), ee ); } + catch( final ServiceException se ) + { + throw new TaskException( se.getMessage(), se ); + } } } diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/exec/Execute.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/exec/Execute.java index cde925b23..7bf2af3dc 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/exec/Execute.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/exec/Execute.java @@ -11,10 +11,13 @@ import java.io.File; import java.io.IOException; import java.io.OutputStream; import java.util.Properties; -import org.apache.myrmidon.api.TaskException; import org.apache.aut.nativelib.ExecException; +import org.apache.aut.nativelib.ExecManager; import org.apache.aut.nativelib.ExecMetaData; -import org.apache.aut.nativelib.impl.DefaultExecManager; +import org.apache.avalon.excalibur.io.IOUtil; +import org.apache.myrmidon.api.TaskException; +import org.apache.myrmidon.framework.factorys.ExecManagerFactory; +import org.apache.myrmidon.services.ServiceException; /** * Runs an external program. @@ -36,34 +39,6 @@ public class Execute */ private boolean m_useVMLauncher = true; - private static File getAntHomeDirectory() - { - final String antHome = System.getProperty( "myrmidon.home" ); - if( null == antHome ) - { - final String message = - "Cannot locate antRun script: Property 'ant.home' not specified"; - throw new IllegalStateException( message ); - } - - return new File( antHome ); - } - - /** - * Creates a new execute object. - * - * @param streamHandler the stream handler used to handle the input and - * output streams of the subprocess. - */ - public Execute( final ExecuteStreamHandler streamHandler ) - { - //m_streamHandler = streamHandler; - } - - public Execute() - { - } - public void setTimeout( final long timeout ) { m_timeout = timeout; @@ -142,8 +117,8 @@ public class Execute { try { - final DefaultExecManager manager = - new DefaultExecManager( getAntHomeDirectory() ); + final ExecManagerFactory factory = new ExecManagerFactory(); + final ExecManager manager = (ExecManager)factory.createService(); final ExecMetaData metaData = new ExecMetaData( m_command, m_environment, @@ -154,5 +129,14 @@ public class Execute { throw new TaskException( ee.getMessage(), ee ); } + catch( final ServiceException se ) + { + throw new TaskException( se.getMessage(), se ); + } + finally + { + IOUtil.shutdownStream( m_output ); + IOUtil.shutdownStream( m_error ); + } } } diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/exec/Execute2.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/exec/Execute2.java index 0d561fab5..6ae62eb94 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/exec/Execute2.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/exec/Execute2.java @@ -10,13 +10,15 @@ package org.apache.tools.ant.taskdefs.exec; import java.io.File; import java.io.IOException; import java.util.Properties; -import org.apache.avalon.framework.logger.AbstractLogEnabled; -import org.apache.myrmidon.api.TaskException; import org.apache.aut.nativelib.DefaultExecOutputHandler; import org.apache.aut.nativelib.ExecException; +import org.apache.aut.nativelib.ExecManager; import org.apache.aut.nativelib.ExecMetaData; import org.apache.aut.nativelib.ExecOutputHandler; -import org.apache.aut.nativelib.impl.DefaultExecManager; +import org.apache.avalon.framework.logger.AbstractLogEnabled; +import org.apache.myrmidon.api.TaskException; +import org.apache.myrmidon.framework.factorys.ExecManagerFactory; +import org.apache.myrmidon.services.ServiceException; /** * Runs an external program. @@ -38,19 +40,6 @@ public class Execute2 */ private boolean m_useVMLauncher = true; - private static File getAntHomeDirectory() - { - final String antHome = System.getProperty( "myrmidon.home" ); - if( null == antHome ) - { - final String message = - "Cannot locate antRun script: Property 'ant.home' not specified"; - throw new IllegalStateException( message ); - } - - return new File( antHome ); - } - public void setTimeout( final long timeout ) { m_timeout = timeout; @@ -66,7 +55,7 @@ public class Execute2 * * @param commandline the commandline of the subprocess to launch */ - public void setCommandline( String[] commandline ) + public void setCommandline( final String[] commandline ) { m_command = commandline; } @@ -117,8 +106,8 @@ public class Execute2 try { - final DefaultExecManager manager = - new DefaultExecManager( getAntHomeDirectory() ); + final ExecManagerFactory factory = new ExecManagerFactory(); + final ExecManager manager = (ExecManager)factory.createService(); final ExecMetaData metaData = new ExecMetaData( m_command, m_environment, @@ -130,5 +119,9 @@ public class Execute2 { throw new TaskException( ee.getMessage(), ee ); } + catch( final ServiceException se ) + { + throw new TaskException( se.getMessage(), se ); + } } }