From 1aee735f32750e5cd18607caf14e3ccc682d26e3 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 4 Jan 2019 11:12:27 +0100 Subject: [PATCH] Refactor client builder logic We acquire protocol multiple times, leading to it being flagged for null violations. Refactor the code a bit to make it easier to follow what is going on. Change-Id: I5a9f4a709e49fc383b7573d9c8638c80559afc8b Signed-off-by: Robert Varga --- .../topology/AbstractNetconfTopology.java | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/AbstractNetconfTopology.java b/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/AbstractNetconfTopology.java index 67ed577c4e..e1c22b556f 100644 --- a/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/AbstractNetconfTopology.java +++ b/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/AbstractNetconfTopology.java @@ -35,7 +35,6 @@ import org.opendaylight.mdsal.dom.api.DOMMountPointService; import org.opendaylight.netconf.api.NetconfMessage; import org.opendaylight.netconf.client.NetconfClientDispatcher; import org.opendaylight.netconf.client.NetconfClientSessionListener; -import org.opendaylight.netconf.client.SslHandlerFactory; import org.opendaylight.netconf.client.conf.NetconfClientConfiguration; import org.opendaylight.netconf.client.conf.NetconfReconnectingClientConfiguration; import org.opendaylight.netconf.client.conf.NetconfReconnectingClientConfigurationBuilder; @@ -66,6 +65,7 @@ import org.opendaylight.protocol.framework.TimedReconnectStrategy; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Host; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode; +import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.parameters.Protocol; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.parameters.Protocol.Name; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.status.available.capabilities.AvailableCapability.CapabilityOrigin; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.credentials.Credentials; @@ -485,24 +485,24 @@ public abstract class AbstractNetconfTopology implements NetconfTopology { maxConnectionAttempts, betweenAttemptsTimeoutMillis, sleepFactor); final ReconnectStrategy strategy = sf.createReconnectStrategy(); - final NetconfReconnectingClientConfigurationBuilder reconnectingClientConfigurationBuilder = - NetconfReconnectingClientConfigurationBuilder.create(); - - if (node.isTcpOnly() || node.getProtocol() == null || node.getProtocol().getName() == Name.SSH) { - final AuthenticationHandler authHandler = getHandlerFromCredentials(node.getCredentials()); - reconnectingClientConfigurationBuilder - .withAuthHandler(authHandler) - .withProtocol(node.isTcpOnly() ? NetconfClientConfiguration.NetconfClientProtocol.TCP : - NetconfClientConfiguration.NetconfClientProtocol.SSH); - } else if (node.getProtocol().getName() == Name.TLS) { - final SslHandlerFactory sslHandlerFactory = new SslHandlerFactoryImpl(keystoreAdapter, - node.getProtocol().getSpecification()); - reconnectingClientConfigurationBuilder - .withSslHandlerFactory(sslHandlerFactory) + final NetconfReconnectingClientConfigurationBuilder reconnectingClientConfigurationBuilder; + final Protocol protocol = node.getProtocol(); + if (node.isTcpOnly()) { + reconnectingClientConfigurationBuilder = NetconfReconnectingClientConfigurationBuilder.create() + .withProtocol(NetconfClientConfiguration.NetconfClientProtocol.TCP) + .withAuthHandler(getHandlerFromCredentials(node.getCredentials())); + } else if (protocol == null || protocol.getName() == Name.SSH) { + reconnectingClientConfigurationBuilder = NetconfReconnectingClientConfigurationBuilder.create() + .withProtocol(NetconfClientConfiguration.NetconfClientProtocol.SSH) + .withAuthHandler(getHandlerFromCredentials(node.getCredentials())); + } else if (protocol.getName() == Name.TLS) { + reconnectingClientConfigurationBuilder = NetconfReconnectingClientConfigurationBuilder.create() + .withSslHandlerFactory(new SslHandlerFactoryImpl(keystoreAdapter, protocol.getSpecification())) .withProtocol(NetconfClientConfiguration.NetconfClientProtocol.TLS); } else { - throw new IllegalStateException("Unsupported protocol type: " + node.getProtocol().getName().getClass()); + throw new IllegalStateException("Unsupported protocol type: " + protocol.getName()); } + if (node.getOdlHelloMessageCapabilities() != null) { reconnectingClientConfigurationBuilder .withOdlHelloCapabilities(node.getOdlHelloMessageCapabilities().getCapability()); -- 2.36.6