]> source.dussan.org Git - sonarqube.git/commitdiff
Fix loading of Gradle global properties
authorsimonbrandhof <simon.brandhof@gmail.com>
Sun, 13 Nov 2011 22:22:34 +0000 (23:22 +0100)
committersimonbrandhof <simon.brandhof@gmail.com>
Sun, 13 Nov 2011 23:52:18 +0000 (00:52 +0100)
sonar-batch/src/main/java/org/sonar/batch/Batch.java
sonar-batch/src/test/java/org/sonar/batch/BatchTest.java
sonar-maven-plugin/src/main/java/org/sonar/maven/SonarMojo.java
sonar-maven3-plugin/src/main/java/org/sonar/maven3/SonarMojo.java

index 70c92d060974967ac68fb2cd8724e2d504432e32..d10b89398f92d046c7dc40252cfdf90afb0cde26 100644 (file)
 package org.sonar.batch;
 
 import org.apache.commons.configuration.Configuration;
+import org.apache.commons.lang.StringUtils;
 import org.sonar.api.batch.bootstrap.ProjectReactor;
 import org.sonar.batch.bootstrap.BootstrapModule;
 import org.sonar.batch.bootstrap.Module;
 import org.sonar.batch.bootstrapper.Reactor;
 
+import java.util.Iterator;
+import java.util.Properties;
+
 public final class Batch {
 
   private Module bootstrapModule;
 
+  public Batch(ProjectReactor reactor, Object... bootstrapperComponents) {
+    this.bootstrapModule = new BootstrapModule(reactor, bootstrapperComponents).init();
+  }
+
   /**
-   * @deprecated since 2.9. Replaced by the factory method. Use by Ant Task 1.1
+   * @deprecated since 2.9 because commons-configuration is replaced by ProjectDefinition#properties. Used by Ant Task 1.1
    */
   @Deprecated
-  public Batch(Configuration configuration, Object... bootstrapperComponents) {
+  public Batch(Configuration configuration, Object... bootstrapperComponents) {//NOSONAR configuration is not needed
+    // because it's already included in ProjectDefinition.
     this.bootstrapModule = new BootstrapModule(extractProjectReactor(bootstrapperComponents), bootstrapperComponents).init();
   }
 
@@ -54,14 +63,28 @@ public final class Batch {
     return deprecatedReactor.toProjectReactor();
   }
 
-  private Batch(ProjectReactor reactor, Object... bootstrapperComponents) {
-    this.bootstrapModule = new BootstrapModule(reactor, bootstrapperComponents).init();
-  }
-
+  /**
+   * Used by Gradle 1.0
+   * @deprecated 
+   */
+  @Deprecated
   public static Batch create(ProjectReactor projectReactor, Configuration configuration, Object... bootstrapperComponents) {
+    projectReactor.getRoot().setProperties(convertToProperties(configuration));
     return new Batch(projectReactor, bootstrapperComponents);
   }
 
+  static Properties convertToProperties(Configuration configuration) {
+    Properties props = new Properties();
+    Iterator keys = configuration.getKeys();
+    while (keys.hasNext()) {
+      String key = (String)keys.next();
+      // Configuration#getString() automatically splits strings by comma separator.
+      String value = StringUtils.join(configuration.getStringArray(key), ",");
+      props.setProperty(key, value);
+    }
+    return props;
+  }
+
   /**
    * for unit tests
    */
index 094bbb71f8725778b3505fe6b150253b6b3f86ea..97495c022dc890b636c46d750904bf7db3e7d9ff 100644 (file)
  */
 package org.sonar.batch;
 
+import org.apache.commons.configuration.PropertiesConfiguration;
 import org.junit.Test;
+import org.sonar.api.batch.bootstrap.ProjectDefinition;
+import org.sonar.api.batch.bootstrap.ProjectReactor;
 import org.sonar.batch.bootstrap.Module;
 
+import java.util.Properties;
+
 import static org.hamcrest.Matchers.is;
 import static org.junit.Assert.assertThat;
 
@@ -59,4 +64,17 @@ public class BatchTest {
     }
   }
 
+  @Test
+  public void shouldConvertCommonsConfigurationToProperties() {
+    PropertiesConfiguration commonsConf = new PropertiesConfiguration();
+    commonsConf.setProperty("foo", "Foo");
+    commonsConf.setProperty("list", "One,Two");
+    assertThat(commonsConf.getString("list"), is("One"));
+    assertThat(commonsConf.getStringArray("list")[0], is("One"));
+    assertThat(commonsConf.getStringArray("list")[1], is("Two"));
+
+    Properties props = Batch.convertToProperties(commonsConf);
+    assertThat(props.getProperty("foo"), is("Foo"));
+    assertThat(props.getProperty("list"), is("One,Two"));
+  }
 }
index 4b15f15076a02e6b4078bd37d304cf7f247801f0..07f13ae115cc5d1758092a770e32f957c384ce9e 100644 (file)
@@ -146,8 +146,7 @@ public final class SonarMojo extends AbstractMojo {
     ProjectDefinition def = MavenProjectConverter.convert(session.getSortedProjects(), project);
     ProjectReactor reactor = new ProjectReactor(def);
 
-    Batch batch = Batch.create(reactor, null,
-        session, getLog(), lifecycleExecutor, pluginManager, artifactFactory,
+    Batch batch = new Batch(reactor, session, getLog(), lifecycleExecutor, pluginManager, artifactFactory,
         localRepository, artifactMetadataSource, artifactCollector, dependencyTreeBuilder,
         projectBuilder, getEnvironmentInformation(), Maven2PluginExecutor.class);
     batch.execute();
index f8de98e99c696e21b143ccd5a5d4ba639f151b22..469043bbf581ae4e83cc74d55af7514053247927 100644 (file)
@@ -140,8 +140,7 @@ public final class SonarMojo extends AbstractMojo {
     ProjectDefinition def = MavenProjectConverter.convert(session.getSortedProjects(), project);
     ProjectReactor reactor = new ProjectReactor(def);
 
-    Batch batch = Batch.create(reactor, null,
-        session, getLog(), lifecycleExecutor, artifactFactory,
+    Batch batch = new Batch(reactor, session, getLog(), lifecycleExecutor, artifactFactory,
         localRepository, artifactMetadataSource, artifactCollector, dependencyTreeBuilder,
         projectBuilder, getEnvironmentInformation(), Maven3PluginExecutor.class);
     batch.execute();