X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-dom-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fdom%2Fbroker%2Fimpl%2FNotificationRouterImpl.java;h=1e93202007cbd9a800e485a9ba0343298160c035;hp=763407f23a671476c7f47a9c8f7e3d63e0b2b128;hb=c46e223995956f1f759c551163c212947c1e2fb7;hpb=702ba6faa3f7f2f6bd8ae02b3bc1abc06aea1c26 diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/impl/NotificationRouterImpl.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/impl/NotificationRouterImpl.java index 763407f23a..1e93202007 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/impl/NotificationRouterImpl.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/impl/NotificationRouterImpl.java @@ -8,50 +8,37 @@ package org.opendaylight.controller.sal.dom.broker.impl; import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import org.opendaylight.controller.sal.core.api.BrokerService; -import org.opendaylight.controller.sal.core.api.Broker.ConsumerSession; -import org.opendaylight.controller.sal.core.api.Broker.ProviderSession; -import org.opendaylight.controller.sal.core.api.Consumer.ConsumerFunctionality; -import org.opendaylight.controller.sal.core.api.Provider.ProviderFunctionality; import org.opendaylight.controller.sal.core.api.notify.NotificationListener; -import org.opendaylight.controller.sal.core.api.notify.NotificationPublishService; -import org.opendaylight.controller.sal.core.api.notify.NotificationService; -import org.opendaylight.controller.sal.core.spi.BrokerModule; import org.opendaylight.controller.sal.dom.broker.spi.NotificationRouter; -import org.opendaylight.yangtools.concepts.AbstractObjectRegistration; -import org.opendaylight.yangtools.concepts.Registration; +import org.opendaylight.yangtools.concepts.AbstractListenerRegistration; +import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.common.collect.HashMultimap; -import com.google.common.collect.ImmutableSet; import com.google.common.collect.Multimap; import com.google.common.collect.Multimaps; public class NotificationRouterImpl implements NotificationRouter { private static Logger log = LoggerFactory.getLogger(NotificationRouterImpl.class); - private Multimap> listeners = Multimaps.synchronizedSetMultimap(HashMultimap.>create()); + private final Multimap listeners = Multimaps.synchronizedSetMultimap(HashMultimap.create()); +// private Registration defaultListener; private void sendNotification(CompositeNode notification) { - QName type = notification.getNodeType(); - Collection> toNotify = listeners.get(type); + final QName type = notification.getNodeType(); + final Collection toNotify = listeners.get(type); log.trace("Publishing notification " + type); - if (toNotify == null) { - // No listeners were registered - returns. + if ((toNotify == null) || toNotify.isEmpty()) { + log.debug("No listener registered for handling of notification {}", type); return; } - for (Registration listener : toNotify) { + for (MyListenerRegistration listener : toNotify) { try { // FIXME: ensure that notification is immutable listener.getInstance().onNotification(notification); @@ -59,7 +46,6 @@ public class NotificationRouterImpl implements NotificationRouter { log.error("Uncaught exception in NotificationListener", e); } } - } @Override @@ -68,16 +54,17 @@ public class NotificationRouterImpl implements NotificationRouter { } @Override - public Registration addNotificationListener(QName notification, NotificationListener listener) { - ListenerRegistration ret = new ListenerRegistration(notification, listener); + public ListenerRegistration addNotificationListener(QName notification, NotificationListener listener) { + MyListenerRegistration ret = new MyListenerRegistration(notification, listener); + listeners.put(notification, ret); return ret; } - private class ListenerRegistration extends AbstractObjectRegistration { + private class MyListenerRegistration extends AbstractListenerRegistration { final QName type; - public ListenerRegistration(QName type, NotificationListener instance) { + public MyListenerRegistration(QName type, NotificationListener instance) { super(instance); this.type = type; }