aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-plugin-api/src
diff options
context:
space:
mode:
authorsimonbrandhof <simon.brandhof@gmail.com>2010-09-28 15:53:04 +0000
committersimonbrandhof <simon.brandhof@gmail.com>2010-09-28 15:53:04 +0000
commitf25c971275702a3a53195b568fe3c91469076c83 (patch)
tree52764695c638d5905d6116d2bf4d5d4416290ba6 /sonar-plugin-api/src
parent5cdbf337fef2559593e53dc7b2a2c68d8e1f992f (diff)
downloadsonarqube-f25c971275702a3a53195b568fe3c91469076c83.tar.gz
sonarqube-f25c971275702a3a53195b568fe3c91469076c83.zip
SONAR-1814 add the method ExtensionProvider.provide() in order to support obfuscated code
Diffstat (limited to 'sonar-plugin-api/src')
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/ExtensionProvider.java35
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/platform/PluginRepository.java3
2 files changed, 23 insertions, 15 deletions
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/ExtensionProvider.java b/sonar-plugin-api/src/main/java/org/sonar/api/ExtensionProvider.java
index 40dcbba5d97..02ad1ff5c05 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/ExtensionProvider.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/ExtensionProvider.java
@@ -19,38 +19,43 @@
*/
package org.sonar.api;
-import org.picocontainer.injectors.Provider;
-
/**
* Factory of extensions. It allows to dynamically create extensions depending upon runtime context. A use-case is
* to create one rule repository by language.
*
- * <p>Constraints are :
+ * <p>Notes :
* <ul>
- * <li>the factory is declared in Plugin.getExtensions() as an instance but not as a class</li>
- * <li>the factory must have a public method named "provide()"</li>
- * <li>the method provide() must return an object or an array of objects. Collections and classes are excluded.</li>
- * <li>the methode provide() can accept parameters. These parameters are IoC dependencies.
+ * <li>the provider is declared in Plugin.getExtensions()</li>
+ * <li>the provider must also implement ServerExtension and/or BatchExtension</li>
+ * <li>the provider can accept dependencies (parameters) in its constructors.</li>
+ * <li>the method provide() is automatically executed once by sonar</li>
+ * <li>the method provide() must return an object or an Iterable of objects. <strong>Arrays are excluded</strong>.</li>
* </ul>
* </p>
*
* <p>Example:
* <pre>
- * public class RuleRepositoryProvider extends ExtensionProvider {
- * public RuleRepository[] provide(Language[] languages) {
- * RuleRepository[] result = new RuleRepository[languages.length];
- * for(int index=0; index &lt; languages.length ; index++) {
- * Language language = languages[index];
- * result[index] = new RuleRepository(...);
+ * public class RuleRepositoryProvider extends ExtensionProvider implements ServerExtension {
+ * private Language[] languages;
+ *
+ * public RuleRepositoryProvider(Language[] languages) {
+ * this.languages = languages;
+ * }
+ *
+ * public List<RuleRepository> provide() {
+ * List<RuleRepository> result = new ArrayList<RuleRepository>();
+ * for(Language language: languages) {
+ * result.add(new RuleRepository(..., language, ...));
* }
* return result;
* }
* }
* </pre>
* </p>
- *
+ *
* @since 2.3
*/
-public abstract class ExtensionProvider implements Extension, Provider {
+public abstract class ExtensionProvider implements Extension {
+ public abstract Object provide();
}
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/platform/PluginRepository.java b/sonar-plugin-api/src/main/java/org/sonar/api/platform/PluginRepository.java
index 8529642a9f1..49e42cd4c8c 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/platform/PluginRepository.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/platform/PluginRepository.java
@@ -31,6 +31,9 @@ public interface PluginRepository extends BatchComponent, ServerComponent {
Plugin getPlugin(String key);
+ /**
+ * @deprecated since 2.3
+ */
@Deprecated
Plugin getPluginForExtension(Object extension);