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();
}
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
*/
*/
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;
}
}
+ @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"));
+ }
}
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();
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();