Move RemoteDeviceId
[netconf.git] / netconf / netconf-topology-singleton / src / main / java / org / opendaylight / netconf / topology / singleton / impl / SlaveSalFacade.java
index b7d44cb03cc71876ae46696d299f86166b70ee20..9f4ae7ac8424a225952f09cd12ad047ca34b8b7f 100644 (file)
@@ -12,58 +12,52 @@ import akka.actor.ActorSystem;
 import akka.util.Timeout;
 import java.util.concurrent.atomic.AtomicBoolean;
 import org.opendaylight.mdsal.dom.api.DOMMountPointService;
-import org.opendaylight.netconf.dom.api.NetconfDataTreeService;
+import org.opendaylight.netconf.sal.connect.api.RemoteDeviceId;
 import org.opendaylight.netconf.sal.connect.api.RemoteDeviceServices;
-import org.opendaylight.netconf.sal.connect.netconf.sal.NetconfDeviceSalProvider;
-import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId;
+import org.opendaylight.netconf.sal.connect.netconf.sal.NetconfDeviceMount;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class SlaveSalFacade {
-
     private static final Logger LOG = LoggerFactory.getLogger(SlaveSalFacade.class);
 
+    private final AtomicBoolean registered = new AtomicBoolean(false);
     private final RemoteDeviceId id;
-    private final NetconfDeviceSalProvider salProvider;
+    private final NetconfDeviceMount mount;
     private final ActorSystem actorSystem;
     private final Timeout actorResponseWaitTime;
-    private final AtomicBoolean registered = new AtomicBoolean(false);
 
     public SlaveSalFacade(final RemoteDeviceId id,
                           final ActorSystem actorSystem,
                           final Timeout actorResponseWaitTime,
                           final DOMMountPointService mountPointService) {
         this.id = id;
-        salProvider = new NetconfDeviceSalProvider(id, mountPointService);
         this.actorSystem = actorSystem;
         this.actorResponseWaitTime = actorResponseWaitTime;
+        mount = new NetconfDeviceMount(id, mountPointService, NetconfDeviceMount.defaultTopologyMountPath(id));
     }
 
     public void registerSlaveMountPoint(final EffectiveModelContext remoteSchemaContext, final ActorRef masterActorRef,
             final RemoteDeviceServices services) {
         if (!registered.compareAndSet(false, true)) {
+            LOG.info("Mount point {} already registered, skipping registation", id);
             return;
         }
 
-        final ProxyDOMDataBroker netconfDeviceDataBroker = new ProxyDOMDataBroker(id, masterActorRef,
+        final var netconfDeviceDataBroker = new ProxyDOMDataBroker(id, masterActorRef,
             actorSystem.dispatcher(), actorResponseWaitTime);
-        final NetconfDataTreeService proxyNetconfService = new ProxyNetconfDataTreeService(id, masterActorRef,
+        final var proxyNetconfService = new ProxyNetconfDataTreeService(id, masterActorRef,
             actorSystem.dispatcher(), actorResponseWaitTime);
 
-        salProvider.getMountInstance().onTopologyDeviceConnected(remoteSchemaContext, services, netconfDeviceDataBroker,
-            proxyNetconfService);
-
+        mount.onDeviceConnected(remoteSchemaContext, services, netconfDeviceDataBroker, proxyNetconfService);
         LOG.info("{}: Slave mount point registered.", id);
     }
 
     public void close() {
-        if (!registered.compareAndSet(true, false)) {
-            return;
+        if (registered.compareAndSet(true, false)) {
+            mount.onDeviceDisconnected();
+            LOG.info("{}: Slave mount point unregistered.", id);
         }
-
-        salProvider.getMountInstance().onTopologyDeviceDisconnected();
-
-        LOG.info("{}: Slave mount point unregistered.", id);
     }
 }