in src/main/java/org/apache/sling/testing/serversetup/jarexec/JarExecutor.java [84:128]
public JarExecutor(Properties config) throws ExecutorException {
this.config = config;
final boolean isWindows = System.getProperty("os.name").toLowerCase().contains("windows");
String portStr = config.getProperty(PROP_SERVER_PORT);
serverPort = portStr == null ? DEFAULT_PORT : Integer.valueOf(portStr);
final String configJvmPath = config.getProperty(PROP_JAVA_PATH);
if(configJvmPath == null) {
final String javaExecutable = isWindows ? "java.exe" : "java";
jvmFullPath = System.getProperty( "java.home" ) + File.separator + "bin" + File.separator + javaExecutable;
} else {
jvmFullPath = configJvmPath;
}
String jarFolderPath = config.getProperty(PROP_JAR_FOLDER);
jarFolderPath = jarFolderPath == null ? DEFAULT_JAR_FOLDER : jarFolderPath;
final File jarFolder = new File(jarFolderPath);
String jarNameRegexp = config.getProperty(PROP_JAR_NAME_REGEXP);
jarNameRegexp = jarNameRegexp == null ? DEFAULT_JAR_NAME_REGEXP : jarNameRegexp;
final Pattern jarPattern = Pattern.compile(jarNameRegexp);
// Find executable jar
final String [] candidates = jarFolder.list();
if(candidates == null) {
throw new ExecutorException(
"No files found in jar folder specified by "
+ PROP_JAR_FOLDER + " property: " + jarFolder.getAbsolutePath());
}
File f = null;
for(String filename : candidates) {
if(jarPattern.matcher(filename).matches()) {
f = new File(jarFolder, filename);
break;
}
}
if(f == null) {
throw new ExecutorException("Executable jar matching '" + jarPattern
+ "' not found in " + jarFolder.getAbsolutePath()
+ ", candidates are " + Arrays.asList(candidates));
}
jarToExecute = f;
}