Fix binding of the DataSourceType for GWT DevMode
Starting Gerrit in GWT DevMode was failing because a binding
for DataSourceType was missing.
Change-Id: I1b018498d2a2286fcb25d7eb9f2ae58d802cb7aa
Signed-off-by: Sasa Zivkov <sasa.zivkov@sap.com>
diff --git a/gerrit-war/src/main/java/com/google/gerrit/httpd/WebAppInitializer.java b/gerrit-war/src/main/java/com/google/gerrit/httpd/WebAppInitializer.java
index 1a556c2..b352d4f 100644
--- a/gerrit-war/src/main/java/com/google/gerrit/httpd/WebAppInitializer.java
+++ b/gerrit-war/src/main/java/com/google/gerrit/httpd/WebAppInitializer.java
@@ -28,6 +28,7 @@
import com.google.gerrit.server.config.AuthConfigModule;
import com.google.gerrit.server.config.CanonicalWebUrlModule;
import com.google.gerrit.server.config.GerritGlobalModule;
+import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.config.GerritServerConfigModule;
import com.google.gerrit.server.config.MasterNodeStartup;
import com.google.gerrit.server.config.SitePath;
@@ -39,7 +40,9 @@
import com.google.gerrit.server.mail.SmtpEmailSender;
import com.google.gerrit.server.plugins.PluginGuiceEnvironment;
import com.google.gerrit.server.plugins.PluginModule;
+import com.google.gerrit.server.schema.DataSourceModule;
import com.google.gerrit.server.schema.DataSourceProvider;
+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;
@@ -56,6 +59,7 @@
import com.google.inject.servlet.GuiceServletContextListener;
import com.google.inject.spi.Message;
+import org.eclipse.jgit.lib.Config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -144,10 +148,35 @@
private Injector createDbInjector() {
final List<Module> modules = new ArrayList<Module>();
if (sitePath != null) {
- modules.add(new LifecycleModule() {
+ Module sitePathModule = new AbstractModule() {
@Override
protected void configure() {
bind(File.class).annotatedWith(SitePath.class).toInstance(sitePath);
+ }
+ };
+ modules.add(sitePathModule);
+
+ Module configModule = new GerritServerConfigModule();
+ modules.add(configModule);
+
+ Injector cfgInjector = Guice.createInjector(sitePathModule, configModule);
+ Config cfg = cfgInjector.getInstance(Key.get(Config.class,
+ GerritServerConfig.class));
+ String dbType = cfg.getString("database", null, "type");
+
+ final DataSourceType dst = Guice.createInjector(new DataSourceModule(),
+ configModule, sitePathModule).getInstance(
+ Key.get(DataSourceType.class, Names.named(dbType.toLowerCase())));
+ modules.add(new AbstractModule() {
+ @Override
+ protected void configure() {
+ bind(DataSourceType.class).toInstance(dst);
+ }
+ });
+
+ modules.add(new LifecycleModule() {
+ @Override
+ protected void configure() {
bind(DataSourceProvider.Context.class).toInstance(
DataSourceProvider.Context.MULTI_USER);
bind(Key.get(DataSource.class, Names.named("ReviewDb"))).toProvider(
@@ -155,7 +184,6 @@
listener().to(DataSourceProvider.class);
}
});
- modules.add(new GerritServerConfigModule());
} else {
modules.add(new LifecycleModule() {