use of org.opendaylight.controller.md.sal.dom.api.DOMNotificationPublishService in project controller by opendaylight.
the class BindingNotificationPublishAdapterModule method createInstance.
@Override
public AutoCloseable createInstance() {
final BindingToNormalizedNodeCodec codec = getBindingMappingServiceDependency();
final Broker.ProviderSession session = getDomAsyncBrokerDependency().registerProvider(new DummyDOMProvider());
final DOMNotificationPublishService publishService = session.getService(DOMNotificationPublishService.class);
return new BindingDOMNotificationPublishServiceAdapter(codec, publishService);
}
use of org.opendaylight.controller.md.sal.dom.api.DOMNotificationPublishService in project controller by opendaylight.
the class DomBrokerImplModule method createInstance.
@Override
@SuppressWarnings("checkstyle:IllegalCatch")
public AutoCloseable createInstance() {
// The services are provided via blueprint so retrieve then from the OSGi service registry for
// backwards compatibility.
final List<AutoCloseable> closeables = new ArrayList<>();
DOMNotificationService domNotificationService = newTracker(DOMNotificationService.class, closeables).waitForService(WaitingServiceTracker.FIVE_MINUTES);
DOMNotificationPublishService domNotificationPublishService = newTracker(DOMNotificationPublishService.class, closeables).waitForService(WaitingServiceTracker.FIVE_MINUTES);
DOMRpcService domRpcService = newTracker(DOMRpcService.class, closeables).waitForService(WaitingServiceTracker.FIVE_MINUTES);
DOMRpcProviderService domRpcProvider = newTracker(DOMRpcProviderService.class, closeables).waitForService(WaitingServiceTracker.FIVE_MINUTES);
DOMMountPointService mountService = newTracker(DOMMountPointService.class, closeables).waitForService(WaitingServiceTracker.FIVE_MINUTES);
SchemaService globalSchemaService = newTracker(SchemaService.class, closeables).waitForService(WaitingServiceTracker.FIVE_MINUTES);
final DOMDataBroker dataBroker = getAsyncDataBrokerDependency();
final ClassToInstanceMap<BrokerService> services = MutableClassToInstanceMap.create();
services.putInstance(DOMNotificationService.class, domNotificationService);
services.putInstance(DOMNotificationPublishService.class, domNotificationPublishService);
final SchemaService schemaService = getSchemaServiceImpl(globalSchemaService);
services.putInstance(SchemaService.class, schemaService);
services.putInstance(DOMDataBroker.class, dataBroker);
services.putInstance(DOMRpcService.class, domRpcService);
services.putInstance(DOMRpcProviderService.class, domRpcProvider);
services.putInstance(DOMMountPointService.class, mountService);
BrokerImpl broker = new BrokerImpl(domRpcService, domRpcProvider, services);
broker.setDeactivator(() -> {
for (AutoCloseable ac : closeables) {
try {
ac.close();
} catch (Exception e) {
LOG.warn("Exception while closing {}", ac, e);
}
}
});
return broker;
}
use of org.opendaylight.controller.md.sal.dom.api.DOMNotificationPublishService in project controller by opendaylight.
the class NotificationBrokerImplModule method createHeliumAdapter.
private static AutoCloseable createHeliumAdapter(final NotificationPublishService publishService, final NotificationService listenService) {
if (listenService instanceof BindingDOMNotificationServiceAdapter && publishService instanceof BindingDOMNotificationPublishServiceAdapter) {
final BindingDOMNotificationPublishServiceAdapter castedPublish = (BindingDOMNotificationPublishServiceAdapter) publishService;
final BindingDOMNotificationServiceAdapter castedListen = (BindingDOMNotificationServiceAdapter) listenService;
final DOMNotificationPublishService domPublishService = castedPublish.getDomPublishService();
if (domPublishService instanceof DOMNotificationSubscriptionListenerRegistry) {
final DOMNotificationSubscriptionListenerRegistry subsRegistry = (DOMNotificationSubscriptionListenerRegistry) domPublishService;
return new HeliumNotificationProviderServiceWithInterestListeners(castedPublish, castedListen, subsRegistry);
}
}
return new HeliumNotificationProviderServiceAdapter(publishService, listenService);
}
Aggregations