diff options
author | simonbrandhof <simon.brandhof@gmail.com> | 2010-09-28 15:53:04 +0000 |
---|---|---|
committer | simonbrandhof <simon.brandhof@gmail.com> | 2010-09-28 15:53:04 +0000 |
commit | f25c971275702a3a53195b568fe3c91469076c83 (patch) | |
tree | 52764695c638d5905d6116d2bf4d5d4416290ba6 /sonar-plugin-api/src | |
parent | 5cdbf337fef2559593e53dc7b2a2c68d8e1f992f (diff) | |
download | sonarqube-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.java | 35 | ||||
-rw-r--r-- | sonar-plugin-api/src/main/java/org/sonar/api/platform/PluginRepository.java | 3 |
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 < 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); |