aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-batch
diff options
context:
space:
mode:
authorsimonbrandhof <simon.brandhof@gmail.com>2010-09-30 09:37:00 +0000
committersimonbrandhof <simon.brandhof@gmail.com>2010-09-30 09:37:00 +0000
commit4b6828f0e98b5284ff0eacda9bcd8796bc6b8d10 (patch)
tree989aa8f3238b316c78741b186d8acdb1fdbef4eb /sonar-batch
parent2c7c234cf1cf4c8b104b970a5cad30089cb6c043 (diff)
downloadsonarqube-4b6828f0e98b5284ff0eacda9bcd8796bc6b8d10.tar.gz
sonarqube-4b6828f0e98b5284ff0eacda9bcd8796bc6b8d10.zip
the property sonar.core.codeCoveragePlugin is not used when it's set from UI console
Diffstat (limited to 'sonar-batch')
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/BatchPluginRepository.java34
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/ProjectBatch.java4
-rw-r--r--sonar-batch/src/test/java/org/sonar/batch/BatchPluginRepositoryTest.java58
3 files changed, 51 insertions, 45 deletions
diff --git a/sonar-batch/src/main/java/org/sonar/batch/BatchPluginRepository.java b/sonar-batch/src/main/java/org/sonar/batch/BatchPluginRepository.java
index 6ee190fabec..891d8e1fbf7 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/BatchPluginRepository.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/BatchPluginRepository.java
@@ -24,11 +24,13 @@ import org.apache.commons.configuration.Configuration;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import org.picocontainer.MutablePicoContainer;
+import org.picocontainer.PicoContainer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.sonar.api.BatchExtension;
import org.sonar.api.Plugin;
import org.sonar.api.batch.AbstractCoverageExtension;
+import org.sonar.api.resources.Project;
import org.sonar.api.utils.SonarException;
import org.sonar.core.plugin.AbstractPluginRepository;
import org.sonar.core.plugin.JpaPlugin;
@@ -48,19 +50,17 @@ public class BatchPluginRepository extends AbstractPluginRepository {
private Map<String, ClassLoader> classloaders;
private String baseUrl;
private JpaPluginDao dao;
- private Configuration configuration;
- public BatchPluginRepository(JpaPluginDao dao, ServerMetadata server, Configuration configuration) {
+ public BatchPluginRepository(JpaPluginDao dao, ServerMetadata server) {
this.dao = dao;
this.baseUrl = server.getUrl() + "/deploy/plugins/";
- this.configuration = configuration;
}
/**
- * only for unit tests
+ * for unit tests only
*/
- BatchPluginRepository(Configuration configuration) {
- this.configuration = configuration;
+ BatchPluginRepository() {
+
}
public void start() {
@@ -109,15 +109,6 @@ public class BatchPluginRepository extends AbstractPluginRepository {
invokeExtensionProviders(pico);
}
- boolean shouldRegisterCoverageExtension(String pluginKey) {
- String[] selectedPluginKeys = configuration.getStringArray(AbstractCoverageExtension.PARAM_PLUGIN);
- if (ArrayUtils.isEmpty(selectedPluginKeys)) {
- selectedPluginKeys = new String[]{AbstractCoverageExtension.DEFAULT_PLUGIN};
- }
- String oldCoveragePluginKey = getOldCoveragePluginKey(pluginKey);
- return ArrayUtils.contains(selectedPluginKeys, pluginKey) || ArrayUtils.contains(selectedPluginKeys, oldCoveragePluginKey);
- }
-
private String getOldCoveragePluginKey(String pluginKey) {
if (StringUtils.equals("sonar-jacoco-plugin", pluginKey)) {
return "jacoco";
@@ -129,14 +120,23 @@ public class BatchPluginRepository extends AbstractPluginRepository {
}
@Override
- protected boolean shouldRegisterExtension(String pluginKey, Object extension) {
+ protected boolean shouldRegisterExtension(PicoContainer container, String pluginKey, Object extension) {
boolean ok = isType(extension, BatchExtension.class);
if (ok && isType(extension, AbstractCoverageExtension.class)) {
- ok = shouldRegisterCoverageExtension(pluginKey);
+ ok = shouldRegisterCoverageExtension(pluginKey, container.getComponent(Configuration.class));
if (!ok) {
LOG.debug("The following extension is ignored: " + extension + ". See the parameter " + AbstractCoverageExtension.PARAM_PLUGIN);
}
}
return ok;
}
+
+ boolean shouldRegisterCoverageExtension(String pluginKey, Configuration conf) {
+ String[] selectedPluginKeys = conf.getStringArray(AbstractCoverageExtension.PARAM_PLUGIN);
+ if (ArrayUtils.isEmpty(selectedPluginKeys)) {
+ selectedPluginKeys = new String[]{AbstractCoverageExtension.DEFAULT_PLUGIN};
+ }
+ String oldCoveragePluginKey = getOldCoveragePluginKey(pluginKey);
+ return ArrayUtils.contains(selectedPluginKeys, pluginKey) || ArrayUtils.contains(selectedPluginKeys, oldCoveragePluginKey);
+ }
}
diff --git a/sonar-batch/src/main/java/org/sonar/batch/ProjectBatch.java b/sonar-batch/src/main/java/org/sonar/batch/ProjectBatch.java
index eb0f9b18db8..d47ed8d6939 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/ProjectBatch.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/ProjectBatch.java
@@ -68,7 +68,6 @@ public class ProjectBatch {
public void startChildContainer(DefaultSonarIndex index, Project project) {
batchContainer = globalContainer.makeChildContainer();
- batchContainer.getComponent(BatchPluginRepository.class).registerPlugins(batchContainer);
batchContainer.as(Characteristics.CACHE).addComponent(project);
batchContainer.as(Characteristics.CACHE).addComponent(project.getPom());
@@ -76,6 +75,9 @@ public class ProjectBatch {
batchContainer.as(Characteristics.CACHE).addComponent(index.getBucket(project).getSnapshot());
batchContainer.as(Characteristics.CACHE).addComponent(project.getConfiguration());
+ //need to be registered after the Configuration
+ batchContainer.getComponent(BatchPluginRepository.class).registerPlugins(batchContainer);
+
batchContainer.as(Characteristics.CACHE).addComponent(DaoFacade.class);
batchContainer.as(Characteristics.CACHE).addComponent(RulesDao.class);
batchContainer.as(Characteristics.CACHE).addComponent(org.sonar.api.database.daos.RulesDao.class);
diff --git a/sonar-batch/src/test/java/org/sonar/batch/BatchPluginRepositoryTest.java b/sonar-batch/src/test/java/org/sonar/batch/BatchPluginRepositoryTest.java
index 337d40f81e1..604c8296206 100644
--- a/sonar-batch/src/test/java/org/sonar/batch/BatchPluginRepositoryTest.java
+++ b/sonar-batch/src/test/java/org/sonar/batch/BatchPluginRepositoryTest.java
@@ -22,9 +22,11 @@ package org.sonar.batch;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.junit.Test;
+import org.picocontainer.MutablePicoContainer;
import org.sonar.api.BatchExtension;
import org.sonar.api.ServerExtension;
import org.sonar.api.batch.AbstractCoverageExtension;
+import org.sonar.api.utils.IocContainer;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
@@ -33,62 +35,64 @@ public class BatchPluginRepositoryTest {
@Test
public void shouldRegisterBatchExtension() {
- BatchPluginRepository repository = new BatchPluginRepository(new PropertiesConfiguration());
+ MutablePicoContainer pico = IocContainer.buildPicoContainer();
+ pico.addComponent(new PropertiesConfiguration());
+ BatchPluginRepository repository = new BatchPluginRepository();
// check classes
- assertThat(repository.shouldRegisterExtension("foo", FakeBatchExtension.class), is(true));
- assertThat(repository.shouldRegisterExtension("foo", FakeServerExtension.class), is(false));
- assertThat(repository.shouldRegisterExtension("foo", String.class), is(false));
+ assertThat(repository.shouldRegisterExtension(pico, "foo", FakeBatchExtension.class), is(true));
+ assertThat(repository.shouldRegisterExtension(pico, "foo", FakeServerExtension.class), is(false));
+ assertThat(repository.shouldRegisterExtension(pico, "foo", String.class), is(false));
// check objects
- assertThat(repository.shouldRegisterExtension("foo", new FakeBatchExtension()), is(true));
- assertThat(repository.shouldRegisterExtension("foo", new FakeServerExtension()), is(false));
- assertThat(repository.shouldRegisterExtension("foo", "bar"), is(false));
+ assertThat(repository.shouldRegisterExtension(pico, "foo", new FakeBatchExtension()), is(true));
+ assertThat(repository.shouldRegisterExtension(pico, "foo", new FakeServerExtension()), is(false));
+ assertThat(repository.shouldRegisterExtension(pico, "foo", "bar"), is(false));
}
@Test
public void shouldRegisterOnlyCoberturaExtensionByDefault() {
- Configuration conf = new PropertiesConfiguration();
- BatchPluginRepository repository = new BatchPluginRepository(conf);
- assertThat(repository.shouldRegisterCoverageExtension("cobertura"), is(true));
- assertThat(repository.shouldRegisterCoverageExtension("clover"), is(false));
+ BatchPluginRepository repository = new BatchPluginRepository();
+ PropertiesConfiguration conf = new PropertiesConfiguration();
+ assertThat(repository.shouldRegisterCoverageExtension("cobertura", conf), is(true));
+ assertThat(repository.shouldRegisterCoverageExtension("clover", conf), is(false));
}
@Test
public void shouldRegisterCustomCoverageExtension() {
Configuration conf = new PropertiesConfiguration();
conf.setProperty(AbstractCoverageExtension.PARAM_PLUGIN, "clover,phpunit");
- BatchPluginRepository repository = new BatchPluginRepository(conf);
- assertThat(repository.shouldRegisterCoverageExtension("cobertura"), is(false));
- assertThat(repository.shouldRegisterCoverageExtension("clover"), is(true));
- assertThat(repository.shouldRegisterCoverageExtension("phpunit"), is(true));
- assertThat(repository.shouldRegisterCoverageExtension("other"), is(false));
+ BatchPluginRepository repository = new BatchPluginRepository();
+ assertThat(repository.shouldRegisterCoverageExtension("cobertura", conf), is(false));
+ assertThat(repository.shouldRegisterCoverageExtension("clover", conf), is(true));
+ assertThat(repository.shouldRegisterCoverageExtension("phpunit", conf), is(true));
+ assertThat(repository.shouldRegisterCoverageExtension("other", conf), is(false));
}
@Test
public void shouldActivateOldVersionOfEmma() {
Configuration conf = new PropertiesConfiguration();
conf.setProperty(AbstractCoverageExtension.PARAM_PLUGIN, "emma");
- BatchPluginRepository repository = new BatchPluginRepository(conf);
+ BatchPluginRepository repository = new BatchPluginRepository();
- assertThat(repository.shouldRegisterCoverageExtension("sonar-emma-plugin"), is(true));
- assertThat(repository.shouldRegisterCoverageExtension("emma"), is(true));
+ assertThat(repository.shouldRegisterCoverageExtension("sonar-emma-plugin", conf), is(true));
+ assertThat(repository.shouldRegisterCoverageExtension("emma", conf), is(true));
- assertThat(repository.shouldRegisterCoverageExtension("sonar-jacoco-plugin"), is(false));
- assertThat(repository.shouldRegisterCoverageExtension("jacoco"), is(false));
- assertThat(repository.shouldRegisterCoverageExtension("clover"), is(false));
- assertThat(repository.shouldRegisterCoverageExtension("cobertura"), is(false));
+ assertThat(repository.shouldRegisterCoverageExtension("sonar-jacoco-plugin", conf), is(false));
+ assertThat(repository.shouldRegisterCoverageExtension("jacoco", conf), is(false));
+ assertThat(repository.shouldRegisterCoverageExtension("clover", conf), is(false));
+ assertThat(repository.shouldRegisterCoverageExtension("cobertura", conf), is(false));
}
@Test
public void shouldActivateOldVersionOfJacoco() {
Configuration conf = new PropertiesConfiguration();
conf.setProperty(AbstractCoverageExtension.PARAM_PLUGIN, "cobertura,jacoco");
- BatchPluginRepository repository = new BatchPluginRepository(conf);
+ BatchPluginRepository repository = new BatchPluginRepository();
- assertThat(repository.shouldRegisterCoverageExtension("sonar-jacoco-plugin"), is(true));
- assertThat(repository.shouldRegisterCoverageExtension("jacoco"), is(true));
- assertThat(repository.shouldRegisterCoverageExtension("emma"), is(false));
+ assertThat(repository.shouldRegisterCoverageExtension("sonar-jacoco-plugin", conf), is(true));
+ assertThat(repository.shouldRegisterCoverageExtension("jacoco", conf), is(true));
+ assertThat(repository.shouldRegisterCoverageExtension("emma", conf), is(false));
}
public static class FakeBatchExtension implements BatchExtension {