Merge "Resolve Bug:707 - ConfigPusher should wait for netconf-impl to register JMX...
[controller.git] / opendaylight / netconf / netconf-impl / src / main / java / org / opendaylight / controller / netconf / impl / NetconfServerSessionListenerFactory.java
index 70ddf299fd5dd0d7ff8c091598c0644a88278342..afbf80d1e50af0d1d75749b632dd4d0c9d16bedf 100644 (file)
@@ -8,39 +8,46 @@
 
 package org.opendaylight.controller.netconf.impl;
 
+import org.opendaylight.controller.netconf.api.NetconfOperationRouter;
 import org.opendaylight.controller.netconf.impl.mapping.CapabilityProvider;
 import org.opendaylight.controller.netconf.impl.osgi.NetconfOperationRouterImpl;
-import org.opendaylight.controller.netconf.impl.osgi.NetconfOperationServiceFactoryListener;
-import org.opendaylight.controller.netconf.impl.osgi.NetconfOperationServiceSnapshot;
+import org.opendaylight.controller.netconf.impl.osgi.SessionMonitoringService;
+import org.opendaylight.controller.netconf.mapping.api.NetconfOperationProvider;
+import org.opendaylight.controller.netconf.mapping.api.NetconfOperationServiceSnapshot;
 import org.opendaylight.protocol.framework.SessionListenerFactory;
 
+import static org.opendaylight.controller.netconf.mapping.api.NetconfOperationProvider.NetconfOperationProviderUtil.getNetconfSessionIdForReporting;
+
 public class NetconfServerSessionListenerFactory implements SessionListenerFactory<NetconfServerSessionListener> {
 
-    private final NetconfOperationServiceFactoryListener factoriesListener;
+    private final NetconfOperationProvider netconfOperationProvider;
 
     private final DefaultCommitNotificationProducer commitNotifier;
 
     private final SessionIdProvider idProvider;
 
-    public NetconfServerSessionListenerFactory(NetconfOperationServiceFactoryListener factoriesListener,
-            DefaultCommitNotificationProducer commitNotifier,
-            SessionIdProvider idProvider) {
-        this.factoriesListener = factoriesListener;
+    private final SessionMonitoringService monitor;
+
+    public NetconfServerSessionListenerFactory(NetconfOperationProvider netconfOperationProvider,
+                                               DefaultCommitNotificationProducer commitNotifier,
+                                               SessionIdProvider idProvider, SessionMonitoringService monitor) {
+        this.netconfOperationProvider = netconfOperationProvider;
         this.commitNotifier = commitNotifier;
         this.idProvider = idProvider;
+        this.monitor = monitor;
     }
 
     @Override
     public NetconfServerSessionListener getSessionListener() {
-        NetconfOperationServiceSnapshot netconfOperationServiceSnapshot = factoriesListener.getSnapshot(idProvider
-                .getCurrentSessionId());
+        NetconfOperationServiceSnapshot netconfOperationServiceSnapshot = netconfOperationProvider.getSnapshot(
+                getNetconfSessionIdForReporting(idProvider.getCurrentSessionId()));
 
         CapabilityProvider capabilityProvider = new CapabilityProviderImpl(netconfOperationServiceSnapshot);
 
-        NetconfOperationRouterImpl operationRouter = new NetconfOperationRouterImpl(
+        NetconfOperationRouter operationRouter = NetconfOperationRouterImpl.createOperationRouter(
                 netconfOperationServiceSnapshot, capabilityProvider,
                 commitNotifier);
 
-        return new NetconfServerSessionListener(operationRouter);
+        return new NetconfServerSessionListener(operationRouter, monitor);
     }
 }