Author: apadilla
Date: Wed Nov 17 08:28:12 2010
New Revision: 1035948
URL: http://svn.apache.org/viewvc?rev=1035948&view=rev
Log:
[NPANDAY-337]
[NPANDAY-341]
* NPanday support for linux
* applied patches submitted by Luca and Vladimir
- modified some things and merged the patches they both submitted
* added unit test
Added:
incubator/npanday/trunk/components/dotnet-executable/src/test/
incubator/npanday/trunk/components/dotnet-executable/src/test/java/
incubator/npanday/trunk/components/dotnet-executable/src/test/java/npanday/
incubator/npanday/trunk/components/dotnet-executable/src/test/java/npanday/executable/
incubator/npanday/trunk/components/dotnet-executable/src/test/java/npanday/executable/CommandExecutorTest.java
Modified:
incubator/npanday/trunk/components/dotnet-executable/pom.xml
incubator/npanday/trunk/components/dotnet-executable/src/main/java/npanday/executable/CommandExecutor.java
incubator/npanday/trunk/components/dotnet-executable/src/main/java/npanday/executable/compiler/impl/DefaultCompiler.java
Modified: incubator/npanday/trunk/components/dotnet-executable/pom.xml
URL:
http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-executable/pom.xml?rev=1035948&r1=1035947&r2=1035948&view=diff
==============================================================================
--- incubator/npanday/trunk/components/dotnet-executable/pom.xml (original)
+++ incubator/npanday/trunk/components/dotnet-executable/pom.xml Wed Nov 17
08:28:12 2010
@@ -48,5 +48,11 @@ under the License.
<groupId>npanday</groupId>
<artifactId>dotnet-vendor</artifactId>
</dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.1</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
Modified:
incubator/npanday/trunk/components/dotnet-executable/src/main/java/npanday/executable/CommandExecutor.java
URL:
http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-executable/src/main/java/npanday/executable/CommandExecutor.java?rev=1035948&r1=1035947&r2=1035948&view=diff
==============================================================================
---
incubator/npanday/trunk/components/dotnet-executable/src/main/java/npanday/executable/CommandExecutor.java
(original)
+++
incubator/npanday/trunk/components/dotnet-executable/src/main/java/npanday/executable/CommandExecutor.java
Wed Nov 17 08:28:12 2010
@@ -29,7 +29,7 @@ import org.codehaus.plexus.util.StringUt
import org.codehaus.plexus.util.cli.shell.Shell;
import java.io.IOException;
-
+
import java.util.List;
import java.util.ArrayList;
@@ -196,28 +196,28 @@ public interface CommandExecutor
Commandline commandline = new Commandline()
{
protected Map envVars = Collections.synchronizedMap(
new LinkedHashMap() );
-
-
+
+
public Process execute()
throws CommandLineException
{
// TODO: Provided only for backward compat. with
<= 1.4
//verifyShellState();
-
+
Process process;
-
+
//addEnvironment( "MAVEN_TEST_ENVAR",
"MAVEN_TEST_ENVAR_VALUE" );
-
+
String[] environment = getEnvironmentVariables();
-
+
File workingDir = getWorkingDirectory();
-
+
try
{
- String cmd = this.toString();
+ String[] cmd = getEscapedShellCommandline();
+
if ( workingDir == null )
{
- //process = Runtime.getRuntime().exec(
getShellCommandline(), environment );
process = Runtime.getRuntime().exec( cmd,
environment );
}
else
@@ -232,8 +232,7 @@ public interface CommandExecutor
throw new CommandLineException( "Path
\"" + workingDir.getPath()
+ "\" does not specify a
directory." );
}
-
- //process = Runtime.getRuntime().exec(
getShellCommandline(), environment, workingDir );
+
process = Runtime.getRuntime().exec( cmd,
environment, workingDir );
}
}
@@ -241,10 +240,10 @@ public interface CommandExecutor
{
throw new CommandLineException( "Error while
executing process.", ex );
}
-
+
return process;
}
-
+
public String[] getEnvironmentVariables()
throws CommandLineException
{
@@ -267,23 +266,21 @@ public interface CommandExecutor
}
return environmentVars;
}
-
-
-
+
public void addEnvironment( String name, String value
)
{
//envVars.add( name + "=" + value );
envVars.put( name, value );
}
-
+
/**
- * Add
system environment variables
- */
+ * Add system
environment variables
+ */
public void addSystemEnvironment()
throws Exception
{
Properties systemEnvVars =
CommandLineUtils.getSystemEnvVars();
-
+
for ( Iterator i =
systemEnvVars.keySet().iterator(); i.hasNext(); )
{
String key = (String) i.next();
@@ -293,7 +290,7 @@ public interface CommandExecutor
}
}
}
-
+
public String toString()
{
StringBuffer strBuff = new StringBuffer("");
@@ -304,51 +301,53 @@ public interface CommandExecutor
}
return strBuff.toString().trim();
}
-
+
+ public String[] getEscapedShellCommandline()
+ {
+ String[] scl = getShellCommandline();
+ for ( int i = 0; i < scl.length; i++ ) {
+ scl[i] = escapeCmdParams( scl[i] );
+ }
+ return scl;
+ }
+
// escaped to make use of dotnet style of command
escapes .
// Eg.
/define:"CONFIG=\"Debug\",DEBUG=-1,TRACE=-1,_MyType=\"Windows\",PLATFORM=\"AnyCPU\""
private String escapeCmdParams(String param)
{
if(param == null)
return null;
-
+
String str = param;
if(param.startsWith("/") && param.indexOf(":") > 0)
{
int delem = param.indexOf(":") + 1;
String command = param.substring(0, delem);
String value = param.substring(delem);
-
+
if(value.indexOf(" ") > 0 ||
value.indexOf("\"") > 0)
{
value = "\"" + value.replaceAll("\"",
"\\\\\"") + "\"";
}
-
+
str = command + value;
}
else if(param.startsWith("@"))
{
- str = param;
+ str = param;
}
- else if(param.indexOf(" ") > 0)
+ else if(param.indexOf(" ") > 0 && !(
param.startsWith( "\"" ) && param.endsWith( "\"" ) ) )
{
str = "\"" + param + "\"";
}
-
+
return str;
}
-
-
-
-
-
-
};
-
-
-
+
commandline.setExecutable( executable );
commandline.addArguments( commands.toArray( new
String[commands.size()]));
+
if ( workingDirectory != null && workingDirectory.exists()
)
{
commandline.setWorkingDirectory(
workingDirectory.getAbsolutePath() );
Modified:
incubator/npanday/trunk/components/dotnet-executable/src/main/java/npanday/executable/compiler/impl/DefaultCompiler.java
URL:
http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-executable/src/main/java/npanday/executable/compiler/impl/DefaultCompiler.java?rev=1035948&r1=1035947&r2=1035948&view=diff
==============================================================================
---
incubator/npanday/trunk/components/dotnet-executable/src/main/java/npanday/executable/compiler/impl/DefaultCompiler.java
(original)
+++
incubator/npanday/trunk/components/dotnet-executable/src/main/java/npanday/executable/compiler/impl/DefaultCompiler.java
Wed Nov 17 08:28:12 2010
@@ -291,7 +291,13 @@ public final class DefaultCompiler
throw new ExecutionException( "Error while creating response file
for the commands.", e );
}
filteredCommands.clear();
- filteredCommands.add("@" + escapeCmdParams(responseFilePath) );
+ responseFilePath = "@" + responseFilePath;
+ if ( responseFilePath.indexOf( " " ) > 0)
+ {
+ responseFilePath = "\"" + responseFilePath + "\"";
+ }
+
+ filteredCommands.add( responseFilePath );
return filteredCommands;
}
Added:
incubator/npanday/trunk/components/dotnet-executable/src/test/java/npanday/executable/CommandExecutorTest.java
URL:
http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-executable/src/test/java/npanday/executable/CommandExecutorTest.java?rev=1035948&view=auto
==============================================================================
---
incubator/npanday/trunk/components/dotnet-executable/src/test/java/npanday/executable/CommandExecutorTest.java
(added)
+++
incubator/npanday/trunk/components/dotnet-executable/src/test/java/npanday/executable/CommandExecutorTest.java
Wed Nov 17 08:28:12 2010
@@ -0,0 +1,60 @@
+package npanday.executable;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Arrays;
+
+import npanday.executable.CommandExecutor;
+
+
+public class CommandExecutorTest
+ {
+ private static final String MKDIR = "mkdir";
+ private String parentPath;
+ private List<String> params = new ArrayList<String>();
+ private CommandExecutor cmdExecutor;
+
+ public CommandExecutorTest()
+ {
+ File f = new File( "test" );
+ parentPath = System.getProperty( "user.dir" ) + File.separator +
"target" + File.separator + "test-resources";
+ cmdExecutor =
CommandExecutor.Factory.createDefaultCommmandExecutor();
+ }
+
+ @Test
+ public void testParamWithNoSpaces()
+ throws ExecutionException
+ {
+ String path = parentPath + File.separator + "sampledirectory";
+
+ params.clear();
+ params.add(path);
+
+ cmdExecutor.executeCommand( MKDIR, params );
+ File dir = new File( path );
+
+ assertTrue( dir.exists() );
+ }
+
+ @Test
+ public void testParamWithSpaces()
+ throws ExecutionException
+ {
+ String path = parentPath + File.separator + "sample directory";
+
+ params.clear();
+ params.add(path);
+
+ cmdExecutor.executeCommand( MKDIR, params );
+ File dir = new File( path );
+
+ assertTrue( dir.exists() );
+ }
+
+ }
\ No newline at end of file