8054411: Add nashorn.args.prepend system property

Reviewed-by: hannesw, jlaskey
This commit is contained in:
Attila Szegedi 2014-08-06 11:54:50 +02:00
parent 5d2615f1cb
commit 3dc86bb834

View File

@ -78,7 +78,10 @@ public final class Options {
/** The options map of enabled options */
private final TreeMap<String, Option<?>> options;
/** System property that can be used for command line option propagation */
/** System property that can be used to prepend options to the explicitly specified command line. */
private static final String NASHORN_ARGS_PREPEND_PROPERTY = "nashorn.args.prepend";
/** System property that can be used to append options to the explicitly specified command line. */
private static final String NASHORN_ARGS_PROPERTY = "nashorn.args";
/**
@ -419,15 +422,9 @@ public final class Options {
*/
public void process(final String[] args) {
final LinkedList<String> argList = new LinkedList<>();
addSystemProperties(NASHORN_ARGS_PREPEND_PROPERTY, argList);
Collections.addAll(argList, args);
final String extra = getStringProperty(NASHORN_ARGS_PROPERTY, null);
if (extra != null) {
final StringTokenizer st = new StringTokenizer(extra);
while (st.hasMoreTokens()) {
argList.add(st.nextToken());
}
}
addSystemProperties(NASHORN_ARGS_PROPERTY, argList);
while (!argList.isEmpty()) {
final String arg = argList.remove(0);
@ -509,6 +506,16 @@ public final class Options {
}
}
private static void addSystemProperties(final String sysPropName, final List<String> argList) {
final String sysArgs = getStringProperty(sysPropName, null);
if (sysArgs != null) {
final StringTokenizer st = new StringTokenizer(sysArgs);
while (st.hasMoreTokens()) {
argList.add(st.nextToken());
}
}
}
private static OptionTemplate getOptionTemplate(final String key) {
for (final OptionTemplate t : Options.validOptions) {
if (t.matches(key)) {