Polish "Tighten up PropertiesLauncher's contract"

See gh-8346
Closes gh-7221
This commit is contained in:
Andy Wilkinson
2017-03-02 10:30:50 +00:00
parent e4c807b884
commit b36c8a7c24
5 changed files with 45 additions and 37 deletions

View File

@@ -167,7 +167,7 @@ public class PropertiesLauncher extends Launcher {
for (String config : configs) {
InputStream resource = getResource(config);
if (resource != null) {
log("Found: " + config);
debug("Found: " + config);
try {
this.properties.load(resource);
}
@@ -177,7 +177,7 @@ public class PropertiesLauncher extends Launcher {
for (Object key : Collections.list(this.properties.propertyNames())) {
if (config.endsWith("application.properties")
&& ((String) key).startsWith("loader.")) {
warn("WARNING: use of application.properties for PropertiesLauncher is deprecated");
warn("Use of application.properties for PropertiesLauncher is deprecated");
}
String text = this.properties.getProperty((String) key);
String value = SystemPropertyUtils
@@ -187,7 +187,7 @@ public class PropertiesLauncher extends Launcher {
}
}
if ("true".equals(getProperty(SET_SYSTEM_PROPERTIES))) {
log("Adding resolved properties to System properties");
debug("Adding resolved properties to System properties");
for (Object key : Collections.list(this.properties.propertyNames())) {
String value = this.properties.getProperty((String) key);
System.setProperty((String) key, value);
@@ -197,7 +197,7 @@ public class PropertiesLauncher extends Launcher {
return;
}
else {
log("Not found: " + config);
debug("Not found: " + config);
}
}
}
@@ -232,13 +232,13 @@ public class PropertiesLauncher extends Launcher {
config = config.substring(1);
}
config = "/" + config;
log("Trying classpath: " + config);
debug("Trying classpath: " + config);
return getClass().getResourceAsStream(config);
}
private InputStream getFileResource(String config) throws Exception {
File file = new File(config);
log("Trying file: " + config);
debug("Trying file: " + config);
if (file.canRead()) {
return new FileInputStream(file);
}
@@ -294,7 +294,7 @@ public class PropertiesLauncher extends Launcher {
if (path != null) {
this.paths = parsePathsProperty(path);
}
log("Nested archive paths: " + this.paths);
debug("Nested archive paths: " + this.paths);
}
private List<String> parsePathsProperty(String commaSeparatedPaths) {
@@ -342,7 +342,7 @@ public class PropertiesLauncher extends Launcher {
String customLoaderClassName = getProperty("loader.classLoader");
if (customLoaderClassName != null) {
loader = wrapWithCustomClassLoader(loader, customLoaderClassName);
log("Using custom class loader: " + customLoaderClassName);
debug("Using custom class loader: " + customLoaderClassName);
}
return loader;
}
@@ -392,13 +392,13 @@ public class PropertiesLauncher extends Launcher {
if (property != null) {
String value = SystemPropertyUtils.resolvePlaceholders(this.properties,
property);
log("Property '" + propertyKey + "' from environment: " + value);
debug("Property '" + propertyKey + "' from environment: " + value);
return value;
}
if (this.properties.containsKey(propertyKey)) {
String value = SystemPropertyUtils.resolvePlaceholders(this.properties,
this.properties.getProperty(propertyKey));
log("Property '" + propertyKey + "' from properties: " + value);
debug("Property '" + propertyKey + "' from properties: " + value);
return value;
}
try {
@@ -408,7 +408,7 @@ public class PropertiesLauncher extends Launcher {
if (manifest != null) {
String value = manifest.getMainAttributes().getValue(manifestKey);
if (value != null) {
log("Property '" + manifestKey
debug("Property '" + manifestKey
+ "' from home directory manifest: " + value);
return SystemPropertyUtils.resolvePlaceholders(this.properties,
value);
@@ -424,7 +424,7 @@ public class PropertiesLauncher extends Launcher {
if (manifest != null) {
String value = manifest.getMainAttributes().getValue(manifestKey);
if (value != null) {
log("Property '" + manifestKey + "' from archive manifest: " + value);
debug("Property '" + manifestKey + "' from archive manifest: " + value);
return SystemPropertyUtils.resolvePlaceholders(this.properties, value);
}
}
@@ -460,19 +460,19 @@ public class PropertiesLauncher extends Launcher {
file = new File(this.home, root);
}
if (file.isDirectory()) {
log("Adding classpath entries from " + file);
debug("Adding classpath entries from " + file);
Archive archive = new ExplodedArchive(file, false);
lib.add(archive);
}
Archive archive = getArchive(file);
if (archive != null) {
log("Adding classpath entries from archive " + archive.getUrl() + root);
debug("Adding classpath entries from archive " + archive.getUrl() + root);
lib.add(archive);
}
List<Archive> nested = getNestedArchive(root);
Archive nested = getNestedArchive(root);
if (nested != null) {
log("Adding classpath entries from nested " + root);
lib.addAll(nested);
debug("Adding classpath entries from nested " + root);
lib.add(nested);
}
return lib;
}
@@ -490,21 +490,19 @@ public class PropertiesLauncher extends Launcher {
return null;
}
private List<Archive> getNestedArchive(String root) throws Exception {
List<Archive> list = new ArrayList<Archive>();
private Archive getNestedArchive(String root) throws Exception {
if (root.startsWith("/")
|| this.parent.getUrl().equals(this.home.toURI().toURL())) {
// If home dir is same as parent archive, no need to add it twice.
return list;
return null;
}
EntryFilter filter = new PrefixMatchingArchiveFilter(root);
if (this.parent.getNestedArchives(filter).isEmpty()) {
return list;
return null;
}
// If there are more archives nested in this subdirectory (root) then create a new
// virtual archive for them, and have it added to the classpath
list.add(new FilteredArchive(this.parent, filter));
return list;
return new FilteredArchive(this.parent, filter);
}
private void addNestedEntries(List<Archive> lib) {
@@ -575,15 +573,17 @@ public class PropertiesLauncher extends Launcher {
return Character.toUpperCase(str.charAt(0)) + str.substring(1);
}
private void log(String message) {
private void debug(String message) {
if (Boolean.getBoolean(DEBUG)) {
// We shouldn't use java.util.logging because of classpath issues so we
// just sysout log messages when "loader.debug" is true
System.out.println(message);
log(message);
}
}
private void warn(String message) {
log("WARNING: " + message);
}
private void log(String message) {
// We shouldn't use java.util.logging because of classpath issues
System.out.println(message);
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2012-2016 the original author or authors.
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.

View File

@@ -1 +1 @@
loader.main: demo.NoSuchApplication
loader.main: demo.Application

View File

@@ -0,0 +1,2 @@
Manifest-Version: 1.0
Start-Class: ${foo.main}