diff options
author | Julien HENRY <julien.henry@sonarsource.com> | 2014-01-28 14:56:23 +0100 |
---|---|---|
committer | Julien HENRY <julien.henry@sonarsource.com> | 2014-01-28 15:01:17 +0100 |
commit | c4fe0d20e52a7239d85238697c917b4047bde0d0 (patch) | |
tree | dd2dd8a68a0d41d77d7f9d2233211c2070ed2ace /sonar-batch/src | |
parent | c5543baa89fc7ccfb9b4bd56a40d8d8419c5e6a1 (diff) | |
download | sonarqube-c4fe0d20e52a7239d85238697c917b4047bde0d0.tar.gz sonarqube-c4fe0d20e52a7239d85238697c917b4047bde0d0.zip |
SONAR-926 The filesystem lock is relaxed to still allow Initializers to call inputFiles
Diffstat (limited to 'sonar-batch/src')
-rw-r--r-- | sonar-batch/src/main/java/org/sonar/batch/phases/PhaseExecutor.java | 6 | ||||
-rw-r--r-- | sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/DefaultModuleFileSystem.java | 9 |
2 files changed, 11 insertions, 4 deletions
diff --git a/sonar-batch/src/main/java/org/sonar/batch/phases/PhaseExecutor.java b/sonar-batch/src/main/java/org/sonar/batch/phases/PhaseExecutor.java index 60aa6c8b8ea..1c0149c1b99 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/phases/PhaseExecutor.java +++ b/sonar-batch/src/main/java/org/sonar/batch/phases/PhaseExecutor.java @@ -111,6 +111,9 @@ public final class PhaseExecutor { executeInitializersPhase(); + // Index and lock the filesystem + fs.index(); + persistenceManager.setDelayedMode(true); if (phases.isEnabled(Phases.Phase.SENSOR)) { @@ -170,9 +173,8 @@ public final class PhaseExecutor { private void executeMavenPhase(Project module) { if (phases.isEnabled(Phases.Phase.MAVEN)) { eventBus.fireEvent(new MavenPhaseEvent(true)); - mavenPhaseExecutor.execute(module); - fs.index(); mavenPluginsConfigurator.execute(module); + mavenPhaseExecutor.execute(module); eventBus.fireEvent(new MavenPhaseEvent(false)); } } diff --git a/sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/DefaultModuleFileSystem.java b/sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/DefaultModuleFileSystem.java index 7d624ed8b89..f4e10352caf 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/DefaultModuleFileSystem.java +++ b/sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/DefaultModuleFileSystem.java @@ -23,6 +23,8 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.CoreProperties; import org.sonar.api.config.Settings; import org.sonar.api.resources.Project; @@ -47,6 +49,8 @@ import java.util.List; */ public class DefaultModuleFileSystem implements ModuleFileSystem { + private static final Logger LOG = LoggerFactory.getLogger(DefaultModuleFileSystem.class); + private final String moduleKey; private final FileIndex index; private final Settings settings; @@ -165,7 +169,8 @@ public class DefaultModuleFileSystem implements ModuleFileSystem { @Override public Iterable<InputFile> inputFiles(FileQuery query) { if (!initialized) { - throw new SonarException("Module filesystem is not initialized"); + LOG.warn("Accessing the filesystem before the Sensor phase is deprecated and will not be supported in the future. Please update your plugin."); + index.index(this); } List<InputFile> result = Lists.newArrayList(); FileQueryFilter filter = new FileQueryFilter(analysisMode, query); @@ -200,7 +205,7 @@ public class DefaultModuleFileSystem implements ModuleFileSystem { public void resetDirs(File basedir, File buildDir, List<File> sourceDirs, List<File> testDirs, List<File> binaryDirs) { if (initialized) { - throw new SonarException("Module filesystem is locked"); + throw new SonarException("Module filesystem is already initialized. Modification of the filesystem are only allowed during Initializer phase."); } Preconditions.checkNotNull(basedir, "Basedir can't be null"); this.baseDir = basedir; |