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(); }