From 8ee723df4a40d2634a521c82efa5f878aa28d4aa Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 8 Dec 2022 19:13:13 +0100 Subject: [PATCH] Remove AbstractNetconfTopology.createSalFacade() 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 --- .../callhome/mount/CallHomeTopology.java | 8 ----- .../topology/impl/NetconfTopologyImpl.java | 8 ----- .../topology/spi/AbstractNetconfTopology.java | 35 +++++++++++-------- 3 files changed, 20 insertions(+), 31 deletions(-) diff --git a/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/CallHomeTopology.java b/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/CallHomeTopology.java index a13d756cd4..60523edf1f 100644 --- a/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/CallHomeTopology.java +++ b/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/CallHomeTopology.java @@ -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); - } } diff --git a/netconf/netconf-topology-impl/src/main/java/org/opendaylight/netconf/topology/impl/NetconfTopologyImpl.java b/netconf/netconf-topology-impl/src/main/java/org/opendaylight/netconf/topology/impl/NetconfTopologyImpl.java index 999d67c430..d982b338b3 100644 --- a/netconf/netconf-topology-impl/src/main/java/org/opendaylight/netconf/topology/impl/NetconfTopologyImpl.java +++ b/netconf/netconf-topology-impl/src/main/java/org/opendaylight/netconf/topology/impl/NetconfTopologyImpl.java @@ -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. */ diff --git a/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/spi/AbstractNetconfTopology.java b/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/spi/AbstractNetconfTopology.java index 974b0be68e..ccd258ccf0 100644 --- a/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/spi/AbstractNetconfTopology.java +++ b/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/spi/AbstractNetconfTopology.java @@ -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 device; final List> 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 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 getUserCapabilities(final NetconfNode node) { // if none of yang-module-capabilities or non-module-capabilities is specified // just return absent -- 2.36.6