X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fyang%2Fmd%2Fsal%2Fbinding%2Fimpl%2FNotificationBrokerImplModule.java;h=cabdd15513e3dd89144029c3b515c2d1ed80dbce;hp=58d5a855658879ad242a4dc24c3d465bd82eec52;hb=8da5b805c9a27699677af56a8fd9926bd63909da;hpb=63bf2c78aab8a4a48201877a5b5de255ff3cdf75 diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/config/yang/md/sal/binding/impl/NotificationBrokerImplModule.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/config/yang/md/sal/binding/impl/NotificationBrokerImplModule.java index 58d5a85565..cabdd15513 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/config/yang/md/sal/binding/impl/NotificationBrokerImplModule.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/config/yang/md/sal/binding/impl/NotificationBrokerImplModule.java @@ -7,11 +7,14 @@ */ package org.opendaylight.controller.config.yang.md.sal.binding.impl; -import org.opendaylight.controller.md.sal.binding.compat.HydrogenNotificationBrokerImpl; - import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService; import org.opendaylight.controller.md.sal.binding.api.NotificationService; import org.opendaylight.controller.md.sal.binding.compat.HeliumNotificationProviderServiceAdapter; +import org.opendaylight.controller.md.sal.binding.compat.HeliumNotificationProviderServiceWithInterestListeners; +import org.opendaylight.controller.md.sal.binding.compat.HydrogenNotificationBrokerImpl; +import org.opendaylight.controller.md.sal.binding.impl.BindingDOMNotificationPublishServiceAdapter; +import org.opendaylight.controller.md.sal.dom.api.DOMNotificationPublishService; +import org.opendaylight.controller.md.sal.dom.spi.DOMNotificationSubscriptionListenerRegistry; import org.opendaylight.controller.sal.binding.codegen.impl.SingletonHolder; /** @@ -44,7 +47,7 @@ public final class NotificationBrokerImplModule extends final NotificationService notificationService = getNotificationAdapterDependency(); if(notificationPublishService != null & notificationService != null) { - return new HeliumNotificationProviderServiceAdapter(notificationPublishService, notificationService); + return createHeliumAdapter(notificationPublishService,notificationService); } /* @@ -53,7 +56,19 @@ public final class NotificationBrokerImplModule extends * we will have adapter implementation which will honor Helium * threading model for notifications. */ - return new HydrogenNotificationBrokerImpl(SingletonHolder.getDefaultNotificationExecutor()); } + + private static AutoCloseable createHeliumAdapter(final NotificationPublishService publishService, + final NotificationService listenService) { + if(publishService instanceof BindingDOMNotificationPublishServiceAdapter) { + final BindingDOMNotificationPublishServiceAdapter casted = (BindingDOMNotificationPublishServiceAdapter) publishService; + final DOMNotificationPublishService domService = casted.getDomPublishService(); + if(domService instanceof DOMNotificationSubscriptionListenerRegistry) { + final DOMNotificationSubscriptionListenerRegistry subsRegistry = (DOMNotificationSubscriptionListenerRegistry) domService; + return new HeliumNotificationProviderServiceWithInterestListeners(publishService, listenService, casted.getCodecRegistry(), subsRegistry); + } + } + return new HeliumNotificationProviderServiceAdapter(publishService, listenService); + } }