]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-926 Preload files in DefaultModuleFileSystem
authorSimon Brandhof <simon.brandhof@gmail.com>
Sun, 23 Feb 2014 21:39:43 +0000 (22:39 +0100)
committerSimon Brandhof <simon.brandhof@gmail.com>
Sun, 23 Feb 2014 21:39:43 +0000 (22:39 +0100)
sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/DefaultModuleFileSystem.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/DefaultFileSystem.java

index 26477df4011bc7dd6d55705e9f27a49670200849..7cbc39852b516276c194d80adb83139c921c0009 100644 (file)
@@ -184,10 +184,7 @@ public class DefaultModuleFileSystem extends DefaultFileSystem implements Module
 
   @Override
   public List<File> files(FileQuery query) {
-    if (!initialized) {
-      LOG.warn("Accessing the filesystem before the Sensor phase is deprecated and will not be supported in the future. Please update your plugin.");
-      indexer.index(this);
-    }
+    doPreloadFiles();
     Collection<FilePredicate> predicates = Lists.newArrayList();
     for (Map.Entry<String, Collection<String>> entry : query.attributes().entrySet()) {
       predicates.add(fromDeprecatedAttribute(entry.getKey(), entry.getValue()));
@@ -195,6 +192,14 @@ public class DefaultModuleFileSystem extends DefaultFileSystem implements Module
     return ImmutableList.copyOf(files(FilePredicates.and(predicates)));
   }
 
+  @Override
+  protected void doPreloadFiles() {
+    if (!initialized) {
+      LOG.warn("Accessing the filesystem before the Sensor phase is deprecated and will not be supported in the future. Please update your plugin.");
+      indexer.index(this);
+    }
+  }
+
   public void resetDirs(File basedir, File buildDir, List<File> sourceDirs, List<File> testDirs, List<File> binaryDirs) {
     if (initialized) {
       throw new SonarException("Module filesystem is already initialized. Modifications of filesystem are only allowed during Initializer phase.");
index e5c201e211c5883858d4fa6c26705e1ab15aba8d..ad5486a21e3d7c542f8e8db240a2750d890d68e1 100644 (file)
@@ -109,6 +109,7 @@ public class DefaultFileSystem implements FileSystem {
 
   @Override
   public InputFile inputFile(FilePredicate predicate) {
+    doPreloadFiles();
     if (predicate instanceof UniqueIndexPredicate) {
       return cache.inputFile((UniqueIndexPredicate) predicate);
     }
@@ -122,16 +123,19 @@ public class DefaultFileSystem implements FileSystem {
 
   @Override
   public Iterable<InputFile> inputFiles(FilePredicate predicate) {
+    doPreloadFiles();
     return Iterables.filter(cache.inputFiles(), new GuavaPredicate(predicate));
   }
 
   @Override
   public boolean hasFiles(FilePredicate predicate) {
+    doPreloadFiles();
     return Iterables.indexOf(cache.inputFiles(), new GuavaPredicate(predicate)) >= 0;
   }
 
   @Override
   public Iterable<File> files(FilePredicate predicate) {
+    doPreloadFiles();
     return Iterables.transform(inputFiles(predicate), new Function<InputFile, File>() {
       @Override
       public File apply(@Nullable InputFile input) {
@@ -149,9 +153,17 @@ public class DefaultFileSystem implements FileSystem {
 
   @Override
   public Set<String> languages() {
+    doPreloadFiles();
     return languages;
   }
 
+  /**
+   * This method is called before each search of files.
+   */
+  protected void doPreloadFiles() {
+
+  }
+
   public static abstract class Cache {
     protected abstract Iterable<InputFile> inputFiles();