From d621df3c3482cccb1153a85936a8d80eedc0a032 Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Tue, 13 May 2014 12:04:10 +0200 Subject: [PATCH] 434505 Allow property files on start.jar command line Signed-off-by: Tom Zeller --- .../main/java/org/eclipse/jetty/start/FS.java | 5 +++ .../java/org/eclipse/jetty/start/Main.java | 3 ++ .../org/eclipse/jetty/start/StartArgs.java | 45 +++++++++++++++++++ 3 files changed, 53 insertions(+) diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/FS.java b/jetty-start/src/main/java/org/eclipse/jetty/start/FS.java index 5fd41b92dd5..9c0429718e1 100644 --- a/jetty-start/src/main/java/org/eclipse/jetty/start/FS.java +++ b/jetty-start/src/main/java/org/eclipse/jetty/start/FS.java @@ -195,6 +195,11 @@ public class FS return filename.toLowerCase(Locale.ENGLISH).endsWith(".xml"); } + public static boolean isPropertyFile(String filename) + { + return filename.toLowerCase(Locale.ENGLISH).endsWith(".properties"); + } + public static String toRelativePath(File baseDir, File path) { return baseDir.toURI().relativize(path.toURI()).toASCIIString(); diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java b/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java index c196affc580..acea4b833de 100644 --- a/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java +++ b/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java @@ -578,6 +578,9 @@ public class Main // 8) Resolve Extra XMLs args.resolveExtraXmls(baseHome); + + // 9) Resolve Property Files + args.resolvePropertyFiles(baseHome); return args; } diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java b/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java index 93ca76d6c7e..8e0ec3d27bc 100644 --- a/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java +++ b/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java @@ -74,6 +74,8 @@ public class StartArgs private Classpath classpath; private List xmlRefs = new ArrayList<>(); private List xmls = new ArrayList<>(); + private List propertyFileRefs = new ArrayList<>(); + private List propertyFiles = new ArrayList<>(); private Props properties = new Props(); private Set systemPropertyKeys = new HashSet<>(); private List jvmArgs = new ArrayList<>(); @@ -129,6 +131,19 @@ public class StartArgs xmls.add(xmlfile); } } + + private void addUniquePropertyFile(String propertyFileRef, File propertyFile) throws IOException + { + if (!FS.canReadFile(propertyFile)) + { + throw new IOException("Cannot read file: " + propertyFileRef); + } + propertyFile = propertyFile.getCanonicalFile(); + if (!propertyFiles.contains(propertyFile)) + { + propertyFiles.add(propertyFile); + } + } public void dumpActiveXmls(BaseHome baseHome) { @@ -482,6 +497,11 @@ public class StartArgs { cmd.addRawArg(xml.getAbsolutePath()); } + + for (File propertyFile : propertyFiles) + { + cmd.addRawArg(propertyFile.getAbsolutePath()); + } return cmd; } @@ -896,6 +916,16 @@ public class StartArgs } return; } + + if (FS.isPropertyFile(arg)) + { + // only add non-duplicates + if (!propertyFileRefs.contains(arg)) + { + propertyFileRefs.add(arg); + } + return; + } // Anything else is unrecognized throw new UsageException(ERR_BAD_ARG,"Unrecognized argument: \"%s\" in %s",arg,source); @@ -925,6 +955,21 @@ public class StartArgs addUniqueXmlFile(xmlRef,xmlfile); } } + + public void resolvePropertyFiles(BaseHome baseHome) throws IOException + { + // Find and Expand property files + for (String propertyFileRef : propertyFileRefs) + { + // Straight Reference + File propertyFile = baseHome.getFile(propertyFileRef); + if (!propertyFile.exists()) + { + propertyFile = baseHome.getFile("etc/" + propertyFileRef); + } + addUniquePropertyFile(propertyFileRef,propertyFile); + } + } public void setAllModules(Modules allModules) {