package org.opendaylight.transportpce.servicehandler.impl;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService;
-import org.opendaylight.controller.md.sal.binding.api.NotificationService;
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.RpcRegistration;
-import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev161014.ServicehandlerService;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.stubpce.rev170426.StubpceListener;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.stubrenderer.rev170426.StubrendererListener;
+import org.opendaylight.mdsal.binding.api.DataBroker;
+import org.opendaylight.mdsal.binding.api.DataTreeChangeListener;
+import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
+import org.opendaylight.mdsal.binding.api.NotificationPublishService;
+import org.opendaylight.mdsal.binding.api.NotificationService;
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
+import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperations;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkmodel.rev201116.TransportpceNetworkmodelListener;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.TransportpcePceListener;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.TransportpceRendererListener;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.OrgOpenroadmServiceService;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceList;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.Services;
import org.opendaylight.yangtools.concepts.ListenerRegistration;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-/*
+/**
* Class to register
* Servicehandler Service and Notification.
* @author Martial Coulibaly ( martial.coulibaly@gfi.com ) on behalf of Orange
*
*/
+@Component
public class ServicehandlerProvider {
private static final Logger LOG = LoggerFactory.getLogger(ServicehandlerProvider.class);
+ private static final InstanceIdentifier<Services> SERVICE = InstanceIdentifier.builder(ServiceList.class)
+ .child(Services.class).build();
- private final DataBroker dataBroker;
- private final RpcProviderRegistry rpcRegistry;
- private final NotificationService notificationService;
- private final NotificationPublishService notificationPublishService;
-
- //private ListenerRegistration<ServicehandlerListener> ServicehandlerlistenerRegistration;
- /* Listener register for StubPce Notification. */
- private ListenerRegistration<StubpceListener> stubPcelistenerRegistration;
- /* Listener register for StubRender Notification. */
- private ListenerRegistration<StubrendererListener> stubRendererlistenerRegistration;
- private RpcRegistration<ServicehandlerService> rpcRegistration;
-
+ private ListenerRegistration<TransportpcePceListener> pcelistenerRegistration;
+ private ListenerRegistration<DataTreeChangeListener<Services>> serviceDataTreeChangeListenerRegistration;
+ private ListenerRegistration<TransportpceRendererListener> rendererlistenerRegistration;
+ private ListenerRegistration<TransportpceNetworkmodelListener> networkmodellistenerRegistration;
+ private ServiceDataStoreOperations serviceDataStoreOperations;
- public ServicehandlerProvider(final DataBroker dataBroker, RpcProviderRegistry rpcProviderRegistry,
- NotificationService notificationService, NotificationPublishService notificationPublishService) {
- this.dataBroker = dataBroker;
- this.rpcRegistry = rpcProviderRegistry;
- this.notificationService = notificationService;
- this.notificationPublishService = notificationPublishService;
- }
-
- /*
- * Method called when the blueprint container is created.
- */
- public void init() {
+ @Activate
+ public ServicehandlerProvider(@Reference final DataBroker dataBroker,
+ @Reference NotificationService notificationService,
+ @Reference ServiceDataStoreOperations serviceDataStoreOperations,
+ @Reference TransportpcePceListener pceListenerImpl,
+ @Reference TransportpceRendererListener rendererListenerImpl,
+ @Reference TransportpceNetworkmodelListener networkModelListenerImpl,
+ @Reference NotificationPublishService notificationPublishService,
+ @Reference OrgOpenroadmServiceService servicehandler,
+ @Reference DataTreeChangeListener<Services> serviceListener) {
+ this.serviceDataStoreOperations = serviceDataStoreOperations;
+ this.serviceDataStoreOperations.initialize();
+ pcelistenerRegistration = notificationService.registerNotificationListener(pceListenerImpl);
+ rendererlistenerRegistration = notificationService.registerNotificationListener(rendererListenerImpl);
+ networkmodellistenerRegistration = notificationService.registerNotificationListener(networkModelListenerImpl);
+ serviceDataTreeChangeListenerRegistration = dataBroker.registerDataTreeChangeListener(
+ DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL, SERVICE), serviceListener);
LOG.info("ServicehandlerProvider Session Initiated");
- final ServicehandlerImpl consumer = new ServicehandlerImpl(dataBroker, rpcRegistry, notificationPublishService);
- stubPcelistenerRegistration = notificationService.registerNotificationListener(consumer);
- stubRendererlistenerRegistration = notificationService.registerNotificationListener(consumer);
- rpcRegistration = rpcRegistry.addRpcImplementation(ServicehandlerService.class, consumer);
+ LOG.info("Transportpce controller started");
}
- /*
+ /**
* Method called when the blueprint container is destroyed.
*/
+ @Deactivate
public void close() {
LOG.info("ServicehandlerProvider Closed");
- stubPcelistenerRegistration.close();
- stubRendererlistenerRegistration.close();
- rpcRegistration.close();
+ pcelistenerRegistration.close();
+ serviceDataTreeChangeListenerRegistration.close();
+ rendererlistenerRegistration.close();
+ networkmodellistenerRegistration.close();
}
-}
+}
\ No newline at end of file