From 2d40b7e7e9f5f6cd669cb0e3ba8625d05795dabe Mon Sep 17 00:00:00 2001 From: Nicolas De Loof Date: Sun, 2 Feb 2014 13:38:03 +0100 Subject: [PATCH] Warn user when plugin dependencies don't match required minimal version --- core/src/main/java/hudson/PluginWrapper.java | 22 ++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/hudson/PluginWrapper.java b/core/src/main/java/hudson/PluginWrapper.java index 870930f7de..71370d4cdd 100644 --- a/core/src/main/java/hudson/PluginWrapper.java +++ b/core/src/main/java/hudson/PluginWrapper.java @@ -479,19 +479,33 @@ public class PluginWrapper implements Comparable, ModelObject { */ /*package*/ void resolvePluginDependencies() throws IOException { List missingDependencies = new ArrayList(); + List incompatibleDependencies = new ArrayList(); // make sure dependencies exist for (Dependency d : dependencies) { - if (parent.getPlugin(d.shortName) == null) + PluginWrapper plugin = parent.getPlugin(d.shortName); + if (plugin == null || plugin.isActive()) { missingDependencies.add(d.toString()); + } else if (new VersionNumber(plugin.getVersion()).isOlderThan(new VersionNumber(d.version))) { + incompatibleDependencies.add(d.toString()); + } } - if (!missingDependencies.isEmpty()) - throw new IOException("Dependency "+Util.join(missingDependencies, ", ")+" doesn't exist"); // add the optional dependencies that exists for (Dependency d : optionalDependencies) { - if (parent.getPlugin(d.shortName) != null) + PluginWrapper plugin = parent.getPlugin(d.shortName); + if (plugin != null) { dependencies.add(d); + } else if (new VersionNumber(plugin.getVersion()).isOlderThan(new VersionNumber(d.version))) { + incompatibleDependencies.add(d.toString()); + } } + + if (!missingDependencies.isEmpty()) + throw new IOException("Dependency "+Util.join(missingDependencies, ", ")+" doesn't exist"); + + if (!incompatibleDependencies.isEmpty()) + throw new IOException("Dependency "+Util.join(incompatibleDependencies, ", ")+" doesn't match required version"); + } /**