]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-3419 Improve AbstractSourceImporter
authorEvgeny Mandrikov <mandrikov@gmail.com>
Wed, 4 Jul 2012 10:26:10 +0000 (16:26 +0600)
committerEvgeny Mandrikov <mandrikov@gmail.com>
Wed, 4 Jul 2012 10:44:03 +0000 (16:44 +0600)
This doesn't protect from all possible problems with inheritance from
this class, however allows to reduce side effects, if some methods
overridden.

sonar-plugin-api/src/main/java/org/sonar/api/batch/AbstractSourceImporter.java
sonar-plugin-api/src/test/java/org/sonar/api/batch/AbstractSourceImporterTest.java

index bcb4304e887af832bdb2d802b50b95ddf3a19309..38b5184ff6cdf90636b8b92e113f0b04f1898ad3 100644 (file)
@@ -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();
   }
index 8bb9f0c57f796ffd8a4df53b56dc83a123f96ff2..aaabf657d595380c68fb369a21cf720d8e0c4bba 100644 (file)
  */
 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