From f7df95a76e8ed82dc63761255779291f91551a08 Mon Sep 17 00:00:00 2001 From: Evgeny Mandrikov Date: Wed, 4 Jul 2012 16:26:10 +0600 Subject: [PATCH] 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. --- .../org/sonar/api/batch/AbstractSourceImporter.java | 4 ++-- .../sonar/api/batch/AbstractSourceImporterTest.java | 13 ++++--------- 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() { @@ -163,7 +158,7 @@ public class AbstractSourceImporterTest { private final static Resource TEST_RESOURCE = new JavaFile("Test"); private FakeSourceImporter() { - super(null); + super(Java.INSTANCE); } @Override -- 2.39.5