Apply multibinding to Solver
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Manager.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Manager.java
index e6a943d..76f7815 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Manager.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Manager.java
@@ -26,7 +26,6 @@
import com.googlesource.gerrit.plugins.rabbitmq.message.Publisher;
import com.googlesource.gerrit.plugins.rabbitmq.message.PublisherFactory;
import com.googlesource.gerrit.plugins.rabbitmq.solver.Solver;
-import com.googlesource.gerrit.plugins.rabbitmq.solver.SolverFactory;
import com.googlesource.gerrit.plugins.rabbitmq.worker.ChangeWorker;
import com.googlesource.gerrit.plugins.rabbitmq.worker.ChangeWorkerFactory;
import com.googlesource.gerrit.plugins.rabbitmq.worker.DefaultChangeWorker;
@@ -41,6 +40,7 @@
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
+import java.util.Set;
@Singleton
public class Manager implements LifecycleListener {
@@ -56,7 +56,7 @@
private final ChangeWorker userChangeWorker;
private final PublisherFactory publisherFactory;
private final PropertiesFactory propFactory;
- private final SolverFactory solverFactory;
+ private final Set<Solver> solvers;
private final List<Publisher> publisherList = new ArrayList<>();
@Inject
@@ -67,20 +67,21 @@
final ChangeWorkerFactory changeWorkerFactory,
final PublisherFactory publisherFactory,
final PropertiesFactory propFactory,
- final SolverFactory solverFactory) {
+ final Set<Solver> solvers) {
this.pluginName = pluginName;
this.pluginDataDir = pluginData.toPath();
this.defaultChangeWorker = defaultChangeWorker;
this.userChangeWorker = changeWorkerFactory.create();
this.publisherFactory = publisherFactory;
this.propFactory = propFactory;
- this.solverFactory = solverFactory;
+ this.solvers = solvers;
}
@Override
public void start() {
- Solver solver = solverFactory.create();
- solver.solve();
+ for (Solver solver : solvers) {
+ solver.solve();
+ }
List<Properties> propList = load();
for (Properties properties : propList) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java
index e1f2b1e..4d67525 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java
@@ -35,9 +35,8 @@
import com.googlesource.gerrit.plugins.rabbitmq.message.PublisherFactory;
import com.googlesource.gerrit.plugins.rabbitmq.session.SessionFactory;
import com.googlesource.gerrit.plugins.rabbitmq.session.SessionFactoryProvider;
-import com.googlesource.gerrit.plugins.rabbitmq.solver.SolverImpl;
import com.googlesource.gerrit.plugins.rabbitmq.solver.Solver;
-import com.googlesource.gerrit.plugins.rabbitmq.solver.SolverFactory;
+import com.googlesource.gerrit.plugins.rabbitmq.solver.version.V1;
import com.googlesource.gerrit.plugins.rabbitmq.worker.ChangeWorker;
import com.googlesource.gerrit.plugins.rabbitmq.worker.ChangeWorkerFactory;
import com.googlesource.gerrit.plugins.rabbitmq.worker.DefaultChangeWorker;
@@ -56,7 +55,9 @@
sectionBinder.addBinding().to(Message.class);
sectionBinder.addBinding().to(Monitor.class);
- install(new FactoryModuleBuilder().implement(Solver.class, SolverImpl.class).build(SolverFactory.class));
+ Multibinder<Solver> solverBinder = Multibinder.newSetBinder(binder(), Solver.class);
+ solverBinder.addBinding().to(V1.class);
+
install(new FactoryModuleBuilder().implement(Publisher.class, MessagePublisher.class).build(PublisherFactory.class));
install(new FactoryModuleBuilder().implement(Properties.class, PluginProperties.class).build(PropertiesFactory.class));
install(new FactoryModuleBuilder().implement(ChangeWorker.class, UserChangeWorker.class).build(ChangeWorkerFactory.class));
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/solver/SolverFactory.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/solver/SolverFactory.java
deleted file mode 100644
index e34f98d..0000000
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/solver/SolverFactory.java
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (C) 2015 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
-package com.googlesource.gerrit.plugins.rabbitmq.solver;
-
-public interface SolverFactory {
- public Solver create();
-}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/solver/SolverImpl.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/solver/SolverImpl.java
deleted file mode 100644
index b7de500..0000000
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/solver/SolverImpl.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (C) 2015 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.rabbitmq.solver;
-
-import com.google.gerrit.extensions.annotations.PluginData;
-import com.google.gerrit.extensions.annotations.PluginName;
-import com.google.gerrit.server.config.SitePaths;
-import com.google.inject.Inject;
-
-import com.googlesource.gerrit.plugins.rabbitmq.solver.version.V1;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-
-public class SolverImpl implements Solver {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(SolverImpl.class);
-
- private final Solver solver;
-
- @Inject
- public SolverImpl(
- @PluginName final String pluginName,
- @PluginData final File pluginData,
- final SitePaths sites
- ) {
- this.solver = new V1(pluginName, pluginData, sites);
- }
-
- public void solve() {
- solver.solve();
- }
-}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/solver/version/V1.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/solver/version/V1.java
index c0f0c89..1504564 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/solver/version/V1.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/solver/version/V1.java
@@ -15,6 +15,8 @@
import static com.googlesource.gerrit.plugins.rabbitmq.Manager.FILE_EXT;
import static com.googlesource.gerrit.plugins.rabbitmq.Manager.SITE_DIR;
+import com.google.gerrit.extensions.annotations.PluginData;
+import com.google.gerrit.extensions.annotations.PluginName;
import com.google.gerrit.server.config.SitePaths;
import com.google.inject.Inject;
@@ -38,8 +40,8 @@
@Inject
public V1(
- final String pluginName,
- final File pluginData,
+ @PluginName final String pluginName,
+ @PluginData final File pluginData,
final SitePaths sites
) {
this.pluginName = pluginName;