From: Robert Varga Date: Wed, 31 Jan 2024 22:38:32 +0000 (+0100) Subject: Fix SslHandler indirection X-Git-Tag: v7.0.0~62 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=5a9708a6db33652fde445a22aa593df3715f51a1;p=netconf.git Fix SslHandler indirection We should be binding the factory at configuration time, not when it is actually needed. JIRA: NETCONF-1243 Change-Id: I36854bfab82a9d240cc641b5eb525b396215901a Signed-off-by: Robert Varga --- diff --git a/apps/netconf-topology/src/main/java/org/opendaylight/netconf/topology/spi/NetconfClientConfigurationBuilderFactoryImpl.java b/apps/netconf-topology/src/main/java/org/opendaylight/netconf/topology/spi/NetconfClientConfigurationBuilderFactoryImpl.java index 1e9ef1e57f..1df8b9450d 100644 --- a/apps/netconf-topology/src/main/java/org/opendaylight/netconf/topology/spi/NetconfClientConfigurationBuilderFactoryImpl.java +++ b/apps/netconf-topology/src/main/java/org/opendaylight/netconf/topology/spi/NetconfClientConfigurationBuilderFactoryImpl.java @@ -91,9 +91,9 @@ public final class NetconfClientConfigurationBuilderFactoryImpl implements Netco builder.withProtocol(NetconfClientProtocol.SSH); setSshParametersFromCredentials(builder, node.getCredentials()); } else if (protocol.getName() == Name.TLS) { - builder.withProtocol(NetconfClientProtocol.TLS).withSslHandlerFactory( - channel -> sslHandlerFactoryProvider.getSslHandlerFactory(protocol.getSpecification()) - .createSslHandler()); + final var handlerFactory = sslHandlerFactoryProvider.getSslHandlerFactory(protocol.getSpecification()); + builder.withProtocol(NetconfClientProtocol.TLS) + .withSslHandlerFactory(channel -> handlerFactory.createSslHandler()); } else { throw new IllegalArgumentException("Unsupported protocol type: " + protocol.getName()); } diff --git a/apps/netconf-topology/src/test/java/org/opendaylight/netconf/topology/spi/NetconfClientConfigurationBuilderFactoryImplTest.java b/apps/netconf-topology/src/test/java/org/opendaylight/netconf/topology/spi/NetconfClientConfigurationBuilderFactoryImplTest.java index 600e77fbd2..8365b4594d 100644 --- a/apps/netconf-topology/src/test/java/org/opendaylight/netconf/topology/spi/NetconfClientConfigurationBuilderFactoryImplTest.java +++ b/apps/netconf-topology/src/test/java/org/opendaylight/netconf/topology/spi/NetconfClientConfigurationBuilderFactoryImplTest.java @@ -11,6 +11,8 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertSame; import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doReturn; import java.util.NoSuchElementException; import org.junit.jupiter.api.BeforeEach; @@ -20,6 +22,7 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import org.opendaylight.aaa.encrypt.AAAEncryptionService; 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.NetconfClientConfiguration.NetconfClientProtocol; import org.opendaylight.netconf.client.mdsal.api.CredentialProvider; @@ -53,6 +56,8 @@ class NetconfClientConfigurationBuilderFactoryImplTest { private CredentialProvider credentialProvider; @Mock private SslHandlerFactoryProvider sslHandlerFactoryProvider; + @Mock + private SslHandlerFactory sslHandlerFactory; private NetconfNodeBuilder nodeBuilder; private NetconfClientConfigurationBuilderFactoryImpl factory; @@ -78,7 +83,7 @@ class NetconfClientConfigurationBuilderFactoryImplTest { sslHandlerFactoryProvider); } - private void assertConfig(NetconfClientConfiguration config) { + private void assertConfig(final NetconfClientConfiguration config) { assertNotNull(config); assertNotNull(config.getTcpParameters()); assertEquals(HOST, config.getTcpParameters().getRemoteAddress()); @@ -112,6 +117,7 @@ class NetconfClientConfigurationBuilderFactoryImplTest { @Test void testTls() { + doReturn(sslHandlerFactory).when(sslHandlerFactoryProvider).getSslHandlerFactory(any()); final var config = createConfig( nodeBuilder.setTcpOnly(false).setProtocol(new ProtocolBuilder().setName(Name.TLS).build()).build()); assertConfig(config);