]> source.dussan.org Git - sonarqube.git/commitdiff
Change return type of Plugin#getSonarQubeVersion()
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Mon, 11 Apr 2016 08:57:05 +0000 (10:57 +0200)
committerSimon Brandhof <simon.brandhof@sonarsource.com>
Mon, 11 Apr 2016 08:57:50 +0000 (10:57 +0200)
and improve Javadoc

plugins/sonar-xoo-plugin/src/test/java/org/sonar/xoo/XooPluginTest.java
server/sonar-server/src/main/java/org/sonar/server/plugins/ServerExtensionInstaller.java
sonar-plugin-api/src/main/java/org/sonar/api/Plugin.java
sonar-plugin-api/src/test/java/org/sonar/api/PluginTest.java
sonar-scanner-engine/src/main/java/org/sonar/batch/bootstrap/ExtensionInstaller.java

index 69cc082389516d521d8e0ac2aa4965cd34e851fd..76198a3ac701751bb713768b7ad5eecd3e37a1fb 100644 (file)
@@ -21,7 +21,6 @@ package org.sonar.xoo;
 
 import org.junit.Test;
 import org.sonar.api.Plugin;
-import org.sonar.api.SonarQubeVersion;
 import org.sonar.api.utils.Version;
 import org.sonar.xoo.lang.CpdTokenizerSensor;
 
@@ -32,11 +31,11 @@ public class XooPluginTest {
 
   @Test
   public void provide_extensions_for_5_5() {
-    Plugin.Context context = new Plugin.Context(new SonarQubeVersion(V5_5));
+    Plugin.Context context = new Plugin.Context(V5_5);
     new XooPlugin().define(context);
     assertThat(context.getExtensions()).hasSize(39).contains(CpdTokenizerSensor.class);
 
-    context = new Plugin.Context(new SonarQubeVersion(Version.parse("5.4")));
+    context = new Plugin.Context(Version.parse("5.4"));
     new XooPlugin().define(context);
     assertThat(context.getExtensions()).hasSize(38).doesNotContain(CpdTokenizerSensor.class);
   }
index 931b3e7779c78f9289a47a11722148357563d6fc..fef6ed8a4847b6bb8c975a30f252bdc05cbe40c9 100644 (file)
@@ -60,7 +60,7 @@ public abstract class ServerExtensionInstaller {
         Plugin plugin = pluginRepository.getPluginInstance(pluginKey);
         container.addExtension(pluginInfo, plugin);
 
-        Plugin.Context context = new Plugin.Context(sonarQubeVersion);
+        Plugin.Context context = new Plugin.Context(sonarQubeVersion.get());
         plugin.define(context);
         for (Object extension : context.getExtensions()) {
           if (installExtension(container, pluginInfo, extension, true) != null) {
index bf097a28939d677a5cde0c143906e213ad0a7c52..3fa26caa9eecdcebd50c0d59b5c461723ec32379 100644 (file)
@@ -23,6 +23,7 @@ import com.google.common.annotations.Beta;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import org.sonar.api.utils.Version;
 
 import static java.util.Arrays.asList;
 import static java.util.Objects.requireNonNull;
@@ -31,11 +32,11 @@ import static java.util.Objects.requireNonNull;
  * Entry-point for plugins to inject extensions into SonarQube.
  * <p>The JAR manifest must declare the name of the implementation class in the property <code>Plugin-Class</code>.
  * This property is automatically set by sonar-packaging-maven-plugin when building plugin.</p>
- * <p>Example of implementation:
+ * <p>Example of implementation</p>
  * <pre>
  * package com.mycompany.sonarqube;
  * public class MyPlugin implements Plugin {
- *   {@literal @}Override
+ *  {@literal @}Override
  *   public void define(Context context) {
  *     context.addExtensions(MySensor.class, MyRules.class);
  *     if (context.getSonarQubeVersion().isGreaterThanOrEqual(SonarQubeVersion.V5_6)) {
@@ -46,8 +47,8 @@ import static java.util.Objects.requireNonNull;
  *   }
  * }
  * </pre>
- * </p>
- * <p>Example of pom.xml:</p>
+ *
+ * <p>Example of pom.xml</p>
  * <pre>
  * &lt;project&gt;
  *   ...
@@ -68,20 +69,35 @@ import static java.util.Objects.requireNonNull;
  * &lt;/project&gt;
  * </pre>
  *
+ * <p>Example of test</p>
+ * <pre>
+ * MyPlugin underTest = new MyPlugin();
+ *
+ *{@literal @}Test
+ * public void test_plugin_extensions_compatible_with_5_5() {
+ *   Plugin.Context context = new Plugin.Context(SonarQubeVersion.V5_5);
+ *   underTest.define(context);
+ *   assertThat(context.getExtensions()).hasSize(4);
+ * }
+ * </pre>
+ *
  * @since 5.5
  */
 @Beta
 public interface Plugin {
 
   class Context {
-    private final SonarQubeVersion version;
+    private final Version version;
     private final List extensions = new ArrayList();
 
-    public Context(SonarQubeVersion version) {
+    public Context(Version version) {
       this.version = version;
     }
 
-    public SonarQubeVersion getSonarQubeVersion() {
+    /**
+     * Runtime version of SonarQube
+     */
+    public Version getSonarQubeVersion() {
       return version;
     }
 
@@ -89,10 +105,10 @@ public interface Plugin {
      * Add an extension as :
      * <ul>
      *   <li>a Class that is annotated with {@link org.sonar.api.batch.BatchSide}, {@link org.sonar.api.server.ServerSide}
-     *   or {@link org.sonar.api.server.ComputeEngineSide}.</li>
-     *   The extension will be instantiated once. Its dependencies are injected through constructor parameters.</li>
+     *   or {@link org.sonar.api.ce.ComputeEngineSide}. The extension will be instantiated once. Its dependencies are
+     *   injected through constructor parameters.</li>
      *   <li>an instance that is annotated with {@link org.sonar.api.batch.BatchSide}, {@link org.sonar.api.server.ServerSide}
-     *   or {@link org.sonar.api.server.ComputeEngineSide}.</li>
+     *   or {@link org.sonar.api.ce.ComputeEngineSide}.</li>
      * </ul>
      * Only a single component can be registered for a class. It's not allowed for example to register:
      * <ul>
index 204a430dde3a44c34c13e91fab6968b140cae297..6a2602a5450e4c7e1e4d3c098f2da6e26f455aa5 100644 (file)
@@ -29,9 +29,9 @@ public class PluginTest {
 
   @Test
   public void test_context() {
-    Plugin.Context context = new Plugin.Context(new SonarQubeVersion(V5_5));
+    Plugin.Context context = new Plugin.Context(V5_5);
 
-    assertThat(context.getSonarQubeVersion().get()).isEqualTo(V5_5);
+    assertThat(context.getSonarQubeVersion()).isEqualTo(V5_5);
     assertThat(context.getExtensions()).isEmpty();
 
     context.addExtension("foo");
index dfab90ea7e8e5dbbbcb9bbbac74b5774d555dbfa..5794a8a0314c09415c4a4ca948aa55c1232a2616 100644 (file)
@@ -23,7 +23,6 @@ import java.util.List;
 import javax.annotation.Nullable;
 import org.sonar.api.ExtensionProvider;
 import org.sonar.api.Plugin;
-import org.sonar.api.SonarPlugin;
 import org.sonar.api.SonarQubeVersion;
 import org.sonar.api.batch.AnalysisMode;
 import org.sonar.core.platform.ComponentContainer;
@@ -52,7 +51,7 @@ public class ExtensionInstaller {
     // plugin extensions
     for (PluginInfo pluginInfo : pluginRepository.getPluginInfos()) {
       Plugin plugin = pluginRepository.getPluginInstance(pluginInfo.getKey());
-      Plugin.Context context = new Plugin.Context(sonarQubeVersion);
+      Plugin.Context context = new Plugin.Context(sonarQubeVersion.get());
       plugin.define(context);
       for (Object extension : context.getExtensions()) {
         doInstall(container, matcher, pluginInfo, extension);