Apply Guice Multibinder to Section injection
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 79baa9d..154978f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java
@@ -19,7 +19,7 @@
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.inject.AbstractModule;
import com.google.inject.assistedinject.FactoryModuleBuilder;
-import com.google.inject.name.Names;
+import com.google.inject.multibindings.Multibinder;
import com.googlesource.gerrit.plugins.rabbitmq.config.PluginProperties;
import com.googlesource.gerrit.plugins.rabbitmq.config.Properties;
@@ -48,11 +48,12 @@
@Override
protected void configure() {
- bind(Section.class).annotatedWith(Names.named("amqp")).to(AMQP.class);
- bind(Section.class).annotatedWith(Names.named("exchange")).to(Exchange.class);
- bind(Section.class).annotatedWith(Names.named("gerrit")).to(Gerrit.class);
- bind(Section.class).annotatedWith(Names.named("message")).to(Message.class);
- bind(Section.class).annotatedWith(Names.named("monitor")).to(Monitor.class);
+ Multibinder<Section> sectionBinder = Multibinder.newSetBinder(binder(), Section.class);
+ sectionBinder.addBinding().to(AMQP.class);
+ sectionBinder.addBinding().to(Exchange.class);
+ sectionBinder.addBinding().to(Gerrit.class);
+ sectionBinder.addBinding().to(Message.class);
+ sectionBinder.addBinding().to(Monitor.class);
install(new FactoryModuleBuilder().implement(Solver.class, SolverImpl.class).build(SolverFactory.class));
install(new FactoryModuleBuilder().implement(Session.class, AMQPSession.class).build(SessionFactory.class));
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/PluginProperties.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/PluginProperties.java
index 3fec0c5..9c978b2 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/PluginProperties.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/PluginProperties.java
@@ -16,7 +16,6 @@
import com.google.inject.assistedinject.Assisted;
import com.google.inject.assistedinject.AssistedInject;
-import com.google.inject.name.Named;
import com.googlesource.gerrit.plugins.rabbitmq.config.section.Gerrit;
import com.googlesource.gerrit.plugins.rabbitmq.config.section.Monitor;
@@ -34,10 +33,8 @@
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collections;
-import java.util.List;
+import java.util.Set;
public class PluginProperties implements Properties {
@@ -45,35 +42,18 @@
private final static int MINIMUM_CONNECTION_MONITOR_INTERVAL = 5000;
- private final List<Section> sections = new ArrayList<>();
+ private final Set<Section> sections;
private final Path propertiesFile;
private AMQProperties amqProperties;
@AssistedInject
- public PluginProperties(
- @Named("amqp") final Section amqp,
- @Named("exchange") final Section exchange,
- @Named("gerrit") final Section gerrit,
- @Named("message") final Section message,
- @Named("monitor") final Section monitor) {
- this(amqp, exchange, gerrit, message, monitor, null);
+ public PluginProperties(Set<Section> sections) {
+ this(sections, null);
}
@AssistedInject
- public PluginProperties(
- @Named("amqp") final Section amqp,
- @Named("exchange") final Section exchange,
- @Named("gerrit") final Section gerrit,
- @Named("message") final Section message,
- @Named("monitor") final Section monitor,
- @Assisted Path propertiesFile) {
- this.sections.addAll(Arrays.asList(
- amqp,
- exchange,
- gerrit,
- message,
- monitor
- ));
+ public PluginProperties(Set<Section> sections, @Assisted Path propertiesFile) {
+ this.sections = sections;
this.propertiesFile = propertiesFile;
}
@@ -141,8 +121,8 @@
}
@Override
- public List<Section> getSections() {
- return Collections.unmodifiableList(sections);
+ public Set<Section> getSections() {
+ return Collections.unmodifiableSet(sections);
}
@Override
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/Properties.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/Properties.java
index a51ad90..d81379b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/Properties.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/Properties.java
@@ -5,7 +5,7 @@
import org.eclipse.jgit.lib.Config;
import java.nio.file.Path;
-import java.util.List;
+import java.util.Set;
public interface Properties extends Cloneable {
public Config toConfig();
@@ -13,7 +13,7 @@
public boolean load(Properties baseProperties);
public Path getPath();
public String getName();
- public List<Section> getSections();
+ public Set<Section> getSections();
public <T extends Section> T getSection(Class<T> clazz);
public AMQProperties getAMQProperties();
}