]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-11083 fail at startup if License plugin < 3.4 is installed 3179/head
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Fri, 3 Aug 2018 11:59:32 +0000 (13:59 +0200)
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Mon, 6 Aug 2018 07:45:32 +0000 (09:45 +0200)
server/sonar-server/src/main/java/org/sonar/server/plugins/ServerPluginRepository.java

index 7fb654172f904b95e2d8050631ac017ba9795a4f..ff2675084b3f6b1b72a80da2229b025d7c9f6adb 100644 (file)
@@ -36,6 +36,7 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicBoolean;
 import javax.annotation.CheckForNull;
+import javax.annotation.Nullable;
 import org.apache.commons.io.FileUtils;
 import org.picocontainer.Startable;
 import org.sonar.api.Plugin;
@@ -295,7 +296,19 @@ public class ServerPluginRepository implements PluginRepository, Startable {
     List<PluginInfo> orderedPlugins = Ordering.natural().sortedCopy(pluginInfosByKeys.values());
     for (PluginInfo plugin : orderedPlugins) {
       LOG.info("Deploy plugin {}", SLASH_JOINER.join(plugin.getName(), plugin.getVersion(), plugin.getImplementationBuild()));
+      if (plugin.getKey().equals("license") && isBefore34(plugin.getVersion())) {
+        throw MessageException.of("Your commercial edition is obsolete. You must upgrade the edition bundle to its latest version.");
+      }
+    }
+  }
+
+  private static final Set<String> BEFORE_4_MINOR_VERSION = ImmutableSet.of("0", "1", "2", "3");
+
+  private static boolean isBefore34(@Nullable Version version) {
+    if (version == null) {
+      return true;
     }
+    return "3".equals(version.getMajor()) && BEFORE_4_MINOR_VERSION.contains(version.getMinor());
   }
 
   private void loadInstances() {