Remove AbstractNetconfTopology.createSalFacade() 32/103632/2
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 8 Dec 2022 18:13:13 +0000 (19:13 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Fri, 9 Dec 2022 13:33:25 +0000 (14:33 +0100)
This method is implemented twice in the same manner -- remove it
and clean up its sole user based on the newly-found type safety,
as we are always routing to a NetconfDeviceSalFacade.

Change-Id: Ia7173652241fc6f6f4cfbcea914f9611eebbe869
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/CallHomeTopology.java
netconf/netconf-topology-impl/src/main/java/org/opendaylight/netconf/topology/impl/NetconfTopologyImpl.java
netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/spi/AbstractNetconfTopology.java

index a13d756cd45d8ebb999273114eae784be19294e1..60523edf1fcfb05ff4a7e601bae4711b8ce743c7 100644 (file)
@@ -15,11 +15,8 @@ import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.dom.api.DOMMountPointService;
 import org.opendaylight.netconf.client.NetconfClientDispatcher;
 import org.opendaylight.netconf.sal.connect.api.DeviceActionFactory;
-import org.opendaylight.netconf.sal.connect.api.RemoteDeviceHandler;
 import org.opendaylight.netconf.sal.connect.api.SchemaResourceManager;
-import org.opendaylight.netconf.sal.connect.netconf.sal.NetconfDeviceSalFacade;
 import org.opendaylight.netconf.sal.connect.netconf.schema.mapping.BaseNetconfSchemas;
-import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId;
 
 public class CallHomeTopology extends BaseCallHomeTopology {
 
@@ -45,9 +42,4 @@ public class CallHomeTopology extends BaseCallHomeTopology {
                 keepaliveExecutor, processingExecutor, schemaRepositoryProvider,
                 dataBroker, mountPointService, encryptionService, deviceActionFactory, baseSchemas);
     }
-
-    @Override
-    protected RemoteDeviceHandler createSalFacade(final RemoteDeviceId id) {
-        return new NetconfDeviceSalFacade(id, mountPointService, dataBroker, topologyId);
-    }
 }
index 999d67c4304a75909e6374f71933358ae1847cdc..d982b338b3a349448c1a3e240d5b07811ac371c2 100644 (file)
@@ -25,12 +25,9 @@ import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.dom.api.DOMMountPointService;
 import org.opendaylight.netconf.client.NetconfClientDispatcher;
 import org.opendaylight.netconf.sal.connect.api.DeviceActionFactory;
-import org.opendaylight.netconf.sal.connect.api.RemoteDeviceHandler;
 import org.opendaylight.netconf.sal.connect.api.SchemaResourceManager;
-import org.opendaylight.netconf.sal.connect.netconf.sal.NetconfDeviceSalFacade;
 import org.opendaylight.netconf.sal.connect.netconf.schema.mapping.BaseNetconfSchemas;
 import org.opendaylight.netconf.sal.connect.util.NetconfTopologyRPCProvider;
-import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId;
 import org.opendaylight.netconf.topology.spi.AbstractNetconfTopology;
 import org.opendaylight.netconf.topology.spi.NetconfConnectorDTO;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeTopologyService;
@@ -100,11 +97,6 @@ public class NetconfTopologyImpl extends AbstractNetconfTopology
         }
     }
 
-    @Override
-    protected RemoteDeviceHandler createSalFacade(final RemoteDeviceId id) {
-        return new NetconfDeviceSalFacade(id, mountPointService, dataBroker, topologyId);
-    }
-
     /**
      * Invoked by blueprint.
      */
index 974b0be68efd826bb54d7267c25428e2a284ddd2..ccd258ccf0aca0d9aab6a637f7e7f4d5362a18b1 100644 (file)
@@ -53,6 +53,7 @@ import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCommun
 import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfSessionPreferences;
 import org.opendaylight.netconf.sal.connect.netconf.listener.UserPreferences;
 import org.opendaylight.netconf.sal.connect.netconf.sal.KeepaliveSalFacade;
+import org.opendaylight.netconf.sal.connect.netconf.sal.NetconfDeviceSalFacade;
 import org.opendaylight.netconf.sal.connect.netconf.sal.NetconfKeystoreAdapter;
 import org.opendaylight.netconf.sal.connect.netconf.schema.YangLibrarySchemaYangSourceProvider;
 import org.opendaylight.netconf.sal.connect.netconf.schema.mapping.BaseNetconfSchemas;
@@ -222,20 +223,26 @@ public abstract class AbstractNetconfTopology implements NetconfTopology {
 
     protected NetconfConnectorDTO createDeviceCommunicator(final NodeId nodeId, final NetconfNode node,
             final NetconfNodeAugmentedOptional nodeOptional) {
-        final RemoteDeviceId remoteDeviceId = NetconfNodeUtils.toRemoteDeviceId(nodeId, node);
-
+        final var deviceId = NetconfNodeUtils.toRemoteDeviceId(nodeId, node);
         final long keepaliveDelay = node.requireKeepaliveDelay().toJava();
-        RemoteDeviceHandler salFacade = createSalFacade(remoteDeviceId);
+
+        final var deviceSalFacade = new NetconfDeviceSalFacade(deviceId, mountPointService, dataBroker, topologyId);
+        // The facade we are going it present to NetconfDevice
+        RemoteDeviceHandler salFacade;
+        final KeepaliveSalFacade keepAliveFacade;
         if (keepaliveDelay > 0) {
             LOG.info("Adding keepalive facade, for device {}", nodeId);
-            salFacade = new KeepaliveSalFacade(remoteDeviceId, salFacade, keepaliveExecutor.getExecutor(),
-                    keepaliveDelay, node.requireDefaultRequestTimeoutMillis().toJava());
+            salFacade = keepAliveFacade = new KeepaliveSalFacade(deviceId, deviceSalFacade,
+                keepaliveExecutor.getExecutor(), keepaliveDelay, node.requireDefaultRequestTimeoutMillis().toJava());
+        } else {
+            salFacade = deviceSalFacade;
+            keepAliveFacade = null;
         }
 
         final RemoteDevice<NetconfDeviceCommunicator> device;
         final List<SchemaSourceRegistration<?>> yanglibRegistrations;
         if (node.requireSchemaless()) {
-            device = new SchemalessNetconfDevice(baseSchemas, remoteDeviceId, salFacade);
+            device = new SchemalessNetconfDevice(baseSchemas, deviceId, salFacade);
             yanglibRegistrations = List.of();
         } else {
             final boolean reconnectOnChangedSchema = node.requireReconnectOnChangedSchema();
@@ -245,7 +252,7 @@ public abstract class AbstractNetconfTopology implements NetconfTopology {
                 .setReconnectOnSchemasChange(reconnectOnChangedSchema)
                 .setSchemaResourcesDTO(resources)
                 .setGlobalProcessingExecutor(processingExecutor)
-                .setId(remoteDeviceId)
+                .setId(deviceId)
                 .setSalFacade(salFacade)
                 .setNode(node)
                 .setEventExecutor(eventExecutor)
@@ -253,22 +260,22 @@ public abstract class AbstractNetconfTopology implements NetconfTopology {
                 .setDeviceActionFactory(deviceActionFactory)
                 .setBaseSchemas(baseSchemas)
                 .build();
-            yanglibRegistrations = registerDeviceSchemaSources(remoteDeviceId, node, resources);
+            yanglibRegistrations = registerDeviceSchemaSources(deviceId, node, resources);
         }
 
         final Optional<UserPreferences> userCapabilities = getUserCapabilities(node);
         final int rpcMessageLimit = node.requireConcurrentRpcLimit().toJava();
         if (rpcMessageLimit < 1) {
-            LOG.info("Concurrent rpc limit is smaller than 1, no limit will be enforced for device {}", remoteDeviceId);
+            LOG.info("Concurrent rpc limit is smaller than 1, no limit will be enforced for device {}", deviceId);
         }
 
         final NetconfDeviceCommunicator netconfDeviceCommunicator =
-             userCapabilities.isPresent() ? new NetconfDeviceCommunicator(remoteDeviceId, device,
+             userCapabilities.isPresent() ? new NetconfDeviceCommunicator(deviceId, device,
                      userCapabilities.get(), rpcMessageLimit)
-            : new NetconfDeviceCommunicator(remoteDeviceId, device, rpcMessageLimit);
+            : new NetconfDeviceCommunicator(deviceId, device, rpcMessageLimit);
 
-        if (salFacade instanceof KeepaliveSalFacade) {
-            ((KeepaliveSalFacade)salFacade).setListener(netconfDeviceCommunicator);
+        if (keepAliveFacade != null) {
+            keepAliveFacade.setListener(netconfDeviceCommunicator);
         }
 
         return new NetconfConnectorDTO(netconfDeviceCommunicator, salFacade, yanglibRegistrations);
@@ -383,8 +390,6 @@ public abstract class AbstractNetconfTopology implements NetconfTopology {
         throw new IllegalStateException("Unsupported credential type: " + credentials.getClass());
     }
 
-    protected abstract RemoteDeviceHandler createSalFacade(RemoteDeviceId id);
-
     private static Optional<UserPreferences> getUserCapabilities(final NetconfNode node) {
         // if none of yang-module-capabilities or non-module-capabilities is specified
         // just return absent