aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BootstrapContainer.java
diff options
context:
space:
mode:
authorJulien HENRY <julien.henry@sonarsource.com>2013-02-11 10:33:54 +0100
committerJulien HENRY <julien.henry@sonarsource.com>2013-02-11 10:33:54 +0100
commit72eac35f15c5b373840c1d80e26b39b20b18128b (patch)
treebe9aa541e80b5ce7340100b411ab1b6d5d7814ba /sonar-batch/src/main/java/org/sonar/batch/bootstrap/BootstrapContainer.java
parentf535f02d56515a571430f7ccb77dcd315e525cbd (diff)
downloadsonarqube-72eac35f15c5b373840c1d80e26b39b20b18128b.tar.gz
sonarqube-72eac35f15c5b373840c1d80e26b39b20b18128b.zip
Rename pico *Module classes to *Container to not confuse with Sonar Module concept
Diffstat (limited to 'sonar-batch/src/main/java/org/sonar/batch/bootstrap/BootstrapContainer.java')
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/bootstrap/BootstrapContainer.java104
1 files changed, 104 insertions, 0 deletions
diff --git a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BootstrapContainer.java b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BootstrapContainer.java
new file mode 100644
index 00000000000..1c69c721c79
--- /dev/null
+++ b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BootstrapContainer.java
@@ -0,0 +1,104 @@
+/*
+ * Sonar, open source software quality management tool.
+ * Copyright (C) 2008-2012 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * Sonar is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * Sonar is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Sonar; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
+ */
+package org.sonar.batch.bootstrap;
+
+import org.apache.commons.configuration.PropertiesConfiguration;
+import org.sonar.api.batch.bootstrap.ProjectReactor;
+import org.sonar.api.utils.HttpDownloader;
+import org.sonar.api.utils.UriReader;
+import org.sonar.batch.FakeMavenPluginExecutor;
+import org.sonar.batch.MavenPluginExecutor;
+import org.sonar.core.config.Logback;
+
+import javax.annotation.Nullable;
+
+/**
+ * Level 1 components
+ */
+public class BootstrapContainer extends Container {
+
+ private Object[] boostrapperComponents;
+ private ProjectReactor reactor;
+ private GlobalBatchProperties globalProperties;
+ private String taskCommand;
+
+ /**
+ * @deprecated Use {@link #BootstrapModule(GlobalBatchProperties, String, ProjectReactor, Object...)}
+ */
+ @Deprecated
+ public BootstrapContainer(ProjectReactor reactor, Object... boostrapperComponents) {
+ this(new GlobalBatchProperties(), null, reactor, boostrapperComponents);
+ }
+
+ public BootstrapContainer(GlobalBatchProperties globalProperties, @Nullable String taskCommand, @Nullable ProjectReactor reactor,
+ Object... boostrapperComponents) {
+ this.globalProperties = globalProperties;
+ this.taskCommand = taskCommand;
+ this.reactor = reactor;
+ this.boostrapperComponents = boostrapperComponents;
+ }
+
+ @Override
+ protected void configure() {
+ container.addSingleton(globalProperties);
+ if (reactor != null) {
+ container.addSingleton(reactor);
+ }
+ container.addSingleton(new PropertiesConfiguration());
+ container.addSingleton(BootstrapSettings.class);
+ container.addSingleton(ServerClient.class);
+ container.addSingleton(BatchSettings.class);
+ container.addSingleton(BatchPluginRepository.class);
+ container.addSingleton(ExtensionInstaller.class);
+ container.addSingleton(Logback.class);
+ container.addSingleton(ServerMetadata.class);
+ container.addSingleton(org.sonar.batch.ServerMetadata.class);
+ container.addSingleton(TempDirectories.class);
+ container.addSingleton(HttpDownloader.class);
+ container.addSingleton(UriReader.class);
+ container.addSingleton(PluginDownloader.class);
+ container.addPicoAdapter(new FileCacheProvider());
+ for (Object component : boostrapperComponents) {
+ if (component != null) {
+ container.addSingleton(component);
+ }
+ }
+ if (!isMavenPluginExecutorRegistered()) {
+ container.addSingleton(FakeMavenPluginExecutor.class);
+ }
+ }
+
+ boolean isMavenPluginExecutorRegistered() {
+ if (boostrapperComponents != null) {
+ for (Object component : boostrapperComponents) {
+ if (component instanceof Class && MavenPluginExecutor.class.isAssignableFrom((Class<?>) component)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ @Override
+ protected void doStart() {
+ Container taskBootstrap = installChild(new TaskBootstrapContainer(taskCommand));
+ taskBootstrap.start();
+ }
+}