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=c1edb5abc89b0e313ab732b0287a1455c70887ea;hb=7bf7d3fd39c6966a2414d4ca6fd77d195021c1f8;hp=ae0d3330087c4db4f7d4f5a97c9f509284ae8c76;hpb=e8fb71a206b0fb81b69ffcea6df310490ada02eb;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 ae0d333008..c1edb5abc8 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 @@ -7,20 +7,25 @@ */ package org.opendaylight.netconf.client.conf; +import static java.util.Objects.requireNonNull; + import com.google.common.base.MoreObjects; import com.google.common.base.MoreObjects.ToStringHelper; -import com.google.common.base.Optional; -import com.google.common.base.Preconditions; import java.net.InetSocketAddress; +import java.util.List; +import java.util.Optional; +import org.checkerframework.checker.index.qual.NonNegative; import org.opendaylight.netconf.api.messages.NetconfHelloMessageAdditionalHeader; import org.opendaylight.netconf.client.NetconfClientSessionListener; +import org.opendaylight.netconf.client.SslHandlerFactory; +import org.opendaylight.netconf.nettyutil.ReconnectStrategy; import org.opendaylight.netconf.nettyutil.handler.ssh.authentication.AuthenticationHandler; -import org.opendaylight.protocol.framework.ReconnectStrategy; +import org.opendaylight.netconf.nettyutil.handler.ssh.client.NetconfSshClient; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class NetconfClientConfiguration { - private static final Logger LOG = LoggerFactory.getLogger(NetconfClientConfiguration.class); private final NetconfClientProtocol clientProtocol; @@ -33,19 +38,30 @@ public class NetconfClientConfiguration { private final ReconnectStrategy reconnectStrategy; private final AuthenticationHandler authHandler; + private final SslHandlerFactory sslHandlerFactory; + private final NetconfSshClient sshClient; + + private final List odlHelloCapabilities; + private final @NonNegative int maximumIncomingChunkSize; NetconfClientConfiguration(final NetconfClientProtocol protocol, final InetSocketAddress address, final Long connectionTimeoutMillis, final NetconfHelloMessageAdditionalHeader additionalHeader, final NetconfClientSessionListener sessionListener, - final ReconnectStrategy reconnectStrategy, final AuthenticationHandler authHandler) { + final ReconnectStrategy reconnectStrategy, final AuthenticationHandler authHandler, + final SslHandlerFactory sslHandlerFactory, final NetconfSshClient sshClient, + final List odlHelloCapabilities, final @NonNegative int maximumIncomingChunkSize) { this.address = address; this.connectionTimeoutMillis = connectionTimeoutMillis; this.additionalHeader = additionalHeader; this.sessionListener = sessionListener; - this.clientProtocol = protocol; + clientProtocol = protocol; this.reconnectStrategy = reconnectStrategy; this.authHandler = authHandler; + this.sslHandlerFactory = sslHandlerFactory; + this.sshClient = sshClient; + this.odlHelloCapabilities = odlHelloCapabilities; + this.maximumIncomingChunkSize = maximumIncomingChunkSize; validateConfiguration(); } @@ -58,13 +74,14 @@ public class NetconfClientConfiguration { } public final Optional getAdditionalHeader() { - return Optional.fromNullable(additionalHeader); + return Optional.ofNullable(additionalHeader); } public final NetconfClientSessionListener getSessionListener() { return sessionListener; } + @Deprecated(forRemoval = true) public final ReconnectStrategy getReconnectStrategy() { return reconnectStrategy; } @@ -77,13 +94,32 @@ public class NetconfClientConfiguration { return clientProtocol; } - @SuppressWarnings("checkstyle:FallThrough") + public SslHandlerFactory getSslHandlerFactory() { + return sslHandlerFactory; + } + + public NetconfSshClient getSshClient() { + return sshClient; + } + + public List getOdlHelloCapabilities() { + return odlHelloCapabilities; + } + + public @NonNegative int getMaximumIncomingChunkSize() { + return maximumIncomingChunkSize; + } + private void validateConfiguration() { - Preconditions.checkNotNull(clientProtocol, " "); - switch (clientProtocol) { + switch (requireNonNull(clientProtocol)) { + case TLS: + validateTlsConfiguration(); + validateTcpConfiguration(); + break; case SSH: validateSshConfiguration(); - // Fall through intentional (ssh validation is a superset of tcp validation) + validateTcpConfiguration(); + break; case TCP: validateTcpConfiguration(); break; @@ -92,16 +128,20 @@ public class NetconfClientConfiguration { } } - protected void validateSshConfiguration() { - Preconditions.checkNotNull(authHandler, "authHandler"); + protected final void validateTlsConfiguration() { + requireNonNull(sslHandlerFactory, "sslHandlerFactory"); + } + + protected final void validateSshConfiguration() { + requireNonNull(authHandler, "authHandler"); } - protected void validateTcpConfiguration() { - Preconditions.checkNotNull(address, "address"); - Preconditions.checkNotNull(clientProtocol, "clientProtocol"); - Preconditions.checkNotNull(connectionTimeoutMillis, "connectionTimeoutMillis"); - Preconditions.checkNotNull(sessionListener, "sessionListener"); - Preconditions.checkNotNull(reconnectStrategy, "reconnectStrategy"); + protected final void validateTcpConfiguration() { + requireNonNull(address, "address"); + requireNonNull(clientProtocol, "clientProtocol"); + requireNonNull(connectionTimeoutMillis, "connectionTimeoutMillis"); + requireNonNull(sessionListener, "sessionListener"); + requireNonNull(reconnectStrategy, "reconnectStrategy"); } @Override @@ -117,10 +157,11 @@ public class NetconfClientConfiguration { .add("sessionListener", sessionListener) .add("reconnectStrategy", reconnectStrategy) .add("clientProtocol", clientProtocol) - .add("authHandler", authHandler); + .add("authHandler", authHandler) + .add("sslHandlerFactory", sslHandlerFactory); } public enum NetconfClientProtocol { - TCP, SSH + TCP, SSH, TLS } -} \ No newline at end of file +}