aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvgeny Mandrikov <mandrikov@gmail.com>2011-02-04 12:46:52 +0300
committerEvgeny Mandrikov <mandrikov@gmail.com>2011-02-04 16:01:42 +0300
commit4483cea3a0a84beb648b946cfd658ae256b5a1ab (patch)
treece92a9aabdc93afd67c7df1da949a10321afcef3
parent9b57d0b379935e053ef050b0379c65fc32810bc1 (diff)
downloadsonarqube-4483cea3a0a84beb648b946cfd658ae256b5a1ab.tar.gz
sonarqube-4483cea3a0a84beb648b946cfd658ae256b5a1ab.zip
SONAR-2169: Add CoverageExtension to API
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/bootstrap/BatchPluginRepository.java22
-rw-r--r--sonar-batch/src/test/java/org/sonar/batch/bootstrap/BatchPluginRepositoryTest.java6
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/batch/AbstractCoverageExtension.java4
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/batch/CoverageExtension.java36
4 files changed, 54 insertions, 14 deletions
diff --git a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BatchPluginRepository.java b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BatchPluginRepository.java
index 166211ae755..af4d177edb3 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BatchPluginRepository.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BatchPluginRepository.java
@@ -19,6 +19,11 @@
*/
package org.sonar.batch.bootstrap;
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.List;
+
import com.google.common.collect.Lists;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.lang.ArrayUtils;
@@ -30,6 +35,7 @@ import org.slf4j.LoggerFactory;
import org.sonar.api.BatchExtension;
import org.sonar.api.Plugin;
import org.sonar.api.batch.AbstractCoverageExtension;
+import org.sonar.api.batch.CoverageExtension;
import org.sonar.api.batch.SupportedEnvironment;
import org.sonar.api.platform.Environment;
import org.sonar.api.resources.Java;
@@ -42,11 +48,6 @@ import org.sonar.core.plugin.JpaPlugin;
import org.sonar.core.plugin.JpaPluginDao;
import org.sonar.core.plugin.JpaPluginFile;
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.List;
-
public class BatchPluginRepository extends AbstractPluginRepository {
private static final Logger LOG = LoggerFactory.getLogger(BatchPluginRepository.class);
@@ -116,7 +117,7 @@ public class BatchPluginRepository extends AbstractPluginRepository {
ok = false;
LOG.debug("The following extension is ignored: " + extension + " due to execution environment.");
}
- if (ok && isType(extension, AbstractCoverageExtension.class)) {
+ if (ok && isType(extension, CoverageExtension.class)) {
ok = shouldRegisterCoverageExtension(pluginKey, container.getComponent(Project.class), container.getComponent(Configuration.class));
if (!ok) {
LOG.debug("The following extension is ignored: " + extension + ". See the parameter " + AbstractCoverageExtension.PARAM_PLUGIN);
@@ -140,14 +141,17 @@ public class BatchPluginRepository extends AbstractPluginRepository {
}
boolean shouldRegisterCoverageExtension(String pluginKey, Project project, Configuration conf) {
- boolean ok = true;
+ if (!project.getAnalysisType().isDynamic(true)) {
+ // not dynamic and not reuse reports
+ return false;
+ }
if (StringUtils.equals(project.getLanguageKey(), Java.KEY)) {
String[] selectedPluginKeys = conf.getStringArray(AbstractCoverageExtension.PARAM_PLUGIN);
if (ArrayUtils.isEmpty(selectedPluginKeys)) {
selectedPluginKeys = new String[] { AbstractCoverageExtension.DEFAULT_PLUGIN };
}
- ok = ArrayUtils.contains(selectedPluginKeys, pluginKey);
+ return ArrayUtils.contains(selectedPluginKeys, pluginKey);
}
- return ok;
+ return true;
}
}
diff --git a/sonar-batch/src/test/java/org/sonar/batch/bootstrap/BatchPluginRepositoryTest.java b/sonar-batch/src/test/java/org/sonar/batch/bootstrap/BatchPluginRepositoryTest.java
index 5ee91abceaf..f134ad425c6 100644
--- a/sonar-batch/src/test/java/org/sonar/batch/bootstrap/BatchPluginRepositoryTest.java
+++ b/sonar-batch/src/test/java/org/sonar/batch/bootstrap/BatchPluginRepositoryTest.java
@@ -31,8 +31,8 @@ import org.sonar.api.ServerExtension;
import org.sonar.api.batch.AbstractCoverageExtension;
import org.sonar.api.resources.Java;
import org.sonar.api.resources.Project;
+import org.sonar.api.resources.Project.AnalysisType;
import org.sonar.api.utils.IocContainer;
-import org.sonar.batch.bootstrap.BatchPluginRepository;
public class BatchPluginRepositoryTest {
@@ -83,11 +83,11 @@ public class BatchPluginRepositoryTest {
}
private static Project newJavaProject() {
- return new Project("foo").setLanguageKey(Java.KEY);
+ return new Project("foo").setLanguageKey(Java.KEY).setAnalysisType(AnalysisType.DYNAMIC);
}
private static Project newGroovyProject() {
- return new Project("foo").setLanguageKey("grvy");
+ return new Project("foo").setLanguageKey("grvy").setAnalysisType(AnalysisType.DYNAMIC);
}
public static class FakeBatchExtension implements BatchExtension {
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/AbstractCoverageExtension.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/AbstractCoverageExtension.java
index 8eef4cc57a7..2567b0c79ca 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/AbstractCoverageExtension.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/AbstractCoverageExtension.java
@@ -19,7 +19,6 @@
*/
package org.sonar.api.batch;
-import org.sonar.api.BatchExtension;
import org.sonar.api.Plugins;
import org.sonar.api.resources.Project;
@@ -28,8 +27,9 @@ import org.sonar.api.resources.Project;
* It is a pre-implementation for Sensors and Decorators
*
* @since 1.10
+ * @deprecated since 2.6 was superseded by interface {@link CoverageExtension}
*/
-public abstract class AbstractCoverageExtension implements BatchExtension {
+public abstract class AbstractCoverageExtension implements CoverageExtension {
/**
* The plugin key to retrieve the coverage engine to be used
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/CoverageExtension.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/CoverageExtension.java
new file mode 100644
index 00000000000..a7e9f65618c
--- /dev/null
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/CoverageExtension.java
@@ -0,0 +1,36 @@
+/*
+ * Sonar, open source software quality management tool.
+ * Copyright (C) 2008-2011 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * Sonar is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * Sonar is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Sonar; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
+ */
+package org.sonar.api.batch;
+
+import org.sonar.api.BatchExtension;
+
+/**
+ * Marker for extension. Extension which implements this interface would be active, when:
+ * <ul>
+ * <li>corresponding coverage engine activated (see {@link AbstractCoverageExtension#PARAM_PLUGIN}) and language is Java</li>
+ * <li>type of analysis is dynamic or reuse reports</li>
+ * </ul>
+ *
+ * @since 2.6
+ * @TODO Ability to configure coverage engine per language - http://jira.codehaus.org/browse/SONAR-1803
+ */
+public interface CoverageExtension extends BatchExtension {
+
+}