Introduce new GitModule for GitRepositoryManager binding
GitRepositoryManager needs rebinding into the dbInjector and thus
requires a separate Guice module.
Change-Id: I82e892afb7c9b41385e4ecde52e039fc932e6377
diff --git a/README.md b/README.md
index fe8a86f..8db6a07 100644
--- a/README.md
+++ b/README.md
@@ -76,6 +76,7 @@
```
[gerrit]
+ installDbModule = com.googlesource.gerrit.plugins.multisite.GitModule
installModule = com.googlesource.gerrit.plugins.multisite.Module
```
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/GitModule.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/GitModule.java
new file mode 100644
index 0000000..83cc99b
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/GitModule.java
@@ -0,0 +1,35 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.googlesource.gerrit.plugins.multisite;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Inject;
+import com.googlesource.gerrit.plugins.multisite.validation.ValidationModule;
+
+public class GitModule extends AbstractModule {
+ private final Configuration config;
+
+ @Inject
+ public GitModule(Configuration config) {
+ this.config = config;
+ }
+
+ @Override
+ protected void configure() {
+ if (config.getZookeeperConfig().isEnabled()) {
+ install(new ValidationModule(config));
+ }
+ }
+}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/Module.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/Module.java
index d25085a..7117cd6 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/multisite/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/Module.java
@@ -14,11 +14,8 @@
package com.googlesource.gerrit.plugins.multisite;
-import com.google.common.annotations.VisibleForTesting;
import com.google.gerrit.lifecycle.LifecycleModule;
-import com.google.gerrit.server.ModuleImpl;
import com.google.gerrit.server.config.SitePaths;
-import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gson.Gson;
import com.google.inject.CreationException;
import com.google.inject.Inject;
@@ -34,7 +31,6 @@
import com.googlesource.gerrit.plugins.multisite.index.IndexModule;
import com.googlesource.gerrit.plugins.multisite.kafka.consumer.KafkaConsumerModule;
import com.googlesource.gerrit.plugins.multisite.kafka.router.ForwardedEventRouterModule;
-import com.googlesource.gerrit.plugins.multisite.validation.ValidationModule;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
@@ -50,21 +46,10 @@
public class Module extends LifecycleModule {
private static final Logger log = LoggerFactory.getLogger(Module.class);
private final Configuration config;
- private final boolean disableGitRepositoryValidation;
@Inject
public Module(Configuration config) {
- this(config, false);
- }
-
- // TODO: It is not possible to properly test the libModules in Gerrit.
- // Disable the Git repository validation during integration test and then build the necessary
- // support
- // in Gerrit for it.
- @VisibleForTesting
- public Module(Configuration config, boolean disableGitRepositoryValidation) {
this.config = config;
- this.disableGitRepositoryValidation = disableGitRepositoryValidation;
}
@Override
@@ -98,9 +83,6 @@
install(new BrokerForwarderModule(config.kafkaPublisher()));
}
- install(
- new ValidationModule(
- config, disableGitRepositoryValidation || !config.getZookeeperConfig().isEnabled()));
bind(Gson.class)
.annotatedWith(BrokerGson.class)
.toProvider(GsonProvider.class)
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/validation/ValidationModule.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/validation/ValidationModule.java
index ba8816b..61dad57 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/multisite/validation/ValidationModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/validation/ValidationModule.java
@@ -24,11 +24,9 @@
public class ValidationModule extends FactoryModule {
private final Configuration cfg;
- private final boolean disableGitRepositoryValidation;
- public ValidationModule(Configuration cfg, boolean disableGitRepositoryValidation) {
+ public ValidationModule(Configuration cfg) {
this.cfg = cfg;
- this.disableGitRepositoryValidation = disableGitRepositoryValidation;
}
@Override
@@ -38,10 +36,7 @@
factory(MultiSiteRefUpdate.Factory.class);
factory(MultiSiteBatchRefUpdate.Factory.class);
- if (!disableGitRepositoryValidation) {
- bind(GitRepositoryManager.class).to(MultiSiteGitRepositoryManager.class);
- }
-
+ bind(GitRepositoryManager.class).to(MultiSiteGitRepositoryManager.class);
bind(SharedRefEnforcement.class).to(DefaultSharedRefEnforcement.class).in(Scopes.SINGLETON);
install(new ZkValidationModule(cfg));
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/kafka/consumer/EventConsumerIT.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/kafka/consumer/EventConsumerIT.java
index 5d64d28..302e5f2 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/multisite/kafka/consumer/EventConsumerIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/kafka/consumer/EventConsumerIT.java
@@ -96,7 +96,7 @@
this.config =
new FileBasedConfig(
sitePaths.etc_dir.resolve(Configuration.MULTI_SITE_CONFIG).toFile(), FS.DETECTED);
- this.multiSiteModule = new Module(new Configuration(config, new Config()), true);
+ this.multiSiteModule = new Module(new Configuration(config, new Config()));
}
@Override