From 71eaa47717669887b947653657e6f681ae0dbc8c Mon Sep 17 00:00:00 2001 From: Peter Donald Date: Sat, 26 Jan 2002 04:53:53 +0000 Subject: [PATCH] Ugly hack to retrieve ExecManagerService by directly instantiating factory. This should really be done by the container in the future but is done here now to test out some ideas git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270870 13f79535-47bb-0310-9956-ffa450edef68 --- .../tools/ant/taskdefs/exec/Execute.java | 48 +++++++------------ .../tools/ant/taskdefs/exec/Execute2.java | 31 +++++------- .../tools/ant/taskdefs/exec/Execute.java | 48 +++++++------------ .../tools/ant/taskdefs/exec/Execute2.java | 31 +++++------- 4 files changed, 56 insertions(+), 102 deletions(-) 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 ); + } } }