Add loader.system (flag to copy properties to System)
This commit is contained in:
parent
a3af83cf96
commit
0e0eb7d3fa
|
|
@ -96,6 +96,13 @@ public class PropertiesLauncher implements ArchiveFilter {
|
||||||
*/
|
*/
|
||||||
public static final String CONFIG_LOCATION = "loader.config.location";
|
public static final String CONFIG_LOCATION = "loader.config.location";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Properties key for boolean flag (default false) which if set will cause the
|
||||||
|
* external configuration properties to be copied to System properties (assuming that
|
||||||
|
* is allowed by Java security).
|
||||||
|
*/
|
||||||
|
public static final String SET_SYSTEM_PROPERTIES = "loader.system";
|
||||||
|
|
||||||
private static final List<String> DEFAULT_PATHS = Arrays.asList("lib/");
|
private static final List<String> DEFAULT_PATHS = Arrays.asList("lib/");
|
||||||
|
|
||||||
private List<String> paths = new ArrayList<String>(DEFAULT_PATHS);
|
private List<String> paths = new ArrayList<String>(DEFAULT_PATHS);
|
||||||
|
|
@ -213,10 +220,19 @@ public class PropertiesLauncher implements ArchiveFilter {
|
||||||
this.properties.put(key, value);
|
this.properties.put(key, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (SystemPropertyUtils.resolvePlaceholders(
|
||||||
|
"${" + SET_SYSTEM_PROPERTIES + ":false}").equals("true")) {
|
||||||
|
this.logger.info("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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this.logger.info("Not found: " + config);
|
this.logger.info("Not found: " + config);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private InputStream getResource(String config) throws Exception {
|
private InputStream getResource(String config) throws Exception {
|
||||||
|
|
|
||||||
|
|
@ -161,7 +161,7 @@ public abstract class SystemPropertyUtils {
|
||||||
System.err.println("Could not resolve placeholder '" + placeholderName
|
System.err.println("Could not resolve placeholder '" + placeholderName
|
||||||
+ "' in [" + text + "] as system property: " + ex);
|
+ "' in [" + text + "] as system property: " + ex);
|
||||||
}
|
}
|
||||||
return properties.getProperty(placeholderName);
|
return properties == null ? null : properties.getProperty(placeholderName);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int findPlaceholderEndIndex(CharSequence buf, int startIndex) {
|
private static int findPlaceholderEndIndex(CharSequence buf, int startIndex) {
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ public class PropertiesLauncherTests {
|
||||||
|
|
||||||
@After
|
@After
|
||||||
public void close() {
|
public void close() {
|
||||||
|
System.clearProperty("loader.system");
|
||||||
System.clearProperty("loader.home");
|
System.clearProperty("loader.home");
|
||||||
System.clearProperty("loader.path");
|
System.clearProperty("loader.path");
|
||||||
System.clearProperty("loader.main");
|
System.clearProperty("loader.main");
|
||||||
|
|
@ -50,6 +51,7 @@ public class PropertiesLauncherTests {
|
||||||
public void testUserSpecifiedMain() throws Exception {
|
public void testUserSpecifiedMain() throws Exception {
|
||||||
this.launcher.initialize(new File("."));
|
this.launcher.initialize(new File("."));
|
||||||
assertEquals("demo.Application", this.launcher.getMainClass(null));
|
assertEquals("demo.Application", this.launcher.getMainClass(null));
|
||||||
|
assertEquals(null, System.getProperty("loader.main"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
@ -68,4 +70,11 @@ public class PropertiesLauncherTests {
|
||||||
assertEquals("foo.Bar", this.launcher.getMainClass(null));
|
assertEquals("foo.Bar", this.launcher.getMainClass(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSystemPropertiesSet() throws Exception {
|
||||||
|
System.setProperty("loader.system", "true");
|
||||||
|
this.launcher.initialize(new File("."));
|
||||||
|
assertEquals("demo.Application", System.getProperty("loader.main"));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue