]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-7441 load ServerSide components in CE for backward compatibility
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Wed, 30 Mar 2016 13:37:36 +0000 (15:37 +0200)
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Wed, 30 Mar 2016 13:37:36 +0000 (15:37 +0200)
server/sonar-ce/src/main/java/org/sonar/ce/platform/ComputeEngineExtensionInstaller.java
server/sonar-server/src/main/java/org/sonar/server/plugins/ServerExtensionInstaller.java

index 70c0d74cbb467e5c1917a6e325331810091f23ba..dce2846082000b5e2607ce2de87ae1db49e367a8 100644 (file)
@@ -21,11 +21,12 @@ package org.sonar.ce.platform;
 
 import org.sonar.api.SonarQubeVersion;
 import org.sonar.api.ce.ComputeEngineSide;
+import org.sonar.api.server.ServerSide;
 import org.sonar.core.platform.PluginRepository;
 import org.sonar.server.plugins.ServerExtensionInstaller;
 
 public class ComputeEngineExtensionInstaller extends ServerExtensionInstaller {
   public ComputeEngineExtensionInstaller(SonarQubeVersion sonarQubeVersion, PluginRepository pluginRepository) {
-    super(sonarQubeVersion, pluginRepository, ComputeEngineSide.class);
+    super(sonarQubeVersion, pluginRepository, ServerSide.class, ComputeEngineSide.class);
   }
 }
index 5ed1fac8f05f40ab3aa162d61700772148e9856d..931b3e7779c78f9289a47a11722148357563d6fc 100644 (file)
@@ -41,14 +41,14 @@ public abstract class ServerExtensionInstaller {
 
   private final SonarQubeVersion sonarQubeVersion;
   private final PluginRepository pluginRepository;
-  private final Class<? extends Annotation> supportedAnnotationType;
+  private final Class<? extends Annotation>[] supportedAnnotationTypes;
 
   protected ServerExtensionInstaller(SonarQubeVersion sonarQubeVersion, PluginRepository pluginRepository,
-    Class<? extends Annotation> supportedAnnotationType) {
-    requireNonNull(supportedAnnotationType, "At least one supported annotation type must be specified");
+    Class<? extends Annotation>... supportedAnnotationTypes) {
+    requireNonNull(supportedAnnotationTypes, "At least one supported annotation type must be specified");
     this.sonarQubeVersion = sonarQubeVersion;
     this.pluginRepository = pluginRepository;
-    this.supportedAnnotationType = supportedAnnotationType;
+    this.supportedAnnotationTypes = supportedAnnotationTypes;
   }
 
   public void installExtensions(ComponentContainer container) {
@@ -103,12 +103,14 @@ public abstract class ServerExtensionInstaller {
   }
 
   Object installExtension(ComponentContainer container, PluginInfo pluginInfo, Object extension, boolean acceptProvider) {
-    if (AnnotationUtils.getAnnotation(extension, supportedAnnotationType) != null) {
-      if (!acceptProvider && isExtensionProvider(extension)) {
-        throw new IllegalStateException("ExtensionProvider can not include providers itself: " + extension);
+    for (Class<? extends Annotation> supportedAnnotationType : supportedAnnotationTypes) {
+      if (AnnotationUtils.getAnnotation(extension, supportedAnnotationType) != null) {
+        if (!acceptProvider && isExtensionProvider(extension)) {
+          throw new IllegalStateException("ExtensionProvider can not include providers itself: " + extension);
+        }
+        container.addExtension(pluginInfo, extension);
+        return extension;
       }
-      container.addExtension(pluginInfo, extension);
-      return extension;
     }
     return null;
   }