git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271466 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -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 <code>null</code> | |||
| @@ -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; | |||
| } | |||
| } | |||
| @@ -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; | |||
| @@ -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 ); | |||
| @@ -64,8 +64,7 @@ class ExecUtil | |||
| return new ExecMetaData( command, | |||
| metaData.getEnvironment(), | |||
| metaData.getWorkingDirectory(), | |||
| metaData.isEnvironmentAdditive() ); | |||
| metaData.getWorkingDirectory() ); | |||
| } | |||
| /** | |||
| @@ -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 ); | |||
| } | |||
| } | |||