X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsamples%2Ftoaster-provider%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fyang%2Fconfig%2Ftoaster_provider%2Fimpl%2FToasterProviderModule.java;h=388c78eaaf6365c77241c17cae04848680882624;hb=81aa5072801e6453306e296b91dba3dbeeaf046d;hp=1029105233311b9310eb68bed09b51c630e4b4be;hpb=4467f6e1ac869d390b607db90cd7e540118a4c6e;p=controller.git diff --git a/opendaylight/md-sal/samples/toaster-provider/src/main/java/org/opendaylight/controller/config/yang/config/toaster_provider/impl/ToasterProviderModule.java b/opendaylight/md-sal/samples/toaster-provider/src/main/java/org/opendaylight/controller/config/yang/config/toaster_provider/impl/ToasterProviderModule.java index 1029105233..388c78eaaf 100644 --- a/opendaylight/md-sal/samples/toaster-provider/src/main/java/org/opendaylight/controller/config/yang/config/toaster_provider/impl/ToasterProviderModule.java +++ b/opendaylight/md-sal/samples/toaster-provider/src/main/java/org/opendaylight/controller/config/yang/config/toaster_provider/impl/ToasterProviderModule.java @@ -9,31 +9,40 @@ */ package org.opendaylight.controller.config.yang.config.toaster_provider.impl; +import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.controller.md.sal.binding.api.DataChangeListener; +import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope; +import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.sal.binding.api.BindingAwareBroker; import org.opendaylight.controller.sample.toaster.provider.OpendaylightToaster; -import org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120.Toaster; -import org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120.ToasterData; import org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120.ToasterService; +import org.opendaylight.yangtools.concepts.ListenerRegistration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * */ -public final class ToasterProviderModule extends org.opendaylight.controller.config.yang.config.toaster_provider.impl.AbstractToasterProviderModule - { +public final class ToasterProviderModule extends + org.opendaylight.controller.config.yang.config.toaster_provider.impl.AbstractToasterProviderModule { + private static final Logger log = LoggerFactory.getLogger(ToasterProviderModule.class); - public ToasterProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { + public ToasterProviderModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, + final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { super(identifier, dependencyResolver); } - public ToasterProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, - ToasterProviderModule oldModule, java.lang.AutoCloseable oldInstance) { + public ToasterProviderModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, + final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, + final ToasterProviderModule oldModule, final java.lang.AutoCloseable oldInstance) { super(identifier, dependencyResolver, oldModule, oldInstance); } @Override protected void customValidation() { - // No need to validate dependencies, since all dependencies have mandatory true flag in yang + // No need to validate dependencies, since all dependencies have + // mandatory true flag in yang // config-subsystem will perform the validation for dependencies } @@ -43,6 +52,14 @@ public final class ToasterProviderModule extends org.opendaylight.controller.con // Register to md-sal opendaylightToaster.setNotificationProvider(getNotificationServiceDependency()); + + DataBroker dataBrokerService = getDataBrokerDependency(); + opendaylightToaster.setDataProvider(dataBrokerService); + + final ListenerRegistration dataChangeListenerRegistration = dataBrokerService + .registerDataChangeListener(LogicalDatastoreType.CONFIGURATION, OpendaylightToaster.TOASTER_IID, + opendaylightToaster, DataChangeScope.SUBTREE); + final BindingAwareBroker.RpcRegistration rpcRegistration = getRpcRegistryDependency() .addRpcImplementation(ToasterService.class, opendaylightToaster); @@ -52,21 +69,20 @@ public final class ToasterProviderModule extends org.opendaylight.controller.con // Wrap toaster as AutoCloseable and close registrations to md-sal at // close() - final class AutoCloseableToaster implements AutoCloseable, ToasterData { + final class AutoCloseableToaster implements AutoCloseable { @Override public void close() throws Exception { + dataChangeListenerRegistration.close(); rpcRegistration.close(); runtimeReg.close(); - } - - @Override - public Toaster getToaster() { - return opendaylightToaster.getToaster(); + opendaylightToaster.close(); + log.info("Toaster provider (instance {}) torn down.", this); } } - return new AutoCloseableToaster(); + AutoCloseable ret = new AutoCloseableToaster(); + log.info("Toaster provider (instance {}) initialized.", ret); + return ret; } - }