donaldp 01/12/21 05:18:30
Added:
proposal/myrmidon/src/java/org/apache/myrmidon/framework/exec/launchers
MacCommandLauncher.java
Log:
Converted the old MacCommandLauncher to new setup. There is no need to extend
ProxyCommandLauncher as it did not offer any benefit (because the 2 arg version
of Runtime.exec was always called)
Revision Changes Path
1.1
jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/framework/exec/launchers/MacCommandLauncher.java
Index: MacCommandLauncher.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.framework.exec.launchers;
import java.io.File;
import java.io.IOException;
import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.framework.exec.CommandLauncher;
import org.apache.myrmidon.framework.exec.ExecMetaData;
/**
* A command launcher for Mac that uses a dodgy mechanism to change working
* directory before launching commands. This class changes the value of the
* System property "user.dir" before the command is executed and then resets
* it after the command is executed. This can have really unhealthy
side-effects
* if there are multiple threads in JVM and should be used with extreme
caution.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Thomas Haas</a>
* @version $Revision: 1.1 $ $Date: 2001/12/21 13:18:30 $
*/
public class MacCommandLauncher
implements CommandLauncher
{
/**
* Execute the specified native command.
*/
public Process exec( final ExecMetaData metaData )
throws IOException, TaskException
{
final File directory =
metaData.getWorkingDirectory().getCanonicalFile();
if( ExecUtil.isCwd( directory ) )
{
return Runtime.getRuntime().
exec( metaData.getCommand(), metaData.getEnvironment() );
}
//WARNING: This is an ugly hack and not thread safe in the slightest
way
//It can have really really undersirable side-effects if multiple
threads
//are running in the JVM
try
{
System.setProperty( "user.dir", directory.toString() );
return Runtime.getRuntime().
exec( metaData.getCommand(), metaData.getEnvironment() );
}
finally
{
System.setProperty( "user.dir", ExecUtil.getCwd().toString() );
}
}
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>