Don't use NotificationListener (Servicehandler) 22/108122/16
authorMatej Sramcik <matej.sramcik@pantheon.tech>
Mon, 2 Oct 2023 11:36:11 +0000 (13:36 +0200)
committerMatej Sramcik <matej.sramcik@pantheon.tech>
Tue, 17 Oct 2023 06:24:54 +0000 (08:24 +0200)
Don't use NotificationListener in classes
used by ServicehandlerProvider.
This is a part of NotificationListener to Listener<?> migration.

JIRA: TRNSPRTPCE-756
Change-Id: I90eba1664c2954e7e3954b7eabb47aa4d6c1843b
Signed-off-by: Matej Sramcik <matej.sramcik@pantheon.tech>
lighty/src/main/java/io/lighty/controllers/tpce/module/TransportPCEImpl.java
servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/impl/ServiceHandlerProvider.java [moved from servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerProvider.java with 64% similarity]
servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/NetworkModelNotificationHandler.java [moved from servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/NetworkModelListenerImpl.java with 95% similarity]
servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/PceNotificationHandler.java [moved from servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/PceListenerImpl.java with 96% similarity]
servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/RendererNotificationHandler.java [moved from servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/RendererListenerImpl.java with 97% similarity]
servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/impl/ServiceHandlerProviderTest.java [moved from servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerProviderTest.java with 50% similarity]
servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/listeners/NetworkModelNotificationHandlerTest.java [moved from servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/listeners/NetworkModelListenerImplTest.java with 98% similarity]

index e629a152c95ca98ae171c7446e4ca47bdea7ce82..d6506204a144d78244b5b3c8a1f9260a38f08c9b 100644 (file)
@@ -58,11 +58,11 @@ import org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOpe
 import org.opendaylight.transportpce.renderer.rpcs.DeviceRendererRPCImpl;
 import org.opendaylight.transportpce.renderer.rpcs.TransportPCEServicePathRPCImpl;
 import org.opendaylight.transportpce.servicehandler.catalog.CatalogDataStoreOperationsImpl;
+import org.opendaylight.transportpce.servicehandler.impl.ServiceHandlerProvider;
 import org.opendaylight.transportpce.servicehandler.impl.ServicehandlerImpl;
-import org.opendaylight.transportpce.servicehandler.impl.ServicehandlerProvider;
-import org.opendaylight.transportpce.servicehandler.listeners.NetworkModelListenerImpl;
-import org.opendaylight.transportpce.servicehandler.listeners.PceListenerImpl;
-import org.opendaylight.transportpce.servicehandler.listeners.RendererListenerImpl;
+import org.opendaylight.transportpce.servicehandler.listeners.NetworkModelNotificationHandler;
+import org.opendaylight.transportpce.servicehandler.listeners.PceNotificationHandler;
+import org.opendaylight.transportpce.servicehandler.listeners.RendererNotificationHandler;
 import org.opendaylight.transportpce.servicehandler.listeners.ServiceListener;
 import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperations;
 import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperationsImpl;
@@ -91,7 +91,7 @@ public class TransportPCEImpl extends AbstractLightyModule implements TransportP
     // network model beans
     private final NetworkModelProvider networkModelProvider;
     // service-handler beans
-    private final ServicehandlerProvider servicehandlerProvider;
+    private final ServiceHandlerProvider servicehandlerProvider;
     // T-api
     private TapiProvider tapiProvider;
     // nbi-notifications beans
@@ -169,24 +169,23 @@ public class TransportPCEImpl extends AbstractLightyModule implements TransportP
                 portMapping);
         ServiceDataStoreOperations serviceDataStoreOperations =
             new ServiceDataStoreOperationsImpl(lgServBDB);
-        RendererListenerImpl rendererListenerImpl =
-            new RendererListenerImpl(pathComputationService, lgServBNPS, networkModelService);
-        PceListenerImpl pceListenerImpl = new PceListenerImpl(
+        RendererNotificationHandler rendererNotificationHandler =
+            new RendererNotificationHandler(pathComputationService, lgServBNPS, networkModelService);
+        PceNotificationHandler pceListenerImpl = new PceNotificationHandler(
                 rendererServiceOperations, pathComputationService,
                 lgServBNPS, serviceDataStoreOperations);
-        NetworkModelListenerImpl networkModelListenerImpl = new NetworkModelListenerImpl(
+        NetworkModelNotificationHandler networkModelNotificationHandler = new NetworkModelNotificationHandler(
                 lgServBNPS, serviceDataStoreOperations);
         ServicehandlerImpl servicehandler = new ServicehandlerImpl(lgServRPS,
                 pathComputationService, rendererServiceOperations,
                 lgServBNPS, pceListenerImpl,
-                rendererListenerImpl, networkModelListenerImpl, serviceDataStoreOperations,
+                rendererNotificationHandler, networkModelNotificationHandler, serviceDataStoreOperations,
                 new CatalogDataStoreOperationsImpl(networkTransaction));
         rpcRegistrations.add(servicehandler.getRegisteredRpc());
-        servicehandlerProvider = new ServicehandlerProvider(
+        servicehandlerProvider = new ServiceHandlerProvider(
                 lgServBDB,
                 lgServNS, serviceDataStoreOperations, pceListenerImpl,
-                rendererListenerImpl, networkModelListenerImpl, lgServBNPS,
-                servicehandler,
+                rendererNotificationHandler, networkModelNotificationHandler,
                 new ServiceListener(
                     servicehandler, serviceDataStoreOperations, lgServBNPS));
         if (activateTapi) {
similarity index 64%
rename from servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerProvider.java
rename to servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/impl/ServiceHandlerProvider.java
index c30e7aba14dbbfd25578c976a52e37a75a49819e..223f62960af27a3496f073dbbe5f46229ed5888e 100644 (file)
@@ -11,17 +11,16 @@ package org.opendaylight.transportpce.servicehandler.impl;
 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.listeners.NetworkModelNotificationHandler;
+import org.opendaylight.transportpce.servicehandler.listeners.PceNotificationHandler;
+import org.opendaylight.transportpce.servicehandler.listeners.RendererNotificationHandler;
 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.concepts.Registration;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Component;
@@ -37,33 +36,34 @@ import org.slf4j.LoggerFactory;
  *
  */
 @Component
-public class ServicehandlerProvider {
+public class ServiceHandlerProvider {
 
-    private static final Logger LOG = LoggerFactory.getLogger(ServicehandlerProvider.class);
+    private static final Logger LOG = LoggerFactory.getLogger(ServiceHandlerProvider.class);
     private static final InstanceIdentifier<Services> SERVICE = InstanceIdentifier.builder(ServiceList.class)
             .child(Services.class).build();
 
-    private ListenerRegistration<TransportpcePceListener> pcelistenerRegistration;
+    private final Registration pcelistenerRegistration;
     private ListenerRegistration<DataTreeChangeListener<Services>> serviceDataTreeChangeListenerRegistration;
-    private ListenerRegistration<TransportpceRendererListener> rendererlistenerRegistration;
-    private ListenerRegistration<TransportpceNetworkmodelListener> networkmodellistenerRegistration;
+    private final Registration rendererlistenerRegistration;
+    private final Registration networkmodellistenerRegistration;
     private ServiceDataStoreOperations serviceDataStoreOperations;
 
     @Activate
-    public ServicehandlerProvider(@Reference final DataBroker dataBroker,
+    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 PceNotificationHandler pceNotificationHandler,
+            @Reference RendererNotificationHandler rendererNotificationHandler,
+            @Reference NetworkModelNotificationHandler networkModelNotificationHandler,
             @Reference DataTreeChangeListener<Services> serviceListener) {
         this.serviceDataStoreOperations = serviceDataStoreOperations;
         this.serviceDataStoreOperations.initialize();
-        pcelistenerRegistration = notificationService.registerNotificationListener(pceListenerImpl);
-        rendererlistenerRegistration = notificationService.registerNotificationListener(rendererListenerImpl);
-        networkmodellistenerRegistration = notificationService.registerNotificationListener(networkModelListenerImpl);
+        pcelistenerRegistration = notificationService
+            .registerCompositeListener(pceNotificationHandler.getCompositeListener());
+        rendererlistenerRegistration = notificationService
+            .registerCompositeListener(rendererNotificationHandler.getCompositeListener());
+        networkmodellistenerRegistration = notificationService
+            .registerCompositeListener(networkModelNotificationHandler.getCompositeListener());
         serviceDataTreeChangeListenerRegistration = dataBroker.registerDataTreeChangeListener(
             DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL, SERVICE), serviceListener);
         LOG.info("ServicehandlerProvider Session Initiated");
@@ -81,4 +81,4 @@ public class ServicehandlerProvider {
         rendererlistenerRegistration.close();
         networkmodellistenerRegistration.close();
     }
-}
\ No newline at end of file
+}
@@ -12,14 +12,15 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
+import java.util.Set;
 import java.util.stream.Collectors;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.mdsal.binding.api.NotificationPublishService;
+import org.opendaylight.mdsal.binding.api.NotificationService.CompositeListener;
 import org.opendaylight.transportpce.common.OperationResult;
 import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperations;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkmodel.rev201116.TopologyUpdateResult;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkmodel.rev201116.TopologyUpdateResultBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkmodel.rev201116.TransportpceNetworkmodelListener;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkmodel.rev201116.topology.update.result.TopologyChanges;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkmodel.rev201116.topology.update.result.TopologyChangesKey;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
@@ -48,21 +49,25 @@ import org.osgi.service.component.annotations.Reference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Component
-public class NetworkModelListenerImpl implements TransportpceNetworkmodelListener, NetworkListener {
+@Component(service = {NetworkModelNotificationHandler.class, NetworkListener.class})
+public class NetworkModelNotificationHandler implements NetworkListener {
 
-    private static final Logger LOG = LoggerFactory.getLogger(NetworkModelListenerImpl.class);
+    private static final Logger LOG = LoggerFactory.getLogger(NetworkModelNotificationHandler.class);
     private ServiceDataStoreOperations serviceDataStoreOperations;
     private TopologyUpdateResult topologyUpdateResult;
 
     @Activate
-    public NetworkModelListenerImpl(@Reference NotificationPublishService notificationPublishService,
+    public NetworkModelNotificationHandler(@Reference NotificationPublishService notificationPublishService,
             @Reference ServiceDataStoreOperations serviceDataStoreOperations) {
         this.serviceDataStoreOperations = serviceDataStoreOperations;
     }
 
-    @Override
-    public void onTopologyUpdateResult(TopologyUpdateResult notification) {
+    public CompositeListener getCompositeListener() {
+        return new CompositeListener(Set.of(
+            new CompositeListener.Component<>(TopologyUpdateResult.class, this::onTopologyUpdateResult)));
+    }
+
+    void onTopologyUpdateResult(TopologyUpdateResult notification) {
         LOG.debug("Topology update notification: {}", notification);
         if (compareTopologyUpdateResult(notification)) {
             LOG.warn("TopologyUpdateResult already wired !");
similarity index 96%
rename from servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/PceListenerImpl.java
rename to servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/PceNotificationHandler.java
index 8aeaa66fdfee16da1ef7f9087e693b4d1aa5d118..dccdb4f894912140c8d54a0a12cd82db4ead70f2 100644 (file)
@@ -8,7 +8,9 @@
 package org.opendaylight.transportpce.servicehandler.listeners;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+import java.util.Set;
 import org.opendaylight.mdsal.binding.api.NotificationPublishService;
+import org.opendaylight.mdsal.binding.api.NotificationService.CompositeListener;
 import org.opendaylight.transportpce.common.OperationResult;
 import org.opendaylight.transportpce.pce.service.PathComputationService;
 import org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOperations;
@@ -18,7 +20,6 @@ import org.opendaylight.transportpce.servicehandler.service.PCEServiceWrapper;
 import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperations;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.PathComputationRequestOutputBuilder;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.ServicePathRpcResult;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.TransportpcePceListener;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.service.path.rpc.result.PathDescription;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.service.path.rpc.result.PathDescriptionBuilder;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInput;
@@ -36,10 +37,10 @@ import org.osgi.service.component.annotations.Reference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Component
-public class PceListenerImpl implements TransportpcePceListener, PceListener {
+@Component(service = {PceNotificationHandler.class, PceListener.class})
+public class PceNotificationHandler implements PceListener {
 
-    private static final Logger LOG = LoggerFactory.getLogger(PceListenerImpl.class);
+    private static final Logger LOG = LoggerFactory.getLogger(PceNotificationHandler.class);
     private static final String PUBLISHER = "PceListener";
 
     private ServicePathRpcResult servicePathRpcResult;
@@ -53,7 +54,7 @@ public class PceListenerImpl implements TransportpcePceListener, PceListener {
     private NotificationPublishService notificationPublishService;
 
     @Activate
-    public PceListenerImpl(
+    public PceNotificationHandler(
             @Reference RendererServiceOperations rendererServiceOperations,
             @Reference PathComputationService pathComputationService,
             @Reference NotificationPublishService notificationPublishService,
@@ -68,8 +69,12 @@ public class PceListenerImpl implements TransportpcePceListener, PceListener {
         this.notificationPublishService = notificationPublishService;
     }
 
-    @Override
-    public void onServicePathRpcResult(ServicePathRpcResult notification) {
+    public CompositeListener getCompositeListener() {
+        return new CompositeListener(Set.of(
+            new CompositeListener.Component<>(ServicePathRpcResult.class, this::onServicePathRpcResult)));
+    }
+
+    private void onServicePathRpcResult(ServicePathRpcResult notification) {
         if (compareServicePathRpcResult(notification)) {
             LOG.warn("ServicePathRpcResult already wired !");
             return;
@@ -11,7 +11,9 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import org.opendaylight.mdsal.binding.api.NotificationPublishService;
+import org.opendaylight.mdsal.binding.api.NotificationService.CompositeListener;
 import org.opendaylight.transportpce.common.OperationResult;
 import org.opendaylight.transportpce.common.StringConstants;
 import org.opendaylight.transportpce.networkmodel.service.NetworkModelService;
@@ -21,7 +23,6 @@ import org.opendaylight.transportpce.servicehandler.service.PCEServiceWrapper;
 import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperations;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.OtnLinkType;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.RendererRpcResultSp;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.TransportpceRendererListener;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.renderer.rpc.result.sp.Link;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev201125.ServiceRpcResultSh;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev201125.ServiceRpcResultShBuilder;
@@ -50,11 +51,11 @@ import org.slf4j.LoggerFactory;
  * @author Martial Coulibaly ( martial.coulibaly@gfi.com ) on behalf of Orange
  *
  */
-@Component
-public class RendererListenerImpl implements TransportpceRendererListener, RendererListener {
+@Component(service = {RendererNotificationHandler.class, RendererListener.class})
+public class RendererNotificationHandler implements RendererListener {
 
     private static final String PUBLISHER = "RendererListener";
-    private static final Logger LOG = LoggerFactory.getLogger(RendererListenerImpl.class);
+    private static final Logger LOG = LoggerFactory.getLogger(RendererNotificationHandler.class);
     private RendererRpcResultSp serviceRpcResultSp;
     private ServiceDataStoreOperations serviceDataStoreOperations;
     private ServiceInput input;
@@ -63,9 +64,8 @@ public class RendererListenerImpl implements TransportpceRendererListener, Rende
     private NotificationPublishService notificationPublishService;
     private final NetworkModelService networkModelService;
 
-
     @Activate
-    public RendererListenerImpl(@Reference PathComputationService pathComputationService,
+    public RendererNotificationHandler(@Reference PathComputationService pathComputationService,
             @Reference NotificationPublishService notificationPublishService,
             @Reference NetworkModelService networkModelService) {
         this.pceServiceWrapper = new PCEServiceWrapper(pathComputationService, notificationPublishService);
@@ -75,8 +75,12 @@ public class RendererListenerImpl implements TransportpceRendererListener, Rende
         this.networkModelService = networkModelService;
     }
 
-    @Override
-    public void onRendererRpcResultSp(RendererRpcResultSp notification) {
+    public CompositeListener getCompositeListener() {
+        return new CompositeListener(Set.of(
+            new CompositeListener.Component<>(RendererRpcResultSp.class, this::onRendererRpcResultSp)));
+    }
+
+    private void onRendererRpcResultSp(RendererRpcResultSp notification) {
         if (compareServiceRpcResultSp(notification)) {
             LOG.warn("ServiceRpcResultSp already wired !");
             return;
similarity index 50%
rename from servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerProviderTest.java
rename to servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/impl/ServiceHandlerProviderTest.java
index 99e6c399e5c83c1d64b9b01e3801fc4e86719eb3..298e18c1ced9cdae73c4e6a85913abcdd92ecb31 100644 (file)
@@ -18,40 +18,46 @@ import org.mockito.junit.jupiter.MockitoExtension;
 import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.DataTreeChangeListener;
 import org.opendaylight.mdsal.binding.api.NotificationPublishService;
+import org.opendaylight.transportpce.networkmodel.service.NetworkModelService;
+import org.opendaylight.transportpce.pce.service.PathComputationService;
+import org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOperations;
+import org.opendaylight.transportpce.servicehandler.listeners.NetworkModelNotificationHandler;
+import org.opendaylight.transportpce.servicehandler.listeners.PceNotificationHandler;
+import org.opendaylight.transportpce.servicehandler.listeners.RendererNotificationHandler;
 import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperations;
 import org.opendaylight.transportpce.test.AbstractTest;
-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.service.list.Services;
 
 @ExtendWith(MockitoExtension.class)
-public class ServicehandlerProviderTest extends AbstractTest {
+public class ServiceHandlerProviderTest extends AbstractTest {
 
     @Mock
-    DataBroker dataBroker;
+    RendererServiceOperations rendererServiceOperations;
     @Mock
-    ServiceDataStoreOperations serviceDataStoreOperations;
+    PathComputationService pathComputationService;
     @Mock
-    TransportpcePceListener pceListenerImpl;
+    NetworkModelService networkModelService;
     @Mock
-    TransportpceRendererListener rendererListenerImpl;
+    DataBroker dataBroker;
     @Mock
-    TransportpceNetworkmodelListener networkModelListenerImpl;
+    ServiceDataStoreOperations serviceDataStoreOperations;
     @Mock
     NotificationPublishService notificationPublishService;
     @Mock
-    OrgOpenroadmServiceService servicehandler;
-    @Mock
     DataTreeChangeListener<Services> serviceListener;
 
+    private final PceNotificationHandler pceNotificationHandler = new PceNotificationHandler(rendererServiceOperations,
+        pathComputationService, notificationPublishService, serviceDataStoreOperations);
+    private final RendererNotificationHandler rendererNotificationHandler = new RendererNotificationHandler(
+        pathComputationService, notificationPublishService, networkModelService);
+    private final NetworkModelNotificationHandler networkModelNotificationHandler = new NetworkModelNotificationHandler(
+        notificationPublishService, serviceDataStoreOperations);
+
     @Test
     void testInitRegisterServiceHandlerToRpcRegistry() {
-        new ServicehandlerProvider(dataBroker, getNotificationService() ,
-                serviceDataStoreOperations, pceListenerImpl, rendererListenerImpl, networkModelListenerImpl,
-                notificationPublishService, servicehandler, serviceListener);
-
+        new ServiceHandlerProvider(dataBroker, getNotificationService(),
+            serviceDataStoreOperations, pceNotificationHandler, rendererNotificationHandler,
+            networkModelNotificationHandler, serviceListener);
         verify(dataBroker, times(1)).registerDataTreeChangeListener(any(), any());
     }
-}
\ No newline at end of file
+}
@@ -60,14 +60,14 @@ import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service
 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePathsKey;
 
 @ExtendWith(MockitoExtension.class)
-public class NetworkModelListenerImplTest {
+public class NetworkModelNotificationHandlerTest {
 
     @Mock
     private NotificationPublishService notificationPublishService;
     @Mock
     private ServiceDataStoreOperations serviceDataStoreOperations;
     private static PathDescription pathDescription;
-    private NetworkModelListenerImpl networkModelListener;
+    private NetworkModelNotificationHandler networkModelListener;
 
     @BeforeEach
     void setUp() {
@@ -75,7 +75,7 @@ public class NetworkModelListenerImplTest {
                 .setAToZDirection(new AToZDirectionBuilder().setAToZ(new HashMap<>(createMapAtoZ())).build())
                 .setZToADirection(new ZToADirectionBuilder().setZToA(new HashMap<>(createMapZtoA())).build())
                 .build();
-        networkModelListener = new NetworkModelListenerImpl(notificationPublishService,
+        networkModelListener = new NetworkModelNotificationHandler(notificationPublishService,
                 serviceDataStoreOperations);
     }
 
@@ -294,7 +294,8 @@ public class NetworkModelListenerImplTest {
 
     @Test
     void testOnTopologyUpdateResultWhenNeverWired() {
-        NetworkModelListenerImpl networkModelListenerMocked = Mockito.mock(NetworkModelListenerImpl.class);
+        NetworkModelNotificationHandler networkModelListenerMocked = Mockito.mock(
+            NetworkModelNotificationHandler.class);
         doCallRealMethod().when(networkModelListenerMocked).onTopologyUpdateResult(any(TopologyUpdateResult.class));
 
         Map<TopologyChangesKey, TopologyChanges> topologyChanges1 = Map.of(
@@ -321,7 +322,8 @@ public class NetworkModelListenerImplTest {
 
     @Test
     void testOnTopologyUpdateResultWhenAlreadyWired() {
-        NetworkModelListenerImpl networkModelListenerMocked = Mockito.mock(NetworkModelListenerImpl.class);
+        NetworkModelNotificationHandler networkModelListenerMocked = Mockito.mock(
+            NetworkModelNotificationHandler.class);
         doCallRealMethod().when(networkModelListenerMocked).onTopologyUpdateResult(any(TopologyUpdateResult.class));
 
         Map<TopologyChangesKey, TopologyChanges> topologyChanges = Map.of(