aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-plugin-api
diff options
context:
space:
mode:
authorEvgeny Mandrikov <mandrikov@gmail.com>2012-07-04 16:26:10 +0600
committerEvgeny Mandrikov <mandrikov@gmail.com>2012-07-04 16:44:03 +0600
commitf7df95a76e8ed82dc63761255779291f91551a08 (patch)
tree98b0611021f81388a6327604ef3e230c54792aaf /sonar-plugin-api
parent5ad5e21f77cb69707c610aef5fc62bdfd2e558c5 (diff)
downloadsonarqube-f7df95a76e8ed82dc63761255779291f91551a08.tar.gz
sonarqube-f7df95a76e8ed82dc63761255779291f91551a08.zip
SONAR-3419 Improve AbstractSourceImporter
This doesn't protect from all possible problems with inheritance from this class, however allows to reduce side effects, if some methods overridden.
Diffstat (limited to 'sonar-plugin-api')
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/batch/AbstractSourceImporter.java4
-rw-r--r--sonar-plugin-api/src/test/java/org/sonar/api/batch/AbstractSourceImporterTest.java13
2 files changed, 6 insertions, 11 deletions
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/AbstractSourceImporter.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/AbstractSourceImporter.java
index bcb4304e887..38b5184ff6c 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/AbstractSourceImporter.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/AbstractSourceImporter.java
@@ -46,9 +46,10 @@ public abstract class AbstractSourceImporter implements Sensor {
}
/**
- * {@inheritDoc}
+ * Generally this method should not be overridden in subclasses, but if it is, then it should be executed anyway (see SONAR-3419).
*/
public boolean shouldExecuteOnProject(Project project) {
+ enabled = isEnabled(project);
return language.equals(project.getLanguage());
}
@@ -56,7 +57,6 @@ public abstract class AbstractSourceImporter implements Sensor {
* {@inheritDoc}
*/
public void analyse(Project project, SensorContext context) {
- enabled = isEnabled(project);
analyse(project.getFileSystem(), context);
onFinished();
}
diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/batch/AbstractSourceImporterTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/batch/AbstractSourceImporterTest.java
index 8bb9f0c57f7..aaabf657d59 100644
--- a/sonar-plugin-api/src/test/java/org/sonar/api/batch/AbstractSourceImporterTest.java
+++ b/sonar-plugin-api/src/test/java/org/sonar/api/batch/AbstractSourceImporterTest.java
@@ -19,21 +19,15 @@
*/
package org.sonar.api.batch;
-import org.mockito.ArgumentMatcher;
-
import com.google.common.collect.Lists;
import org.apache.commons.configuration.MapConfiguration;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.lang.CharEncoding;
import org.junit.Before;
import org.junit.Test;
+import org.mockito.ArgumentMatcher;
import org.mockito.exceptions.verification.junit.ArgumentsAreDifferent;
-import org.sonar.api.resources.Java;
-import org.sonar.api.resources.JavaFile;
-import org.sonar.api.resources.Language;
-import org.sonar.api.resources.Project;
-import org.sonar.api.resources.ProjectFileSystem;
-import org.sonar.api.resources.Resource;
+import org.sonar.api.resources.*;
import java.io.File;
import java.io.UnsupportedEncodingException;
@@ -130,6 +124,7 @@ public class AbstractSourceImporterTest {
when(fileSystem.getSourceFiles((Language) anyObject())).thenReturn(Arrays.asList(
new File("test-resources/org/sonar/api/batch/AbstractSourceImporterTest/encoding/" + testFile)));
+ importer.shouldExecuteOnProject(project);
importer.analyse(project, context);
verify(context).saveSource(eq(FakeSourceImporter.TEST_RESOURCE), argThat(new ArgumentMatcher<String>() {
@@ -163,7 +158,7 @@ public class AbstractSourceImporterTest {
private final static Resource TEST_RESOURCE = new JavaFile("Test");
private FakeSourceImporter() {
- super(null);
+ super(Java.INSTANCE);
}
@Override