X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=netconf%2Fnetconf-client%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetconf%2Fclient%2Fconf%2FNetconfClientConfiguration.java;h=ee41da8a8d165387d4da477d161c2830ac4e4445;hb=47c1b8e3d9835d336c79d6b4ca4e61417a05039e;hp=59a8d1f446169b123b2065bd32504233666eca62;hpb=32fbbabc0b941b903fef8736623c2adbc8845010;p=netconf.git diff --git a/netconf/netconf-client/src/main/java/org/opendaylight/netconf/client/conf/NetconfClientConfiguration.java b/netconf/netconf-client/src/main/java/org/opendaylight/netconf/client/conf/NetconfClientConfiguration.java index 59a8d1f446..ee41da8a8d 100644 --- a/netconf/netconf-client/src/main/java/org/opendaylight/netconf/client/conf/NetconfClientConfiguration.java +++ b/netconf/netconf-client/src/main/java/org/opendaylight/netconf/client/conf/NetconfClientConfiguration.java @@ -14,11 +14,16 @@ import com.google.common.base.Preconditions; import java.net.InetSocketAddress; import org.opendaylight.netconf.api.messages.NetconfHelloMessageAdditionalHeader; import org.opendaylight.netconf.client.NetconfClientSessionListener; +import org.opendaylight.netconf.client.SslHandlerFactory; import org.opendaylight.netconf.nettyutil.handler.ssh.authentication.AuthenticationHandler; import org.opendaylight.protocol.framework.ReconnectStrategy; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class NetconfClientConfiguration { + private static final Logger LOG = LoggerFactory.getLogger(NetconfClientConfiguration.class); + private final NetconfClientProtocol clientProtocol; private final InetSocketAddress address; private final Long connectionTimeoutMillis; @@ -29,8 +34,14 @@ public class NetconfClientConfiguration { private final ReconnectStrategy reconnectStrategy; private final AuthenticationHandler authHandler; - - NetconfClientConfiguration(final NetconfClientProtocol protocol, final InetSocketAddress address, final Long connectionTimeoutMillis, final NetconfHelloMessageAdditionalHeader additionalHeader, final NetconfClientSessionListener sessionListener, final ReconnectStrategy reconnectStrategy, final AuthenticationHandler authHandler) { + private final SslHandlerFactory sslHandlerFactory; + + NetconfClientConfiguration(final NetconfClientProtocol protocol, final InetSocketAddress address, + final Long connectionTimeoutMillis, + final NetconfHelloMessageAdditionalHeader additionalHeader, + final NetconfClientSessionListener sessionListener, + final ReconnectStrategy reconnectStrategy, final AuthenticationHandler authHandler, + final SslHandlerFactory sslHandlerFactory) { this.address = address; this.connectionTimeoutMillis = connectionTimeoutMillis; this.additionalHeader = additionalHeader; @@ -38,6 +49,7 @@ public class NetconfClientConfiguration { this.clientProtocol = protocol; this.reconnectStrategy = reconnectStrategy; this.authHandler = authHandler; + this.sslHandlerFactory = sslHandlerFactory; validateConfiguration(); } @@ -69,17 +81,33 @@ public class NetconfClientConfiguration { return clientProtocol; } + public SslHandlerFactory getSslHandlerFactory() { + return sslHandlerFactory; + } + private void validateConfiguration() { Preconditions.checkNotNull(clientProtocol, " "); switch (clientProtocol) { - case SSH: - validateSshConfiguration(); - // Fall through intentional (ssh validation is a superset of tcp validation) - case TCP: - validateTcpConfiguration(); + case TLS: + validateTlsConfiguration(); + validateTcpConfiguration(); + break; + case SSH: + validateSshConfiguration(); + validateTcpConfiguration(); + break; + case TCP: + validateTcpConfiguration(); + break; + default: + LOG.warn("Unexpected protocol: {} in netconf client configuration.", clientProtocol); } } + protected void validateTlsConfiguration() { + Preconditions.checkNotNull(sslHandlerFactory, "sslHandlerFactory"); + } + protected void validateSshConfiguration() { Preconditions.checkNotNull(authHandler, "authHandler"); } @@ -105,10 +133,11 @@ public class NetconfClientConfiguration { .add("sessionListener", sessionListener) .add("reconnectStrategy", reconnectStrategy) .add("clientProtocol", clientProtocol) - .add("authHandler", authHandler); + .add("authHandler", authHandler) + .add("sslHandlerFactory", sslHandlerFactory); } - public static enum NetconfClientProtocol { - TCP, SSH + public enum NetconfClientProtocol { + TCP, SSH, TLS } -} \ No newline at end of file +}