From 50e2bb1db1b097cac4fb73b4aa211a37ba2184b5 Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Mon, 11 Apr 2016 10:57:05 +0200 Subject: Change return type of Plugin#getSonarQubeVersion() and improve Javadoc --- .../src/main/java/org/sonar/api/Plugin.java | 36 ++++++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) (limited to 'sonar-plugin-api/src/main/java/org') diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/Plugin.java b/sonar-plugin-api/src/main/java/org/sonar/api/Plugin.java index bf097a28939..3fa26caa9ee 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/Plugin.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/Plugin.java @@ -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. *

The JAR manifest must declare the name of the implementation class in the property Plugin-Class. * This property is automatically set by sonar-packaging-maven-plugin when building plugin.

- *

Example of implementation: + *

Example of implementation

*
  * 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;
  *   }
  * }
  * 
- *

- *

Example of pom.xml:

+ * + *

Example of pom.xml

*
  * <project>
  *   ...
@@ -68,20 +69,35 @@ import static java.util.Objects.requireNonNull;
  * </project>
  * 
* + *

Example of test

+ *
+ * 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);
+ * }
+ * 
+ * * @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 : * * Only a single component can be registered for a class. It's not allowed for example to register: *