Merge "Inject InitStep members again before calling postRun." into stable-2.9
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/BaseInit.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/BaseInit.java
index 76adadc..5a8cb4f 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/BaseInit.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/BaseInit.java
@@ -70,6 +70,8 @@
protected final PluginsDistribution pluginsDistribution;
private final List<String> pluginsToInstall;
+ private Injector sysInjector;
+
protected BaseInit(PluginsDistribution pluginsDistribution,
List<String> pluginsToInstall) {
this.standalone = true;
@@ -111,7 +113,7 @@
run = createSiteRun(init);
run.upgradeSchema();
- init.initializer.postRun();
+ init.initializer.postRun(createSysInjector(init));
} catch (Exception failure) {
if (init.flags.deleteOnFailure) {
recursiveDelete(getSitePath());
@@ -316,15 +318,18 @@
}
private Injector createSysInjector(final SiteInit init) {
- final List<Module> modules = new ArrayList<Module>();
- modules.add(new AbstractModule() {
- @Override
- protected void configure() {
- bind(ConsoleUI.class).toInstance(init.ui);
- bind(InitFlags.class).toInstance(init.flags);
- }
- });
- return createDbInjector(SINGLE_USER).createChildInjector(modules);
+ if (sysInjector == null) {
+ final List<Module> modules = new ArrayList<Module>();
+ modules.add(new AbstractModule() {
+ @Override
+ protected void configure() {
+ bind(ConsoleUI.class).toInstance(init.ui);
+ bind(InitFlags.class).toInstance(init.flags);
+ }
+ });
+ sysInjector = createDbInjector(SINGLE_USER).createChildInjector(modules);
+ }
+ return sysInjector;
}
private static void recursiveDelete(File path) {
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitPlugins.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitPlugins.java
index e5f6f56..add5c8d 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitPlugins.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitPlugins.java
@@ -19,6 +19,7 @@
import com.google.gerrit.server.config.SitePaths;
import com.google.gerrit.server.plugins.PluginLoader;
import com.google.inject.Inject;
+import com.google.inject.Injector;
import com.google.inject.Singleton;
import java.io.File;
@@ -80,6 +81,8 @@
private final InitPluginStepsLoader pluginLoader;
private final PluginsDistribution pluginsDistribution;
+ private Injector postRunInjector;
+
@Inject
InitPlugins(final ConsoleUI ui, final SitePaths site,
InitFlags initFlags, InitPluginStepsLoader pluginLoader,
@@ -104,6 +107,11 @@
postInitPlugins();
}
+ @Inject(optional = true)
+ void setPostRunInjector(Injector injector) {
+ postRunInjector = injector;
+ }
+
private void installPlugins() throws IOException {
List<PluginData> plugins = listPlugins(site, pluginsDistribution);
for (PluginData plugin : plugins) {
@@ -155,6 +163,7 @@
private void postInitPlugins() throws Exception {
for (InitStep initStep : pluginLoader.getInitSteps()) {
+ postRunInjector.injectMembers(initStep);
initStep.postRun();
}
}
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/SitePathInitializer.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/SitePathInitializer.java
index 82daf81..d980c09 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/SitePathInitializer.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/SitePathInitializer.java
@@ -108,12 +108,13 @@
}
}
- public void postRun() throws Exception {
+ public void postRun(Injector injector) throws Exception {
for (InitStep step : steps) {
if (step instanceof InitPlugins
&& flags.skipPlugins) {
continue;
}
+ injector.injectMembers(step);
step.postRun();
}
}