aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-batch
diff options
context:
space:
mode:
authorJulien HENRY <julien.henry@sonarsource.com>2013-01-15 09:53:44 +0100
committerJulien HENRY <julien.henry@sonarsource.com>2013-01-15 09:55:32 +0100
commit1f49941cf2e2485abc0c64d1bd0ffa4b563aed77 (patch)
tree2592d3079879d97666ea128866e712310e9906f6 /sonar-batch
parente0d52b1c0820be0d136f7748581f0bae122414ca (diff)
downloadsonarqube-1f49941cf2e2485abc0c64d1bd0ffa4b563aed77.tar.gz
sonarqube-1f49941cf2e2485abc0c64d1bd0ffa4b563aed77.zip
SONAR-4069 Revert Metric to a batch extension to not break licensed plugins
Diffstat (limited to 'sonar-batch')
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/DecoratorsSelector.java7
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/bootstrap/AbstractTaskModule.java3
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/bootstrap/AnalyseProjectModule.java6
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/bootstrap/MetricProvider.java6
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/phases/DecoratorsExecutor.java5
-rw-r--r--sonar-batch/src/test/java/org/sonar/batch/DecoratorsSelectorTest.java19
-rw-r--r--sonar-batch/src/test/java/org/sonar/batch/phases/DecoratorsExecutorTest.java3
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"));