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.client.SslHandlerFactory;
14 import org.opendaylight.netconf.nettyutil.handler.ssh.authentication.AuthenticationHandler;
15 import org.opendaylight.protocol.framework.ReconnectStrategy;
17 public class NetconfClientConfigurationBuilder {
19 public static final int DEFAULT_CONNECTION_TIMEOUT_MILLIS = 5000;
20 public static final NetconfClientConfiguration.NetconfClientProtocol DEFAULT_CLIENT_PROTOCOL =
21 NetconfClientConfiguration.NetconfClientProtocol.TCP;
23 private InetSocketAddress address;
24 private long connectionTimeoutMillis = DEFAULT_CONNECTION_TIMEOUT_MILLIS;
25 private NetconfHelloMessageAdditionalHeader additionalHeader;
26 private NetconfClientSessionListener sessionListener;
27 private ReconnectStrategy reconnectStrategy;
28 private AuthenticationHandler authHandler;
29 private NetconfClientConfiguration.NetconfClientProtocol clientProtocol = DEFAULT_CLIENT_PROTOCOL;
30 private SslHandlerFactory sslHandlerFactory;
32 protected NetconfClientConfigurationBuilder() {
35 public static NetconfClientConfigurationBuilder create() {
36 return new NetconfClientConfigurationBuilder();
39 @SuppressWarnings("checkstyle:hiddenField")
40 public NetconfClientConfigurationBuilder withAddress(final InetSocketAddress address) {
41 this.address = address;
45 @SuppressWarnings("checkstyle:hiddenField")
46 public NetconfClientConfigurationBuilder withConnectionTimeoutMillis(final long connectionTimeoutMillis) {
47 this.connectionTimeoutMillis = connectionTimeoutMillis;
51 @SuppressWarnings("checkstyle:hiddenField")
52 public NetconfClientConfigurationBuilder withProtocol(
53 final NetconfClientConfiguration.NetconfClientProtocol clientProtocol) {
54 this.clientProtocol = clientProtocol;
58 @SuppressWarnings("checkstyle:hiddenField")
59 public NetconfClientConfigurationBuilder withAdditionalHeader(
60 final NetconfHelloMessageAdditionalHeader additionalHeader) {
61 this.additionalHeader = additionalHeader;
65 @SuppressWarnings("checkstyle:hiddenField")
66 public NetconfClientConfigurationBuilder withSessionListener(final NetconfClientSessionListener sessionListener) {
67 this.sessionListener = sessionListener;
71 @SuppressWarnings("checkstyle:hiddenField")
72 public NetconfClientConfigurationBuilder withReconnectStrategy(final ReconnectStrategy reconnectStrategy) {
73 this.reconnectStrategy = reconnectStrategy;
77 @SuppressWarnings("checkstyle:hiddenField")
78 public NetconfClientConfigurationBuilder withAuthHandler(final AuthenticationHandler authHandler) {
79 this.authHandler = authHandler;
83 @SuppressWarnings("checkstyle:hiddenField")
84 public NetconfClientConfigurationBuilder withSslHandlerFactory(final SslHandlerFactory sslHandlerFactory) {
85 this.sslHandlerFactory = sslHandlerFactory;
89 final InetSocketAddress getAddress() {
93 final long getConnectionTimeoutMillis() {
94 return connectionTimeoutMillis;
97 final NetconfHelloMessageAdditionalHeader getAdditionalHeader() {
98 return additionalHeader;
101 final NetconfClientSessionListener getSessionListener() {
102 return sessionListener;
105 final ReconnectStrategy getReconnectStrategy() {
106 return reconnectStrategy;
109 final AuthenticationHandler getAuthHandler() {
113 final NetconfClientConfiguration.NetconfClientProtocol getProtocol() {
114 return clientProtocol;
117 final SslHandlerFactory getSslHandlerFactory() {
118 return sslHandlerFactory;
121 public NetconfClientConfiguration build() {
122 return new NetconfClientConfiguration(clientProtocol, address, connectionTimeoutMillis, additionalHeader,
123 sessionListener, reconnectStrategy, authHandler, sslHandlerFactory);