Fix findbugs violations in netconf
[netconf.git] / netconf / netconf-client / src / main / java / org / opendaylight / netconf / client / conf / NetconfClientConfiguration.java
index cad5391481c26fbda424192468246ccb0b7c8318..ee41da8a8d165387d4da477d161c2830ac4e4445 100644 (file)
@@ -12,13 +12,18 @@ import com.google.common.base.MoreObjects.ToStringHelper;
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import java.net.InetSocketAddress;
-import org.opendaylight.netconf.nettyutil.handler.ssh.authentication.AuthenticationHandler;
 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
+}