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.netconf.client.conf;
10 import java.net.InetSocketAddress;
11 import org.opendaylight.netconf.api.messages.NetconfHelloMessageAdditionalHeader;
12 import org.opendaylight.netconf.client.NetconfClientSessionListener;
13 import org.opendaylight.netconf.nettyutil.handler.ssh.authentication.AuthenticationHandler;
14 import org.opendaylight.protocol.framework.ReconnectStrategy;
16 public class NetconfClientConfigurationBuilder {
18 public static final int DEFAULT_CONNECTION_TIMEOUT_MILLIS = 5000;
19 public static final NetconfClientConfiguration.NetconfClientProtocol DEFAULT_CLIENT_PROTOCOL =
20 NetconfClientConfiguration.NetconfClientProtocol.TCP;
22 private InetSocketAddress address;
23 private long connectionTimeoutMillis = DEFAULT_CONNECTION_TIMEOUT_MILLIS;
24 private NetconfHelloMessageAdditionalHeader additionalHeader;
25 private NetconfClientSessionListener sessionListener;
26 private ReconnectStrategy reconnectStrategy;
27 private AuthenticationHandler authHandler;
28 private NetconfClientConfiguration.NetconfClientProtocol clientProtocol = DEFAULT_CLIENT_PROTOCOL;
30 protected NetconfClientConfigurationBuilder() {
33 public static NetconfClientConfigurationBuilder create() {
34 return new NetconfClientConfigurationBuilder();
37 @SuppressWarnings("checkstyle:hiddenField")
38 public NetconfClientConfigurationBuilder withAddress(final InetSocketAddress address) {
39 this.address = address;
43 @SuppressWarnings("checkstyle:hiddenField")
44 public NetconfClientConfigurationBuilder withConnectionTimeoutMillis(final long connectionTimeoutMillis) {
45 this.connectionTimeoutMillis = connectionTimeoutMillis;
49 @SuppressWarnings("checkstyle:hiddenField")
50 public NetconfClientConfigurationBuilder withProtocol(
51 final NetconfClientConfiguration.NetconfClientProtocol clientProtocol) {
52 this.clientProtocol = clientProtocol;
56 @SuppressWarnings("checkstyle:hiddenField")
57 public NetconfClientConfigurationBuilder withAdditionalHeader(
58 final NetconfHelloMessageAdditionalHeader additionalHeader) {
59 this.additionalHeader = additionalHeader;
63 @SuppressWarnings("checkstyle:hiddenField")
64 public NetconfClientConfigurationBuilder withSessionListener(final NetconfClientSessionListener sessionListener) {
65 this.sessionListener = sessionListener;
69 @SuppressWarnings("checkstyle:hiddenField")
70 public NetconfClientConfigurationBuilder withReconnectStrategy(final ReconnectStrategy reconnectStrategy) {
71 this.reconnectStrategy = reconnectStrategy;
75 @SuppressWarnings("checkstyle:hiddenField")
76 public NetconfClientConfigurationBuilder withAuthHandler(final AuthenticationHandler authHandler) {
77 this.authHandler = authHandler;
81 final InetSocketAddress getAddress() {
85 final long getConnectionTimeoutMillis() {
86 return connectionTimeoutMillis;
89 final NetconfHelloMessageAdditionalHeader getAdditionalHeader() {
90 return additionalHeader;
93 final NetconfClientSessionListener getSessionListener() {
94 return sessionListener;
97 final ReconnectStrategy getReconnectStrategy() {
98 return reconnectStrategy;
101 final AuthenticationHandler getAuthHandler() {
105 final NetconfClientConfiguration.NetconfClientProtocol getProtocol() {
106 return clientProtocol;
109 public NetconfClientConfiguration build() {
110 return new NetconfClientConfiguration(clientProtocol, address, connectionTimeoutMillis, additionalHeader,
111 sessionListener, reconnectStrategy, authHandler);