2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.controller.netconf.client.conf;
10 import com.google.common.base.Objects;
11 import com.google.common.base.Optional;
12 import com.google.common.base.Preconditions;
13 import java.net.InetSocketAddress;
14 import org.opendaylight.controller.netconf.client.NetconfClientSessionListener;
15 import org.opendaylight.controller.netconf.nettyutil.handler.ssh.authentication.AuthenticationHandler;
16 import org.opendaylight.controller.netconf.util.messages.NetconfHelloMessageAdditionalHeader;
17 import org.opendaylight.protocol.framework.ReconnectStrategy;
19 public class NetconfClientConfiguration {
21 private final NetconfClientProtocol clientProtocol;
22 private final InetSocketAddress address;
23 private final Long connectionTimeoutMillis;
25 private final NetconfHelloMessageAdditionalHeader additionalHeader;
26 private final NetconfClientSessionListener sessionListener;
28 private final ReconnectStrategy reconnectStrategy;
30 private final AuthenticationHandler authHandler;
32 NetconfClientConfiguration(final NetconfClientProtocol protocol, final InetSocketAddress address, final Long connectionTimeoutMillis, final NetconfHelloMessageAdditionalHeader additionalHeader, final NetconfClientSessionListener sessionListener, final ReconnectStrategy reconnectStrategy, final AuthenticationHandler authHandler) {
33 this.address = address;
34 this.connectionTimeoutMillis = connectionTimeoutMillis;
35 this.additionalHeader = additionalHeader;
36 this.sessionListener = sessionListener;
37 this.clientProtocol = protocol;
38 this.reconnectStrategy = reconnectStrategy;
39 this.authHandler = authHandler;
40 validateConfiguration();
43 public final InetSocketAddress getAddress() {
47 public final Long getConnectionTimeoutMillis() {
48 return connectionTimeoutMillis;
51 public final Optional<NetconfHelloMessageAdditionalHeader> getAdditionalHeader() {
52 return Optional.fromNullable(additionalHeader);
55 public final NetconfClientSessionListener getSessionListener() {
56 return sessionListener;
59 public final ReconnectStrategy getReconnectStrategy() {
60 return reconnectStrategy;
63 public final AuthenticationHandler getAuthHandler() {
67 public NetconfClientProtocol getProtocol() {
68 return clientProtocol;
71 private void validateConfiguration() {
72 Preconditions.checkNotNull(clientProtocol, " ");
73 switch (clientProtocol) {
75 validateSshConfiguration();
76 // Fall through intentional (ssh validation is a superset of tcp validation)
78 validateTcpConfiguration();
82 protected void validateSshConfiguration() {
83 Preconditions.checkNotNull(authHandler, "authHandler");
86 protected void validateTcpConfiguration() {
87 Preconditions.checkNotNull(address, "address");
88 Preconditions.checkNotNull(clientProtocol, "clientProtocol");
89 Preconditions.checkNotNull(connectionTimeoutMillis, "connectionTimeoutMillis");
90 Preconditions.checkNotNull(sessionListener, "sessionListener");
91 Preconditions.checkNotNull(reconnectStrategy, "reconnectStrategy");
95 public final String toString() {
96 return buildToStringHelper().toString();
99 protected Objects.ToStringHelper buildToStringHelper() {
100 return Objects.toStringHelper(this)
101 .add("address", address)
102 .add("connectionTimeoutMillis", connectionTimeoutMillis)
103 .add("additionalHeader", additionalHeader)
104 .add("sessionListener", sessionListener)
105 .add("reconnectStrategy", reconnectStrategy)
106 .add("clientProtocol", clientProtocol)
107 .add("authHandler", authHandler);
110 public static enum NetconfClientProtocol {