diff --git a/proposal/myrmidon/src/java/org/apache/aut/nativelib/ExecMetaData.java b/proposal/myrmidon/src/java/org/apache/aut/nativelib/ExecMetaData.java index 9bd1ccf69..ee891fd0d 100644 --- a/proposal/myrmidon/src/java/org/apache/aut/nativelib/ExecMetaData.java +++ b/proposal/myrmidon/src/java/org/apache/aut/nativelib/ExecMetaData.java @@ -45,14 +45,6 @@ public class ExecMetaData */ private Properties m_environment; - /** - * If this variable is true then then the environment specified is - * added to the environment variables for current process. If this - * value is false then the specified environment replaces the environment - * for the command. - */ - private boolean m_isEnvironmentAdditive; - /** * Construct the meta data for executable as appropriate. * Note that it is invalid to specify a null @@ -61,13 +53,11 @@ public class ExecMetaData */ public ExecMetaData( final String[] command, final Properties environment, - final File workingDirectory, - final boolean environmentAdditive ) + final File workingDirectory ) { m_command = command; m_environment = environment; m_workingDirectory = workingDirectory; - m_isEnvironmentAdditive = environmentAdditive; if( null == m_workingDirectory ) { @@ -78,11 +68,6 @@ public class ExecMetaData { throw new NullPointerException( "command" ); } - - if( null == m_environment && m_isEnvironmentAdditive ) - { - throw new IllegalArgumentException( "isEnvironmentAdditive" ); - } } public File getWorkingDirectory() @@ -99,9 +84,4 @@ public class ExecMetaData { return m_environment; } - - public boolean isEnvironmentAdditive() - { - return m_isEnvironmentAdditive; - } } diff --git a/proposal/myrmidon/src/java/org/apache/aut/nativelib/impl/DefaultExecManager.java b/proposal/myrmidon/src/java/org/apache/aut/nativelib/impl/DefaultExecManager.java index b01b4a284..8209371d1 100644 --- a/proposal/myrmidon/src/java/org/apache/aut/nativelib/impl/DefaultExecManager.java +++ b/proposal/myrmidon/src/java/org/apache/aut/nativelib/impl/DefaultExecManager.java @@ -112,9 +112,8 @@ public class DefaultExecManager final long timeout ) throws IOException, ExecException { - final ExecMetaData metaData = prepareExecMetaData( command ); - final CommandLauncher launcher = getLauncher( metaData ); - final Process process = launcher.exec( metaData ); + final CommandLauncher launcher = getLauncher( command ); + final Process process = launcher.exec( command ); final ProcessMonitor monitor = new ProcessMonitor( process, input, output, error, timeout ); @@ -160,30 +159,6 @@ public class DefaultExecManager } } - /** - * Utility method to preapre a metaData object. - * This involves adding the native environment to the metaData if the - * metaData is specified as being additive. - */ - private ExecMetaData prepareExecMetaData( final ExecMetaData metaData ) - throws ExecException - { - if( !metaData.isEnvironmentAdditive() ) - { - return metaData; - } - else - { - final Properties newEnvironment = new Properties(); - newEnvironment.putAll( getNativeEnvironment() ); - newEnvironment.putAll( metaData.getEnvironment() ); - return new ExecMetaData( metaData.getCommand(), - newEnvironment, - metaData.getWorkingDirectory(), - false ); - } - } - private CommandLauncher getLauncher( final ExecMetaData metaData ) { CommandLauncher launcher = m_launcher; diff --git a/proposal/myrmidon/src/java/org/apache/aut/nativelib/impl/Environment.java b/proposal/myrmidon/src/java/org/apache/aut/nativelib/impl/Environment.java index da2d51f2c..c903fb797 100644 --- a/proposal/myrmidon/src/java/org/apache/aut/nativelib/impl/Environment.java +++ b/proposal/myrmidon/src/java/org/apache/aut/nativelib/impl/Environment.java @@ -154,7 +154,7 @@ final class Environment { final String[] command = getEnvCommand(); final File workingDirectory = new File( "." ); - final ExecMetaData metaData = new ExecMetaData( command, null, workingDirectory, false ); + final ExecMetaData metaData = new ExecMetaData( command, null, workingDirectory ); final ByteArrayOutputStream output = new ByteArrayOutputStream(); final int retval = m_execManager.execute( metaData, null, output, output, 0 ); diff --git a/proposal/myrmidon/src/java/org/apache/aut/nativelib/impl/launchers/ExecUtil.java b/proposal/myrmidon/src/java/org/apache/aut/nativelib/impl/launchers/ExecUtil.java index 3d42c1378..d0b0e8ea6 100644 --- a/proposal/myrmidon/src/java/org/apache/aut/nativelib/impl/launchers/ExecUtil.java +++ b/proposal/myrmidon/src/java/org/apache/aut/nativelib/impl/launchers/ExecUtil.java @@ -64,8 +64,7 @@ class ExecUtil return new ExecMetaData( command, metaData.getEnvironment(), - metaData.getWorkingDirectory(), - metaData.isEnvironmentAdditive() ); + metaData.getWorkingDirectory() ); } /** diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/Execute.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/Execute.java index cef124202..bd9fa3af2 100644 --- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/Execute.java +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/Execute.java @@ -80,11 +80,12 @@ public class Execute } /** - * Set whether to propagate the default environment or not. - * - * @param newEnvironment whether to propagate the process environment. + * If this variable is false then then the environment specified is + * added to the environment variables for current process. If this + * value is true then the specified environment replaces the environment + * for the command. */ - public void setNewenvironment( boolean newEnvironment ) + public void setNewenvironment( final boolean newEnvironment ) { m_newEnvironment = newEnvironment; } @@ -137,9 +138,9 @@ public class Execute private int executeNativeProcess() throws TaskException { - final ExecMetaData metaData = buildExecMetaData(); try { + final ExecMetaData metaData = buildExecMetaData(); if( null != m_handler ) { return m_execManager.execute( metaData, m_handler, m_timeout ); @@ -168,12 +169,19 @@ public class Execute * to pass to the ExecManager service. */ private ExecMetaData buildExecMetaData() + throws ExecException { final String[] command = m_command.getCommandline(); + final Properties newEnvironment = new Properties(); + if( !m_newEnvironment ) + { + newEnvironment.putAll( m_execManager.getNativeEnvironment() ); + } + newEnvironment.putAll( m_environment ); + return new ExecMetaData( command, - m_environment, - m_workingDirectory, - m_newEnvironment ); + newEnvironment, + m_workingDirectory ); } }