diff options
author | Julien HENRY <julien.henry@sonarsource.com> | 2013-01-15 09:53:44 +0100 |
---|---|---|
committer | Julien HENRY <julien.henry@sonarsource.com> | 2013-01-15 09:55:32 +0100 |
commit | 1f49941cf2e2485abc0c64d1bd0ffa4b563aed77 (patch) | |
tree | 2592d3079879d97666ea128866e712310e9906f6 /sonar-batch | |
parent | e0d52b1c0820be0d136f7748581f0bae122414ca (diff) | |
download | sonarqube-1f49941cf2e2485abc0c64d1bd0ffa4b563aed77.tar.gz sonarqube-1f49941cf2e2485abc0c64d1bd0ffa4b563aed77.zip |
SONAR-4069 Revert Metric to a batch extension to not break licensed plugins
Diffstat (limited to 'sonar-batch')
7 files changed, 17 insertions, 32 deletions
diff --git a/sonar-batch/src/main/java/org/sonar/batch/DecoratorsSelector.java b/sonar-batch/src/main/java/org/sonar/batch/DecoratorsSelector.java index b96e0d648da..3bfbabdc31b 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/DecoratorsSelector.java +++ b/sonar-batch/src/main/java/org/sonar/batch/DecoratorsSelector.java @@ -23,7 +23,6 @@ import com.google.common.collect.HashMultimap; import com.google.common.collect.SetMultimap; import org.sonar.api.batch.BatchExtensionDictionnary; import org.sonar.api.batch.Decorator; -import org.sonar.api.batch.TaskExtensionDictionnary; import org.sonar.api.measures.Metric; import org.sonar.api.resources.Project; @@ -34,17 +33,15 @@ import java.util.List; public final class DecoratorsSelector { private BatchExtensionDictionnary batchExtDictionnary; - private TaskExtensionDictionnary taskExtDictionnary; - public DecoratorsSelector(TaskExtensionDictionnary taskExtDictionnary, BatchExtensionDictionnary dictionnary) { - this.taskExtDictionnary = taskExtDictionnary; + public DecoratorsSelector(BatchExtensionDictionnary dictionnary) { this.batchExtDictionnary = dictionnary; } public Collection<Decorator> select(Project project) { List<Decorator> decorators = new ArrayList<Decorator>(batchExtDictionnary.select(Decorator.class, project, false)); SetMultimap<Metric, Decorator> decoratorsByGeneratedMetric = getDecoratorsByMetric(decorators); - for (Metric metric : taskExtDictionnary.select(Metric.class)) { + for (Metric metric : batchExtDictionnary.select(Metric.class)) { if (metric.getFormula() != null) { decorators.add(new FormulaDecorator(metric, decoratorsByGeneratedMetric.get(metric))); } diff --git a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/AbstractTaskModule.java b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/AbstractTaskModule.java index de66cbbf39a..e01292dc88f 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/AbstractTaskModule.java +++ b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/AbstractTaskModule.java @@ -22,7 +22,6 @@ package org.sonar.batch.bootstrap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.sonar.api.batch.TaskDefinition; -import org.sonar.api.batch.TaskExtensionDictionnary; import org.sonar.api.config.EmailSettings; import org.sonar.api.resources.ResourceTypes; import org.sonar.batch.DefaultResourceCreationLock; @@ -109,9 +108,7 @@ public abstract class AbstractTaskModule extends Module { container.addSingleton(DefaultNotificationManager.class); container.addSingleton(DefaultUserFinder.class); container.addSingleton(ResourceTypes.class); - container.addSingleton(MetricProvider.class); container.addSingleton(SemaphoresImpl.class); - container.addSingleton(TaskExtensionDictionnary.class); } private void registerDatabaseComponents() { diff --git a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/AnalyseProjectModule.java b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/AnalyseProjectModule.java index 74aff0245da..8257522b12b 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/AnalyseProjectModule.java +++ b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/AnalyseProjectModule.java @@ -32,10 +32,12 @@ public class AnalyseProjectModule extends Module { @Override protected void configure() { - registerBatchExtensions(); + container.addSingleton(MetricProvider.class); + + registerPerBatchExtensions(); } - private void registerBatchExtensions() { + private void registerPerBatchExtensions() { ExtensionInstaller installer = container.getComponentByType(ExtensionInstaller.class); installer.installBatchExtensions(container, InstantiationStrategy.PER_BATCH); } diff --git a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/MetricProvider.java b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/MetricProvider.java index 0cf3af16bc2..9df02c89559 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/MetricProvider.java +++ b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/MetricProvider.java @@ -21,15 +21,17 @@ package org.sonar.batch.bootstrap; import com.google.common.collect.Lists; import org.slf4j.LoggerFactory; +import org.sonar.api.BatchExtension; import org.sonar.api.ExtensionProvider; -import org.sonar.api.TaskExtension; +import org.sonar.api.batch.InstantiationStrategy; import org.sonar.api.measures.CoreMetrics; import org.sonar.api.measures.Metric; import org.sonar.api.measures.Metrics; import java.util.List; -public class MetricProvider extends ExtensionProvider implements TaskExtension { +@InstantiationStrategy(InstantiationStrategy.PER_BATCH) +public class MetricProvider extends ExtensionProvider implements BatchExtension { private Metrics[] factories; diff --git a/sonar-batch/src/main/java/org/sonar/batch/phases/DecoratorsExecutor.java b/sonar-batch/src/main/java/org/sonar/batch/phases/DecoratorsExecutor.java index 0a298869676..e9a3a185078 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/phases/DecoratorsExecutor.java +++ b/sonar-batch/src/main/java/org/sonar/batch/phases/DecoratorsExecutor.java @@ -25,7 +25,6 @@ import org.sonar.api.batch.BatchExtensionDictionnary; import org.sonar.api.batch.Decorator; import org.sonar.api.batch.DecoratorContext; import org.sonar.api.batch.SonarIndex; -import org.sonar.api.batch.TaskExtensionDictionnary; import org.sonar.api.resources.Project; import org.sonar.api.resources.Resource; import org.sonar.api.utils.SonarException; @@ -43,9 +42,9 @@ public class DecoratorsExecutor implements BatchComponent { private EventBus eventBus; private Project project; - public DecoratorsExecutor(TaskExtensionDictionnary taskExtDictionnary, BatchExtensionDictionnary batchExtDictionnary, + public DecoratorsExecutor(BatchExtensionDictionnary batchExtDictionnary, Project project, SonarIndex index, EventBus eventBus) { - this.decoratorsSelector = new DecoratorsSelector(taskExtDictionnary, batchExtDictionnary); + this.decoratorsSelector = new DecoratorsSelector(batchExtDictionnary); this.index = index; this.eventBus = eventBus; this.project = project; diff --git a/sonar-batch/src/test/java/org/sonar/batch/DecoratorsSelectorTest.java b/sonar-batch/src/test/java/org/sonar/batch/DecoratorsSelectorTest.java index ecb9a9bb8df..4cbb299f9c9 100644 --- a/sonar-batch/src/test/java/org/sonar/batch/DecoratorsSelectorTest.java +++ b/sonar-batch/src/test/java/org/sonar/batch/DecoratorsSelectorTest.java @@ -25,7 +25,6 @@ import org.sonar.api.batch.BatchExtensionDictionnary; import org.sonar.api.batch.Decorator; import org.sonar.api.batch.DecoratorContext; import org.sonar.api.batch.DependedUpon; -import org.sonar.api.batch.TaskExtensionDictionnary; import org.sonar.api.measures.Formula; import org.sonar.api.measures.FormulaContext; import org.sonar.api.measures.FormulaData; @@ -52,10 +51,9 @@ public class DecoratorsSelectorTest { @Test public void selectAndSortFormulas() { Project project = new Project("key"); - TaskExtensionDictionnary taskExtDictionnary = newTaskDictionnary(withFormula1, withoutFormula3, withFormula2); - BatchExtensionDictionnary batchExtDictionnary = newBatchDictionnary(); + BatchExtensionDictionnary batchExtDictionnary = newBatchDictionnary(withFormula1, withoutFormula3, withFormula2); - Collection<Decorator> decorators = new DecoratorsSelector(taskExtDictionnary, batchExtDictionnary).select(project); + Collection<Decorator> decorators = new DecoratorsSelector(batchExtDictionnary).select(project); assertThat(decorators.size(), is(2)); assertThat(decorators, hasItem((Decorator) new FormulaDecorator(withFormula1))); assertThat(decorators, hasItem((Decorator) new FormulaDecorator(withFormula2))); @@ -65,10 +63,9 @@ public class DecoratorsSelectorTest { public void decoratorsShouldBeExecutedBeforeFormulas() { Project project = new Project("key"); Decorator metric1Decorator = new Metric1Decorator(); - TaskExtensionDictionnary taskExtDictionnary = newTaskDictionnary(withFormula1); - BatchExtensionDictionnary batchExtDictionnary = newBatchDictionnary(metric1Decorator); + BatchExtensionDictionnary batchExtDictionnary = newBatchDictionnary(withFormula1, metric1Decorator); - Collection<Decorator> decorators = new DecoratorsSelector(taskExtDictionnary, batchExtDictionnary).select(project); + Collection<Decorator> decorators = new DecoratorsSelector(batchExtDictionnary).select(project); Decorator firstDecorator = (Decorator) CollectionUtils.get(decorators, 0); Decorator secondDecorator = (Decorator) CollectionUtils.get(decorators, 1); @@ -81,14 +78,6 @@ public class DecoratorsSelectorTest { assertThat(CollectionUtils.get(formulaDecorator.dependsUponDecorators(), 0), is((Object) firstDecorator)); } - private TaskExtensionDictionnary newTaskDictionnary(Object... extensions) { - ComponentContainer ioc = new ComponentContainer(); - for (Object extension : extensions) { - ioc.addSingleton(extension); - } - return new TaskExtensionDictionnary(ioc); - } - private BatchExtensionDictionnary newBatchDictionnary(Object... extensions) { ComponentContainer ioc = new ComponentContainer(); for (Object extension : extensions) { diff --git a/sonar-batch/src/test/java/org/sonar/batch/phases/DecoratorsExecutorTest.java b/sonar-batch/src/test/java/org/sonar/batch/phases/DecoratorsExecutorTest.java index 966f9cf0c1e..c55d83722a7 100644 --- a/sonar-batch/src/test/java/org/sonar/batch/phases/DecoratorsExecutorTest.java +++ b/sonar-batch/src/test/java/org/sonar/batch/phases/DecoratorsExecutorTest.java @@ -24,7 +24,6 @@ import org.sonar.api.batch.BatchExtensionDictionnary; import org.sonar.api.batch.Decorator; import org.sonar.api.batch.DecoratorContext; import org.sonar.api.batch.SonarIndex; -import org.sonar.api.batch.TaskExtensionDictionnary; import org.sonar.api.resources.File; import org.sonar.api.resources.Project; import org.sonar.api.resources.Resource; @@ -66,7 +65,7 @@ public class DecoratorsExecutorTest { Decorator decorator = mock(Decorator.class); doThrow(new SonarException()).when(decorator).decorate(any(Resource.class), any(DecoratorContext.class)); - DecoratorsExecutor executor = new DecoratorsExecutor(mock(TaskExtensionDictionnary.class), mock(BatchExtensionDictionnary.class), new Project("key"), mock(SonarIndex.class), + DecoratorsExecutor executor = new DecoratorsExecutor(mock(BatchExtensionDictionnary.class), new Project("key"), mock(SonarIndex.class), mock(EventBus.class)); try { executor.executeDecorator(decorator, mock(DefaultDecoratorContext.class), new File("org/foo/Bar.java")); |