From 5ba8a8f44117579c9fa6dfdc038c8e41d2213d52 Mon Sep 17 00:00:00 2001 From: Maros Marsalek Date: Tue, 12 Apr 2016 10:13:31 +0200 Subject: HONEYCOMB-9: Add configuration and wiring for readers and writers Remove config module Wrap vpp-japi in a config module Change-Id: Iee1e0c653309bd3c1019323ce689dacf3ed995cd Signed-off-by: Maros Marsalek --- v3po/translate-utils/pom.xml | 4 +- .../rev160406/DelegatingReaderRegistryModule.java | 80 +++++++++++++++++++++ .../DelegatingReaderRegistryModuleFactory.java | 13 ++++ .../rev160406/DelegatingWriterRegistryModule.java | 82 ++++++++++++++++++++++ .../DelegatingWriterRegistryModuleFactory.java | 13 ++++ .../src/main/yang/translate-utils.yang | 61 ++++++++++++++++ 6 files changed, 251 insertions(+), 2 deletions(-) create mode 100644 v3po/translate-utils/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/translate/utils/rev160406/DelegatingReaderRegistryModule.java create mode 100644 v3po/translate-utils/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/translate/utils/rev160406/DelegatingReaderRegistryModuleFactory.java create mode 100644 v3po/translate-utils/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/translate/utils/rev160406/DelegatingWriterRegistryModule.java create mode 100644 v3po/translate-utils/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/translate/utils/rev160406/DelegatingWriterRegistryModuleFactory.java create mode 100644 v3po/translate-utils/src/main/yang/translate-utils.yang (limited to 'v3po/translate-utils') diff --git a/v3po/translate-utils/pom.xml b/v3po/translate-utils/pom.xml index d547cb483..346757cc2 100644 --- a/v3po/translate-utils/pom.xml +++ b/v3po/translate-utils/pom.xml @@ -17,9 +17,9 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> io.fd.honeycomb.common - api-parent + impl-parent 1.0.0-SNAPSHOT - ../../common/api-parent + ../../common/impl-parent 4.0.0 diff --git a/v3po/translate-utils/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/translate/utils/rev160406/DelegatingReaderRegistryModule.java b/v3po/translate-utils/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/translate/utils/rev160406/DelegatingReaderRegistryModule.java new file mode 100644 index 000000000..0eb5062d5 --- /dev/null +++ b/v3po/translate-utils/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/translate/utils/rev160406/DelegatingReaderRegistryModule.java @@ -0,0 +1,80 @@ +package org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.translate.utils.rev160406; + +import com.google.common.base.Function; +import com.google.common.base.Optional; +import com.google.common.collect.Lists; +import com.google.common.collect.Multimap; +import io.fd.honeycomb.v3po.translate.read.ReadContext; +import io.fd.honeycomb.v3po.translate.read.ReadFailedException; +import io.fd.honeycomb.v3po.translate.read.Reader; +import io.fd.honeycomb.v3po.translate.read.ReaderRegistry; +import io.fd.honeycomb.v3po.translate.util.read.DelegatingReaderRegistry; +import java.util.List; +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.binding.DataObject; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; + +public class DelegatingReaderRegistryModule extends org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.translate.utils.rev160406.AbstractDelegatingReaderRegistryModule { + public DelegatingReaderRegistryModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { + super(identifier, dependencyResolver); + } + + public DelegatingReaderRegistryModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.translate.utils.rev160406.DelegatingReaderRegistryModule oldModule, java.lang.AutoCloseable oldInstance) { + super(identifier, dependencyResolver, oldModule, oldInstance); + } + + @Override + public void customValidation() { + // add custom validation form module attributes here. + } + + @Override + public java.lang.AutoCloseable createInstance() { + final List> rootReadersDependency = Lists.transform(getRootReadersDependency(), + new Function>() { + + @SuppressWarnings("unchecked") + @Override + public Reader apply(final Reader input) { + return input; + } + }); + return new CloseableReaderRegistry(new DelegatingReaderRegistry(rootReadersDependency)); + } + + // TODO move to translate-utils + private static final class CloseableReaderRegistry implements ReaderRegistry, AutoCloseable { + private final DelegatingReaderRegistry delegatingReaderRegistry; + + CloseableReaderRegistry( + final DelegatingReaderRegistry delegatingReaderRegistry) { + this.delegatingReaderRegistry = delegatingReaderRegistry; + } + + @Override + @Nonnull + public Multimap, ? extends DataObject> readAll( + @Nonnull final ReadContext ctx) throws ReadFailedException { + return delegatingReaderRegistry.readAll(ctx); + } + + @Nonnull + @Override + public Optional read( + @Nonnull final InstanceIdentifier id, + @Nonnull final ReadContext ctx) throws ReadFailedException { + return delegatingReaderRegistry.read(id, ctx); + } + + @Nonnull + @Override + public InstanceIdentifier getManagedDataObjectType() { + return delegatingReaderRegistry.getManagedDataObjectType(); + } + + @Override + public void close() throws Exception { + // NOOP + } + } +} diff --git a/v3po/translate-utils/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/translate/utils/rev160406/DelegatingReaderRegistryModuleFactory.java b/v3po/translate-utils/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/translate/utils/rev160406/DelegatingReaderRegistryModuleFactory.java new file mode 100644 index 000000000..214ab0f90 --- /dev/null +++ b/v3po/translate-utils/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/translate/utils/rev160406/DelegatingReaderRegistryModuleFactory.java @@ -0,0 +1,13 @@ +/* +* Generated file +* +* Generated from: yang module name: translate-utils yang module local name: delegating-reader-registry +* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator +* Generated at: Wed Apr 06 12:32:43 CEST 2016 +* +* Do not modify this file unless it is present under src/main directory +*/ +package org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.translate.utils.rev160406; +public class DelegatingReaderRegistryModuleFactory extends org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.translate.utils.rev160406.AbstractDelegatingReaderRegistryModuleFactory { + +} diff --git a/v3po/translate-utils/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/translate/utils/rev160406/DelegatingWriterRegistryModule.java b/v3po/translate-utils/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/translate/utils/rev160406/DelegatingWriterRegistryModule.java new file mode 100644 index 000000000..a629a294f --- /dev/null +++ b/v3po/translate-utils/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/translate/utils/rev160406/DelegatingWriterRegistryModule.java @@ -0,0 +1,82 @@ +package org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.translate.utils.rev160406; + +import com.google.common.base.Function; +import com.google.common.collect.Lists; +import io.fd.honeycomb.v3po.translate.TranslationException; +import io.fd.honeycomb.v3po.translate.util.write.DelegatingWriterRegistry; +import io.fd.honeycomb.v3po.translate.write.WriteContext; +import io.fd.honeycomb.v3po.translate.write.Writer; +import io.fd.honeycomb.v3po.translate.write.WriterRegistry; +import java.util.List; +import java.util.Map; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import org.opendaylight.yangtools.yang.binding.DataObject; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; + +public class DelegatingWriterRegistryModule extends org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.translate.utils.rev160406.AbstractDelegatingWriterRegistryModule { + public DelegatingWriterRegistryModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { + super(identifier, dependencyResolver); + } + + public DelegatingWriterRegistryModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.translate.utils.rev160406.DelegatingWriterRegistryModule oldModule, java.lang.AutoCloseable oldInstance) { + super(identifier, dependencyResolver, oldModule, oldInstance); + } + + @Override + public void customValidation() { + // add custom validation form module attributes here. + } + + @Override + public java.lang.AutoCloseable createInstance() { + final List> rootReadersDependency = Lists.transform(getRootWritersDependency(), + new Function>() { + + @SuppressWarnings("unchecked") + @Override + public Writer apply(final Writer input) { + return input; + } + }); + return new CloseableWriterRegistry(new DelegatingWriterRegistry(rootReadersDependency)); + } + + // TODO move to translate-utils + private static final class CloseableWriterRegistry implements WriterRegistry, AutoCloseable { + private final DelegatingWriterRegistry delegatingWriterRegistry; + + CloseableWriterRegistry( + final DelegatingWriterRegistry delegatingWriterRegistry) { + this.delegatingWriterRegistry = delegatingWriterRegistry; + } + + @Override + public void update( + @Nonnull final Map, DataObject> nodesBefore, + @Nonnull final Map, DataObject> nodesAfter, + @Nonnull final WriteContext ctx) throws TranslationException { + delegatingWriterRegistry.update(nodesBefore, nodesAfter, ctx); + } + + @Override + public void update( + @Nonnull final InstanceIdentifier id, + @Nullable final DataObject dataBefore, @Nullable final DataObject dataAfter, + @Nonnull final WriteContext ctx) throws TranslationException { + delegatingWriterRegistry.update(id, dataBefore, dataAfter, ctx); + } + + @Nonnull + @Override + public InstanceIdentifier getManagedDataObjectType() { + return delegatingWriterRegistry.getManagedDataObjectType(); + } + + @Override + public void close() throws Exception { + // NOOP + } + } + +} diff --git a/v3po/translate-utils/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/translate/utils/rev160406/DelegatingWriterRegistryModuleFactory.java b/v3po/translate-utils/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/translate/utils/rev160406/DelegatingWriterRegistryModuleFactory.java new file mode 100644 index 000000000..ab3b820d3 --- /dev/null +++ b/v3po/translate-utils/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/translate/utils/rev160406/DelegatingWriterRegistryModuleFactory.java @@ -0,0 +1,13 @@ +/* +* Generated file +* +* Generated from: yang module name: translate-utils yang module local name: delegating-writer-registry +* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator +* Generated at: Wed Apr 06 16:32:08 CEST 2016 +* +* Do not modify this file unless it is present under src/main directory +*/ +package org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.translate.utils.rev160406; +public class DelegatingWriterRegistryModuleFactory extends org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.translate.utils.rev160406.AbstractDelegatingWriterRegistryModuleFactory { + +} diff --git a/v3po/translate-utils/src/main/yang/translate-utils.yang b/v3po/translate-utils/src/main/yang/translate-utils.yang new file mode 100644 index 000000000..093e1725b --- /dev/null +++ b/v3po/translate-utils/src/main/yang/translate-utils.yang @@ -0,0 +1,61 @@ +module translate-utils { + yang-version 1; + namespace "urn:honeycomb:params:xml:ns:yang:translate:utils"; + prefix "tutils"; + + import config { prefix config; revision-date 2013-04-05; } + import translate-api { prefix tapi; revision-date 2016-04-06; } + + description + "This module contains translation layer utilities"; + + revision "2016-04-06" { + description + "Initial revision."; + } + + identity delegating-reader-registry { + base config:module-type; + config:provided-service tapi:honeycomb-reader-registry; + config:java-name-prefix DelegatingReaderRegistry; + } + + augment "/config:modules/config:module/config:configuration" { + case delegating-reader-registry { + when "/config:modules/config:module/config:type = 'delegating-reader-registry'"; + + list root-readers { + uses config:service-ref { + refine type { + mandatory true; + config:required-identity tapi:honeycomb-reader; + } + } + } + + } + } + + identity delegating-writer-registry { + base config:module-type; + config:provided-service tapi:honeycomb-writer-registry; + config:java-name-prefix DelegatingWriterRegistry; + } + + augment "/config:modules/config:module/config:configuration" { + case delegating-writer-registry { + when "/config:modules/config:module/config:type = 'delegating-writer-registry'"; + + list root-writers { + uses config:service-ref { + refine type { + mandatory true; + config:required-identity tapi:honeycomb-writer; + } + } + } + + } + } + +} \ No newline at end of file -- cgit 1.2.3-korg