Fix WebAppInitializer when sshd.listenAddress=off and host key doesn't exist

This is the same fix as 91205ae876 but for
the WebAppInitializer.

Change-Id: Ib9af4a91ea52ee6e894c6cc857a0aaaff642e9b1
This commit is contained in:
Saša Živkov
2013-12-06 14:09:55 +01:00
parent c42cea2c8d
commit 6d35cba22c

View File

@@ -51,6 +51,8 @@ import com.google.gerrit.server.schema.DataSourceType;
import com.google.gerrit.server.schema.DatabaseModule;
import com.google.gerrit.server.schema.SchemaModule;
import com.google.gerrit.server.schema.SchemaVersionCheck;
import com.google.gerrit.server.ssh.NoSshModule;
import com.google.gerrit.server.ssh.SshAddressesModule;
import com.google.gerrit.solr.SolrIndexModule;
import com.google.gerrit.sshd.SshHostKeyModule;
import com.google.gerrit.sshd.SshKeyCacheImpl;
@@ -143,12 +145,16 @@ public class WebAppInitializer extends GuiceServletContextListener
cfgInjector = createCfgInjector();
sysInjector = createSysInjector();
sshInjector = createSshInjector();
if (!sshdOff()) {
sshInjector = createSshInjector();
}
webInjector = createWebInjector();
PluginGuiceEnvironment env = sysInjector.getInstance(PluginGuiceEnvironment.class);
env.setCfgInjector(cfgInjector);
env.setSshInjector(sshInjector);
if (sshInjector != null) {
env.setSshInjector(sshInjector);
}
env.setHttpInjector(webInjector);
// Push the Provider<HttpServletRequest> down into the canonical
@@ -169,11 +175,18 @@ public class WebAppInitializer extends GuiceServletContextListener
manager.add(dbInjector);
manager.add(cfgInjector);
manager.add(sysInjector);
manager.add(sshInjector);
if (sshInjector != null) {
manager.add(sshInjector);
}
manager.add(webInjector);
}
}
private boolean sshdOff() {
Config cfg = cfgInjector.getInstance(Key.get(Config.class, GerritServerConfig.class));
return new SshAddressesModule().getListenAddresses(cfg).isEmpty();
}
private Injector createDbInjector() {
final List<Module> modules = new ArrayList<Module>();
if (sitePath != null) {
@@ -300,8 +313,12 @@ public class WebAppInitializer extends GuiceServletContextListener
modules.add(RequestContextFilter.module());
modules.add(AllRequestFilter.module());
modules.add(sysInjector.getInstance(GitOverHttpModule.class));
modules.add(sshInjector.getInstance(WebModule.class));
modules.add(sshInjector.getInstance(WebSshGlueModule.class));
modules.add(sysInjector.getInstance(WebModule.class));
if (sshInjector != null) {
modules.add(sshInjector.getInstance(WebSshGlueModule.class));
} else {
modules.add(new NoSshModule());
}
modules.add(CacheBasedWebSession.module());
modules.add(HttpContactStoreConnection.module());
modules.add(new HttpPluginModule());