]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5069 Make sonar.sources optional
authorJulien HENRY <julien.henry@sonarsource.com>
Fri, 21 Feb 2014 17:32:18 +0000 (18:32 +0100)
committerJulien HENRY <julien.henry@sonarsource.com>
Fri, 21 Feb 2014 17:34:11 +0000 (18:34 +0100)
sonar-batch/src/main/java/org/sonar/batch/scan/DefaultProjectBootstrapper.java
sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/DefaultModuleFileSystem.java
sonar-batch/src/test/java/org/sonar/batch/scan/DefaultProjectBootstrapperTest.java
sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/ModuleFileSystem.java

index 7ac6b45ca2c24ab90f4fd6a28391fa077a485b9f..6bbfc6ed50bba855df847197438b6fdc2ef9f7e0 100644 (file)
@@ -41,8 +41,11 @@ import java.io.File;
 import java.io.FileFilter;
 import java.io.FileInputStream;
 import java.io.IOException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Properties;
 
 /**
  * Class that creates a Sonar project definition based on a set of properties.
@@ -88,7 +91,7 @@ class DefaultProjectBootstrapper implements ProjectBootstrapper {
    * Array of all mandatory properties required for a project without child.
    */
   private static final String[] MANDATORY_PROPERTIES_FOR_SIMPLE_PROJECT = {
-    PROPERTY_PROJECT_BASEDIR, CoreProperties.PROJECT_KEY_PROPERTY, CoreProperties.PROJECT_NAME_PROPERTY, CoreProperties.PROJECT_VERSION_PROPERTY, PROPERTY_SOURCES
+    PROPERTY_PROJECT_BASEDIR, CoreProperties.PROJECT_KEY_PROPERTY, CoreProperties.PROJECT_NAME_PROPERTY, CoreProperties.PROJECT_VERSION_PROPERTY
   };
 
   /**
@@ -152,7 +155,7 @@ class DefaultProjectBootstrapper implements ProjectBootstrapper {
     if (!ComponentKeys.isValidModuleKey(projectKey)) {
       throw new IllegalStateException(String.format(
         "Invalid project key '%s'.\n"
-        + "Allowed characters are alphanumeric, '-', '_', '.' and ':', with at least one non-digit.", projectKey));
+          + "Allowed characters are alphanumeric, '-', '_', '.' and ':', with at least one non-digit.", projectKey));
     }
   }
 
index daac1be3c4e741e139a0bf50ab5312ba9a832596..26477df4011bc7dd6d55705e9f27a49670200849 100644 (file)
@@ -38,8 +38,10 @@ import org.sonar.api.utils.SonarException;
 
 import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
+
 import java.io.File;
 import java.nio.charset.Charset;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -67,7 +69,7 @@ public class DefaultModuleFileSystem extends DefaultFileSystem implements Module
   private boolean initialized;
 
   public DefaultModuleFileSystem(ModuleInputFileCache moduleInputFileCache, Project module, Settings settings, FileIndexer indexer, ModuleFileSystemInitializer initializer,
-                                 ComponentIndexer componentIndexer) {
+    ComponentIndexer componentIndexer) {
     super(moduleInputFileCache);
     this.componentIndexer = componentIndexer;
     this.moduleKey = module.getKey();
@@ -101,6 +103,10 @@ public class DefaultModuleFileSystem extends DefaultFileSystem implements Module
 
   @Override
   public List<File> sourceDirs() {
+    if (sourceDirs.isEmpty()) {
+      // For backward compatibility with File::fromIOFile(file, sourceDirs) we need to always return something
+      return Arrays.asList(baseDir());
+    }
     return sourceDirs;
   }
 
@@ -279,7 +285,6 @@ public class DefaultModuleFileSystem extends DefaultFileSystem implements Module
     throw new IllegalArgumentException("Unsupported file attribute: " + key);
   }
 
-
   @Override
   public boolean equals(Object o) {
     if (this == o) {
index c4a47e9d9da01ef7c36943ca13249ec48082fd66..ab0300248f6598fff4462c0947969a48d191cb50 100644 (file)
@@ -85,10 +85,7 @@ public class DefaultProjectBootstrapperTest {
   }
 
   @Test
-  public void shouldFailIfMissingSourceDirectory() throws IOException {
-    thrown.expect(IllegalStateException.class);
-    thrown.expectMessage("You must define the following mandatory properties for 'com.foo.project': sonar.sources");
-
+  public void shouldNotFailIfMissingSourceDirectory() throws IOException {
     loadProjectDefinition("simple-project-with-missing-source-dir");
   }
 
index 89d721d27ec92f93757b32b8db6ff6bc51eb53e3..65215a0c2ff4edb3eb730db3cd924f4a6d3b636c 100644 (file)
 package org.sonar.api.scan.filesystem;
 
 import org.sonar.api.BatchComponent;
+import org.sonar.api.batch.fs.FileSystem;
+import org.sonar.api.batch.fs.InputFile;
 
 import javax.annotation.CheckForNull;
+
 import java.io.File;
 import java.nio.charset.Charset;
 import java.util.List;
@@ -46,16 +49,15 @@ public interface ModuleFileSystem extends BatchComponent {
   File buildDir();
 
   /**
-   * Source directories. Non-existing directories are excluded.
-   * Example in Maven : ${project.basedir}/src/main/java
-   * @deprecated since 4.2 will always return {@link #baseDir()}
+   * Source directories.
+   * @deprecated since 4.2 use {@link FileSystem#files(org.sonar.api.batch.fs.FilePredicate)} to get all files with type {@link InputFile.Type#MAIN}.
    */
   List<File> sourceDirs();
 
   /**
    * Test directories. Non-existing directories are excluded.
    * Example in Maven : ${project.basedir}/src/test/java
-   * @deprecated since 4.2 will always return {@link #baseDir()}
+   * @deprecated since 4.2 use {@link FileSystem#files(org.sonar.api.batch.fs.FilePredicate)} to get all files with type {@link InputFile.Type#TEST}.
    */
   List<File> testDirs();
 
@@ -67,7 +69,7 @@ public interface ModuleFileSystem extends BatchComponent {
    * <li>Binary directories can be empty</li>
    * <li>Test binary directories are not supported yet.</li>
    * </ul>
-   * @deprecated since 4.2 sonar.binaries should be converted to language specific property
+   * @deprecated since 4.2 sonar.binaries will be converted to java specific property
    */
   List<File> binaryDirs();