From 04c868333214c0e5bfce3926c43a4302615f2ac5 Mon Sep 17 00:00:00 2001 From: Maros Marsalek Date: Wed, 26 Oct 2016 12:18:11 +0200 Subject: Honeycomb-73 Extensible initializers framework Change-Id: Ib23453d4040d59a512686315995a5cf9e532cefc Signed-off-by: Maros Marsalek --- .../data/ConfigAndOperationalPipelineModule.java | 6 +++- .../distro/data/oper/ReadableDTDelegProvider.java | 7 ++-- .../data/oper/ReaderRegistryBuilderProvider.java | 40 ++++++++++++++++++++++ .../distro/data/oper/ReaderRegistryProvider.java | 19 ++++------ 4 files changed, 55 insertions(+), 17 deletions(-) create mode 100644 infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/oper/ReaderRegistryBuilderProvider.java (limited to 'infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data') diff --git a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/ConfigAndOperationalPipelineModule.java b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/ConfigAndOperationalPipelineModule.java index bac1b3ce0..488f0b390 100644 --- a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/ConfigAndOperationalPipelineModule.java +++ b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/ConfigAndOperationalPipelineModule.java @@ -24,9 +24,11 @@ import io.fd.honeycomb.data.ReadableDataManager; import io.fd.honeycomb.data.init.DataTreeInitializer; import io.fd.honeycomb.infra.distro.data.config.WriterRegistryProvider; import io.fd.honeycomb.infra.distro.data.oper.ReadableDTDelegProvider; +import io.fd.honeycomb.infra.distro.data.oper.ReaderRegistryBuilderProvider; import io.fd.honeycomb.infra.distro.data.oper.ReaderRegistryProvider; import io.fd.honeycomb.infra.distro.initializer.PersistedFileInitializerProvider; import io.fd.honeycomb.translate.read.registry.ModifiableReaderRegistryBuilder; +import io.fd.honeycomb.translate.read.registry.ReaderRegistry; import io.fd.honeycomb.translate.write.registry.ModifiableWriterRegistryBuilder; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; @@ -43,8 +45,10 @@ public class ConfigAndOperationalPipelineModule extends PrivateModule { // Expose registries for plugin reader/writer factories bind(ModifiableWriterRegistryBuilder.class).toProvider(WriterRegistryProvider.class).in(Singleton.class); expose(ModifiableWriterRegistryBuilder.class); - bind(ModifiableReaderRegistryBuilder.class).toProvider(ReaderRegistryProvider.class).in(Singleton.class); + bind(ModifiableReaderRegistryBuilder.class).toProvider(ReaderRegistryBuilderProvider.class).in(Singleton.class); expose(ModifiableReaderRegistryBuilder.class); + bind(ReaderRegistry.class).toProvider(ReaderRegistryProvider.class).in(Singleton.class); + expose(ReaderRegistry.class); // Non persisting data tree for config bind(DataTree.class).annotatedWith(Names.named(HONEYCOMB_CONFIG_NONPERSIST)) diff --git a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/oper/ReadableDTDelegProvider.java b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/oper/ReadableDTDelegProvider.java index 13e82e85f..caac736b5 100644 --- a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/oper/ReadableDTDelegProvider.java +++ b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/oper/ReadableDTDelegProvider.java @@ -22,8 +22,7 @@ import io.fd.honeycomb.data.ReadableDataManager; import io.fd.honeycomb.data.impl.ReadableDataTreeDelegator; import io.fd.honeycomb.infra.distro.ProviderTrait; import io.fd.honeycomb.infra.distro.data.context.ContextPipelineModule; -import io.fd.honeycomb.translate.read.registry.ModifiableReaderRegistryBuilder; -import io.fd.honeycomb.translate.read.registry.ReaderRegistryBuilder; +import io.fd.honeycomb.translate.read.registry.ReaderRegistry; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec; import org.opendaylight.controller.sal.core.api.model.SchemaService; @@ -35,7 +34,7 @@ public final class ReadableDTDelegProvider extends ProviderTrait { + + @Inject(optional = true) + private Set readerFactories = new HashSet<>(); + + @Override + protected CompositeReaderRegistryBuilder create() { + final CompositeReaderRegistryBuilder builder = new CompositeReaderRegistryBuilder(); + readerFactories.stream() + .forEach(it -> it.init(builder)); + return builder; + } + +} diff --git a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/oper/ReaderRegistryProvider.java b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/oper/ReaderRegistryProvider.java index ef09e0e97..8370da8bb 100644 --- a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/oper/ReaderRegistryProvider.java +++ b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/oper/ReaderRegistryProvider.java @@ -18,23 +18,18 @@ package io.fd.honeycomb.infra.distro.data.oper; import com.google.inject.Inject; import io.fd.honeycomb.infra.distro.ProviderTrait; -import io.fd.honeycomb.translate.read.ReaderFactory; import io.fd.honeycomb.translate.read.registry.ModifiableReaderRegistryBuilder; -import io.fd.honeycomb.translate.util.read.registry.CompositeReaderRegistryBuilder; -import java.util.HashSet; -import java.util.Set; +import io.fd.honeycomb.translate.read.registry.ReaderRegistry; +import io.fd.honeycomb.translate.read.registry.ReaderRegistryBuilder; -public final class ReaderRegistryProvider extends ProviderTrait { +public final class ReaderRegistryProvider extends ProviderTrait { - @Inject(optional = true) - private Set readerFactories = new HashSet<>(); + @Inject + private ModifiableReaderRegistryBuilder readerRegistryBuilder; @Override - protected CompositeReaderRegistryBuilder create() { - final CompositeReaderRegistryBuilder builder = new CompositeReaderRegistryBuilder(); - readerFactories.stream() - .forEach(it -> it.init(builder)); - return builder; + protected ReaderRegistry create() { + return ((ReaderRegistryBuilder) readerRegistryBuilder).build(); } } -- cgit 1.2.3-korg