diff --git a/core/src/main/java/hudson/init/InitStrategy.java b/core/src/main/java/hudson/init/InitStrategy.java index 9813bea9202ca7662637324415b6de27bd7b7a13..e5e3667ae01d0a6b27e00f21e9862164fa95c7af 100644 --- a/core/src/main/java/hudson/init/InitStrategy.java +++ b/core/src/main/java/hudson/init/InitStrategy.java @@ -6,6 +6,7 @@ import org.jvnet.hudson.reactor.Task; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; +import java.util.Collection; import java.util.List; import java.util.ArrayList; import java.util.Arrays; @@ -39,26 +40,26 @@ public class InitStrategy { * and when that happens, Jenkins will ignore all but the first one in the list. */ public List listPluginArchives(PluginManager pm) throws IOException { - File[] jpi = pm.rootDir.listFiles(new FilterByExtension(".jpi")); // plugin jar file - File[] hpi = pm.rootDir.listFiles(new FilterByExtension(".hpi")); // plugin jar file (for backward compatibility) - File[] jpl = pm.rootDir.listFiles(new FilterByExtension(".jpl")); // linked plugin. for debugging. - File[] hpl = pm.rootDir.listFiles(new FilterByExtension(".hpl")); // linked plugin. for debugging. (for backward compatibility) - if (hpi==null || hpl==null) - throw new IOException("Jenkins is unable to create " + pm.rootDir + "\nPerhaps its security privilege is insufficient"); - List r = new ArrayList(); // the ordering makes sure that during the debugging we get proper precedence among duplicates. // for example, while doing "mvn jpi:run" or "mvn hpi:run" on a plugin that's bundled with Jenkins, we want to the // *.jpl file to override the bundled jpi/hpi file. getBundledPluginsFromProperty(r); - r.addAll(Arrays.asList(jpl)); - r.addAll(Arrays.asList(jpi)); - r.addAll(Arrays.asList(hpl)); - r.addAll(Arrays.asList(hpi)); + + listPluginFiles(pm, r, ".jpi", ".hpi"); // plugin jar files + listPluginFiles(pm, r, ".jpl", ".hpl"); // linked plugin. for debugging. return r; } + + private void listPluginFiles(PluginManager pm, Collection all, String... extensions) throws IOException { + File[] files = pm.rootDir.listFiles(new FilterByExtension(extensions)); + if (files==null) + throw new IOException("Jenkins is unable to create " + pm.rootDir + "\nPerhaps its security privilege is insufficient"); + + all.addAll(Arrays.asList(files)); + } /** * Lists up additional bundled plugins from the system property. @@ -105,16 +106,18 @@ public class InitStrategy { private static final Logger LOGGER = Logger.getLogger(InitStrategy.class.getName()); private static class FilterByExtension implements FilenameFilter { - private final String extension; + private final List extensions; - public FilterByExtension(String extension) { - this.extension = extension; + public FilterByExtension(String... extensions) { + this.extensions = Arrays.asList(extensions); } public boolean accept(File dir, String name) { - return name.endsWith(extension) // plugin jar file - || name.endsWith(".hpl") // linked plugin. for debugging. (for backward compatibility) - || name.endsWith(".jpl"); // linked plugin. for debugging. + for (String extension : extensions) { + if (name.endsWith(extension)) + return true; + } + return false; } } }