Browse Source

avoid slash translations for module names

should fix Windows test errors introduced with #15
master
Stefan Bodewig 9 years ago
parent
commit
588ce1fbe3
2 changed files with 23 additions and 7 deletions
  1. +16
    -2
      src/main/org/apache/tools/ant/types/Commandline.java
  2. +7
    -5
      src/main/org/apache/tools/ant/types/CommandlineJava.java

+ 16
- 2
src/main/org/apache/tools/ant/types/Commandline.java View File

@@ -318,11 +318,25 @@ public class Commandline implements Cloneable {
* @param executable the String executable name. * @param executable the String executable name.
*/ */
public void setExecutable(String executable) { public void setExecutable(String executable) {
setExecutable(executable, true);
}

/**
* Set the executable to run.
*
* @param executable the String executable name.
* @param translateFileSeparator if {@code true} all file separators in the string
* are converted to the platform specific value.
*
* @since Ant 1.9.7
*/
public void setExecutable(String executable, boolean translateFileSeparator) {
if (executable == null || executable.length() == 0) { if (executable == null || executable.length() == 0) {
return; return;
} }
this.executable = executable.replace('/', File.separatorChar)
.replace('\\', File.separatorChar);
this.executable = translateFileSeparator
? executable.replace('/', File.separatorChar).replace('\\', File.separatorChar)
: executable;
} }


/** /**


+ 7
- 5
src/main/org/apache/tools/ant/types/CommandlineJava.java View File

@@ -347,7 +347,7 @@ public class CommandlineJava implements Cloneable {
if (executableType == ExecutableType.MODULE) { if (executableType == ExecutableType.MODULE) {
javaCommand.setExecutable(createModuleClassPair( javaCommand.setExecutable(createModuleClassPair(
parseModuleFromModuleClassPair(javaCommand.getExecutable()), parseModuleFromModuleClassPair(javaCommand.getExecutable()),
classname));
classname), false);
} else { } else {
javaCommand.setExecutable(classname); javaCommand.setExecutable(classname);
executableType = ExecutableType.CLASS; executableType = ExecutableType.CLASS;
@@ -382,17 +382,18 @@ public class CommandlineJava implements Cloneable {
} else { } else {
switch (executableType) { switch (executableType) {
case JAR: case JAR:
javaCommand.setExecutable(module);
javaCommand.setExecutable(module, false);
break; break;
case CLASS: case CLASS:
javaCommand.setExecutable(createModuleClassPair( javaCommand.setExecutable(createModuleClassPair(
module, module,
javaCommand.getExecutable()));
javaCommand.getExecutable()), false);
break; break;
case MODULE: case MODULE:
javaCommand.setExecutable(createModuleClassPair( javaCommand.setExecutable(createModuleClassPair(
module, module,
parseClassFromModuleClassPair(javaCommand.getExecutable())));
parseClassFromModuleClassPair(javaCommand.getExecutable())),
false);
break; break;
} }
} }
@@ -543,7 +544,8 @@ public class CommandlineJava implements Cloneable {
listIterator.add("-m"); listIterator.add("-m");
} }
// this is the classname to run as well as its arguments. // this is the classname to run as well as its arguments.
// in case of 'executeJar', the executable is a jar file.
// in case of ExecutableType.JAR, the executable is a jar file,
// in case of ExecutableType.MODULE, the executable is a module name, portentially including a class name.
javaCommand.addCommandToList(listIterator); javaCommand.addCommandToList(listIterator);
} }




Loading…
Cancel
Save