diff options
author | Joakim Erdfelt | 2015-11-12 00:30:55 +0000 |
---|---|---|
committer | Joakim Erdfelt | 2015-11-12 00:30:55 +0000 |
commit | 59652eeb3f24a73a233adfbe052a8f83e2f8ca8c (patch) | |
tree | 3e252c8363d065f1b4a2a9837a10692419b189f1 | |
parent | 5ebc9e7c5ed060cf409efc37e14a843122d1461a (diff) | |
download | org.eclipse.jetty.project-59652eeb3f24a73a233adfbe052a8f83e2f8ca8c.tar.gz org.eclipse.jetty.project-59652eeb3f24a73a233adfbe052a8f83e2f8ca8c.tar.xz org.eclipse.jetty.project-59652eeb3f24a73a233adfbe052a8f83e2f8ca8c.zip |
481960 - Add --skip-file-validation to 9.1.x
5 files changed, 62 insertions, 6 deletions
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 acea4b833d..7e9fec9a36 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 @@ -469,9 +469,16 @@ public class Main } // Do downloads now - for (String file : module.getFiles()) + if (module.isSkipFilesValidation()) { - initFile(new FileArg(file)); + StartLog.info("Skipping [files] validation on module: %s",module.getName()); + } + else + { + for (String file : module.getFiles()) + { + initFile(new FileArg(file)); + } } // Process dependencies from top level only diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/Module.java b/jetty-start/src/main/java/org/eclipse/jetty/start/Module.java index 892f11a86f..c1bd4ab40e 100644 --- a/jetty-start/src/main/java/org/eclipse/jetty/start/Module.java +++ b/jetty-start/src/main/java/org/eclipse/jetty/start/Module.java @@ -105,6 +105,9 @@ public class Module private boolean enabled = false; /** List of sources that enabled this module */ private final Set<String> sources = new HashSet<>(); + + /** Skip the validation of [files] section */ + private boolean skipFilesValidation = false; public Module(BaseHome basehome, File file) throws FileNotFoundException, IOException { @@ -288,6 +291,11 @@ public class Module return enabled; } + public boolean isSkipFilesValidation() + { + return skipFilesValidation; + } + public void process(BaseHome basehome) throws FileNotFoundException, IOException { Pattern section = Pattern.compile("\\s*\\[([^]]*)\\]\\s*"); @@ -381,6 +389,11 @@ public class Module this.parentNames.addAll(parents); } } + + public void setSkipFilesValidation(boolean skip) + { + this.skipFilesValidation = skip; + } @Override public String toString() @@ -395,4 +408,5 @@ public class Module str.append(']'); return str.toString(); } + } diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/Modules.java b/jetty-start/src/main/java/org/eclipse/jetty/start/Modules.java index 95bd8076f4..49767f0d07 100644 --- a/jetty-start/src/main/java/org/eclipse/jetty/start/Modules.java +++ b/jetty-start/src/main/java/org/eclipse/jetty/start/Modules.java @@ -421,6 +421,7 @@ public class Modules implements Iterable<Module> } StartLog.debug("Registering Module: %s",basehome.toShortForm(file)); Module module = new Module(basehome,file); + module.setSkipFilesValidation(args.isSkippedFileValidation(module.getName())); module.expandProperties(args.getProperties()); return register(module); } 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 8e0ec3d27b..27620dd5e0 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 @@ -27,11 +27,13 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.TreeSet; import org.eclipse.jetty.start.Props.Prop; @@ -69,6 +71,8 @@ public class StartArgs private List<String> commandLine = new ArrayList<>(); private Set<String> modules = new HashSet<>(); + /** List of modules to skip [files] section validation */ + private Set<String> skipFileValidationModules = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); private Map<String, List<String>> sources = new HashMap<>(); private List<FileArg> files = new ArrayList<>(); private Classpath classpath; @@ -104,8 +108,14 @@ public class StartArgs classpath = new Classpath(); } - private void addFile(String uriLocation) + private void addFile(Module module, String uriLocation) { + if (module != null && module.isSkipFilesValidation()) + { + StartLog.debug("Not validating %s [files] for %s",module,uriLocation); + return; + } + FileArg arg = new FileArg(uriLocation); if (!files.contains(arg)) { @@ -410,7 +420,7 @@ public class StartArgs for (String file : module.getFiles()) { StartLog.debug("Adding module specified file: %s",file); - addFile(file); + addFile(module, file); } } } @@ -629,6 +639,15 @@ public class StartArgs { return listModules; } + + public boolean isSkippedFileValidation(String moduleName) + { + if(skipFileValidationModules == null) { + return false; + } + + return skipFileValidationModules.contains(moduleName); + } private void setProperty(String key, String value, String source) { @@ -737,7 +756,7 @@ public class StartArgs if (arg.startsWith("--download=")) { - addFile(getValue(arg)); + addFile(null, getValue(arg)); run = false; download = true; return; @@ -780,6 +799,17 @@ public class StartArgs exec = true; return; } + + // Skip [files] validation on a module + if (arg.startsWith("--skip-vile-validation=")) + { + List<String> moduleNames = getValues(arg); + for (String moduleName : moduleNames) + { + skipFileValidationModules.add(moduleName); + } + return; + } // Arbitrary Libraries diff --git a/jetty-start/src/test/java/org/eclipse/jetty/start/ModulesTest.java b/jetty-start/src/test/java/org/eclipse/jetty/start/ModulesTest.java index beb8366c2e..f797600ba8 100644 --- a/jetty-start/src/test/java/org/eclipse/jetty/start/ModulesTest.java +++ b/jetty-start/src/test/java/org/eclipse/jetty/start/ModulesTest.java @@ -18,7 +18,9 @@ package org.eclipse.jetty.start; +import static org.hamcrest.Matchers.anyOf; import static org.hamcrest.Matchers.contains; +import static org.hamcrest.Matchers.either; import static org.hamcrest.Matchers.is; import java.io.File; @@ -44,7 +46,9 @@ public class ModulesTest Modules modules = new Modules(); modules.registerAll(basehome, DEFAULT_ARGS); - Assert.assertThat("Module count",modules.count(),is(29)); + // 29 for java versions inside of NPN list + // 30 for java versions outside of NPN list + Assert.assertThat("Module count",modules.count(),anyOf(is(29),is(30))); } @Test |