Eliminate LockChangeListener
[netconf.git] / netconf / sal-netconf-connector / src / main / java / org / opendaylight / netconf / sal / connect / netconf / sal / NetconfDeviceSalFacade.java
index 8703b14ed40a85a298015ab3025b214b7870ea99..a5dd2231a22a358018adbacac774a019388a0e79 100644 (file)
@@ -9,27 +9,14 @@ package org.opendaylight.netconf.sal.connect.netconf.sal;
 
 import com.google.common.annotations.VisibleForTesting;
 import org.opendaylight.mdsal.binding.api.DataBroker;
-import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
-import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.dom.api.DOMMountPointService;
 import org.opendaylight.mdsal.dom.api.DOMNotification;
-import org.opendaylight.netconf.dom.api.NetconfDataTreeService;
 import org.opendaylight.netconf.sal.connect.api.RemoteDeviceHandler;
 import org.opendaylight.netconf.sal.connect.api.RemoteDeviceServices;
 import org.opendaylight.netconf.sal.connect.netconf.NetconfDeviceSchema;
 import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCapabilities;
 import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfSessionPreferences;
 import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.optional.rev190614.NetconfNodeFieldsOptional;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.optional.rev190614.netconf.node.fields.optional.Topology;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.optional.rev190614.netconf.node.fields.optional.TopologyKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.optional.rev190614.netconf.node.fields.optional.topology.Node;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.optional.rev190614.netconf.node.fields.optional.topology.NodeKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.optional.rev190614.netconf.node.fields.optional.topology.node.DatastoreLock;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -38,23 +25,19 @@ public final class NetconfDeviceSalFacade implements RemoteDeviceHandler, AutoCl
 
     private final RemoteDeviceId id;
     private final NetconfDeviceSalProvider salProvider;
-    private final DataBroker dataBroker;
-    private final String topologyId;
-
-    private ListenerRegistration<LockChangeListener> listenerRegistration = null;
+    private final boolean lockDatastore;
 
     public NetconfDeviceSalFacade(final RemoteDeviceId id, final DOMMountPointService mountPointService,
-            final DataBroker dataBroker, final String topologyId) {
-        this(id, new NetconfDeviceSalProvider(id, mountPointService, dataBroker), dataBroker, topologyId);
+            final DataBroker dataBroker, final boolean lockDatastore) {
+        this(id, new NetconfDeviceSalProvider(id, mountPointService, dataBroker), lockDatastore);
     }
 
     @VisibleForTesting
     NetconfDeviceSalFacade(final RemoteDeviceId id, final NetconfDeviceSalProvider salProvider,
-            final DataBroker dataBroker, final String topologyId) {
+            final boolean lockDatastore) {
         this.id = id;
         this.salProvider = salProvider;
-        this.dataBroker = dataBroker;
-        this.topologyId = topologyId;
+        this.lockDatastore = lockDatastore;
     }
 
     @Override
@@ -69,9 +52,11 @@ public final class NetconfDeviceSalFacade implements RemoteDeviceHandler, AutoCl
         final var modelContext = mountContext.getEffectiveModelContext();
 
         final var deviceRpc = services.rpcs();
-        final var netconfDataTree = AbstractNetconfDataTreeService.of(id, mountContext, deviceRpc, sessionPreferences);
-        final var netconfDataBroker = new NetconfDeviceDataBroker(id, mountContext, deviceRpc, sessionPreferences);
-        registerLockListener(netconfDataBroker, netconfDataTree);
+
+        final var netconfDataTree = AbstractNetconfDataTreeService.of(id, mountContext, deviceRpc, sessionPreferences,
+            lockDatastore);
+        final var netconfDataBroker = new NetconfDeviceDataBroker(id, mountContext, deviceRpc, sessionPreferences,
+            lockDatastore);
 
         salProvider.getMountInstance().onTopologyDeviceConnected(modelContext, services, netconfDataBroker,
             netconfDataTree);
@@ -82,20 +67,17 @@ public final class NetconfDeviceSalFacade implements RemoteDeviceHandler, AutoCl
     public synchronized void onDeviceDisconnected() {
         salProvider.getTopologyDatastoreAdapter().updateDeviceData(false, NetconfDeviceCapabilities.empty());
         salProvider.getMountInstance().onTopologyDeviceDisconnected();
-        closeLockChangeListener();
     }
 
     @Override
     public synchronized void onDeviceFailed(final Throwable throwable) {
         salProvider.getTopologyDatastoreAdapter().setDeviceAsFailed(throwable);
         salProvider.getMountInstance().onTopologyDeviceDisconnected();
-        closeLockChangeListener();
     }
 
     @Override
     public synchronized void close() {
         closeGracefully(salProvider);
-        closeLockChangeListener();
     }
 
     @SuppressWarnings("checkstyle:IllegalCatch")
@@ -108,21 +90,4 @@ public final class NetconfDeviceSalFacade implements RemoteDeviceHandler, AutoCl
             }
         }
     }
-
-    private void closeLockChangeListener() {
-        if (listenerRegistration != null) {
-            listenerRegistration.close();
-        }
-    }
-
-    private void registerLockListener(final NetconfDeviceDataBroker netconfDeviceDataBroker,
-                                      final NetconfDataTreeService netconfDataTreeService) {
-        listenerRegistration = dataBroker.registerDataTreeChangeListener(
-            DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION,
-                InstanceIdentifier.create(NetconfNodeFieldsOptional.class)
-                .child(Topology.class, new TopologyKey(new TopologyId(topologyId)))
-                .child(Node.class, new NodeKey(new NodeId(id.getName())))
-                .child(DatastoreLock.class)),
-            new LockChangeListener(netconfDeviceDataBroker, netconfDataTreeService));
-    }
 }