X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-inmemory-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fdom%2Fstore%2Fimpl%2FChangeListenerNotifyTask.java;h=536cfa00813aa5afa2681371b25c2b20cdc45ffc;hp=375376f383aa8beedcc8dccba4d1c37aeec0c788;hb=d0bf270d0493c04ac2e9e4a9f7de56e5b65a4ef2;hpb=80aa861b74f7b0b3574f0962cdb45740ff71946c diff --git a/opendaylight/md-sal/sal-inmemory-datastore/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/ChangeListenerNotifyTask.java b/opendaylight/md-sal/sal-inmemory-datastore/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/ChangeListenerNotifyTask.java index 375376f383..536cfa0081 100644 --- a/opendaylight/md-sal/sal-inmemory-datastore/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/ChangeListenerNotifyTask.java +++ b/opendaylight/md-sal/sal-inmemory-datastore/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/ChangeListenerNotifyTask.java @@ -7,40 +7,48 @@ */ package org.opendaylight.controller.md.sal.dom.store.impl; +import com.google.common.base.Preconditions; + import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; +import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeListener; +import org.opendaylight.yangtools.util.concurrent.NotificationManager; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; class ChangeListenerNotifyTask implements Runnable { - private static final Logger LOG = LoggerFactory.getLogger(ChangeListenerNotifyTask.class); - private final Iterable> listeners; - private final AsyncDataChangeEvent> event; - public ChangeListenerNotifyTask(final Iterable> listeners, - final AsyncDataChangeEvent> event) { - this.listeners = listeners; - this.event = event; + @SuppressWarnings("rawtypes") + private final NotificationManager notificationMgr; + private final AsyncDataChangeEvent> event; + private final DataChangeListenerRegistration listener; + + @SuppressWarnings("rawtypes") + public ChangeListenerNotifyTask(final DataChangeListenerRegistration listener, + final AsyncDataChangeEvent> event, + final NotificationManager notificationMgr) { + this.notificationMgr = Preconditions.checkNotNull(notificationMgr); + this.listener = Preconditions.checkNotNull(listener); + this.event = Preconditions.checkNotNull(event); } @Override public void run() { - - for (DataChangeListenerRegistration listener : listeners) { - try { - listener.getInstance().onDataChanged(event); - } catch (Exception e) { - LOG.error("Unhandled exception during invoking listener {} with event {}", listener, event, e); - } + final AsyncDataChangeListener> l = listener.getInstance(); + if (l == null) { + LOG.trace("Skipping event delivery to unregistered listener {}", l); + return; } + LOG.trace("Listener {} event {}", l, event); + // FIXME: Yo dawg I heard you like queues, so this was queued to be queued + notificationMgr.submitNotification(l, event); } @Override public String toString() { - return "ChangeListenerNotifyTask [listeners=" + listeners + ", event=" + event + "]"; + return "ChangeListenerNotifyTask [listener=" + listener + ", event=" + event + "]"; } - }