X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsamples%2Ftoaster-provider%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsample%2Ftoaster%2Fprovider%2FOpendaylightToaster.java;fp=opendaylight%2Fmd-sal%2Fsamples%2Ftoaster-provider%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsample%2Ftoaster%2Fprovider%2FOpendaylightToaster.java;h=e39ac2baff36836df38392ea2d0f4ee659c50bf0;hp=332d375282ce99e3fac16b5a3e10616886a56bab;hb=9a59ae2514d26b86222a9c71d62c78313544c1b1;hpb=f09d37ec4cce2411eaae11dde18f9ce2d2f14118 diff --git a/opendaylight/md-sal/samples/toaster-provider/src/main/java/org/opendaylight/controller/sample/toaster/provider/OpendaylightToaster.java b/opendaylight/md-sal/samples/toaster-provider/src/main/java/org/opendaylight/controller/sample/toaster/provider/OpendaylightToaster.java index 332d375282..e39ac2baff 100644 --- a/opendaylight/md-sal/samples/toaster-provider/src/main/java/org/opendaylight/controller/sample/toaster/provider/OpendaylightToaster.java +++ b/opendaylight/md-sal/samples/toaster-provider/src/main/java/org/opendaylight/controller/sample/toaster/provider/OpendaylightToaster.java @@ -7,6 +7,14 @@ */ package org.opendaylight.controller.sample.toaster.provider; +import com.google.common.base.Function; +import com.google.common.base.Optional; +import com.google.common.util.concurrent.AsyncFunction; +import com.google.common.util.concurrent.FutureCallback; +import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.SettableFuture; +import java.util.Collection; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; @@ -14,13 +22,13 @@ import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicReference; - import org.opendaylight.controller.config.yang.config.toaster_provider.impl.ToasterProviderRuntimeMXBean; import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataChangeListener; +import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; +import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener; +import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.api.data.OptimisticLockFailedException; import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; @@ -35,25 +43,16 @@ import org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120 import org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120.ToasterRestocked; import org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120.ToasterRestockedBuilder; import org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120.ToasterService; -import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcError; -import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.opendaylight.yangtools.yang.common.RpcError.ErrorType; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.base.Function; -import com.google.common.base.Optional; -import com.google.common.util.concurrent.AsyncFunction; -import com.google.common.util.concurrent.FutureCallback; -import com.google.common.util.concurrent.Futures; -import com.google.common.util.concurrent.ListenableFuture; -import com.google.common.util.concurrent.SettableFuture; - public class OpendaylightToaster implements ToasterService, ToasterProviderRuntimeMXBean, - DataChangeListener, AutoCloseable { + DataTreeChangeListener, AutoCloseable { private static final Logger LOG = LoggerFactory.getLogger(OpendaylightToaster.class); @@ -128,21 +127,26 @@ public class OpendaylightToaster implements ToasterService, ToasterProviderRunti } /** - * Implemented from the DataChangeListener interface. + * Implemented from the DataTreeChangeListener interface. */ @Override - public void onDataChanged( final AsyncDataChangeEvent, DataObject> change ) { - DataObject dataObject = change.getUpdatedSubtree(); - if( dataObject instanceof Toaster ) - { - Toaster toaster = (Toaster) dataObject; - Long darkness = toaster.getDarknessFactor(); - if( darkness != null ) - { - darknessFactor.set( darkness ); + public void onDataTreeChanged(Collection> changes) { + for(DataTreeModification change: changes) { + DataObjectModification rootNode = change.getRootNode(); + if(rootNode.getModificationType() == DataObjectModification.ModificationType.WRITE) { + Toaster oldToaster = rootNode.getDataBefore(); + Toaster newToaster = rootNode.getDataAfter(); + LOG.info("onDataTreeChanged - Toaster config with path {} was added or replaced: old Toaster: {}, new Toaster: {}", + change.getRootPath().getRootIdentifier(), oldToaster, newToaster); + + Long darkness = newToaster.getDarknessFactor(); + if(darkness != null) { + darknessFactor.set(darkness); + } + } else if(rootNode.getModificationType() == DataObjectModification.ModificationType.DELETE) { + LOG.info("onDataTreeChanged - Toaster config with path {} was deleted: old Toaster: {}", + change.getRootPath().getRootIdentifier(), rootNode.getDataBefore()); } - - LOG.info("onDataChanged - new Toaster config: {}", toaster); } }