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 static com.google.common.base.Preconditions.checkArgument;
12 import java.net.InetSocketAddress;
13 import java.util.List;
14 import org.checkerframework.checker.index.qual.NonNegative;
15 import org.opendaylight.netconf.api.messages.NetconfHelloMessageAdditionalHeader;
16 import org.opendaylight.netconf.client.NetconfClientSessionListener;
17 import org.opendaylight.netconf.client.SslHandlerFactory;
18 import org.opendaylight.netconf.nettyutil.AbstractNetconfSessionNegotiator;
19 import org.opendaylight.netconf.nettyutil.ReconnectStrategy;
20 import org.opendaylight.netconf.nettyutil.handler.ssh.authentication.AuthenticationHandler;
21 import org.opendaylight.netconf.nettyutil.handler.ssh.client.NetconfSshClient;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
24 public class NetconfClientConfigurationBuilder {
26 public static final int DEFAULT_CONNECTION_TIMEOUT_MILLIS = 5000;
27 public static final NetconfClientConfiguration.NetconfClientProtocol DEFAULT_CLIENT_PROTOCOL =
28 NetconfClientConfiguration.NetconfClientProtocol.TCP;
30 private InetSocketAddress address;
31 private long connectionTimeoutMillis = DEFAULT_CONNECTION_TIMEOUT_MILLIS;
32 private NetconfHelloMessageAdditionalHeader additionalHeader;
33 private NetconfClientSessionListener sessionListener;
34 private ReconnectStrategy reconnectStrategy;
35 private AuthenticationHandler authHandler;
36 private NetconfClientConfiguration.NetconfClientProtocol clientProtocol = DEFAULT_CLIENT_PROTOCOL;
37 private SslHandlerFactory sslHandlerFactory;
38 private NetconfSshClient sshClient;
39 private List<Uri> odlHelloCapabilities;
40 private @NonNegative int maximumIncomingChunkSize =
41 AbstractNetconfSessionNegotiator.DEFAULT_MAXIMUM_INCOMING_CHUNK_SIZE;
43 protected NetconfClientConfigurationBuilder() {
46 public static NetconfClientConfigurationBuilder create() {
47 return new NetconfClientConfigurationBuilder();
50 @SuppressWarnings("checkstyle:hiddenField")
51 public NetconfClientConfigurationBuilder withAddress(final InetSocketAddress address) {
52 this.address = address;
56 @SuppressWarnings("checkstyle:hiddenField")
57 public NetconfClientConfigurationBuilder withConnectionTimeoutMillis(final long connectionTimeoutMillis) {
58 this.connectionTimeoutMillis = connectionTimeoutMillis;
62 @SuppressWarnings("checkstyle:hiddenField")
63 public NetconfClientConfigurationBuilder withProtocol(
64 final NetconfClientConfiguration.NetconfClientProtocol clientProtocol) {
65 this.clientProtocol = clientProtocol;
69 @SuppressWarnings("checkstyle:hiddenField")
70 public NetconfClientConfigurationBuilder withAdditionalHeader(
71 final NetconfHelloMessageAdditionalHeader additionalHeader) {
72 this.additionalHeader = additionalHeader;
76 @SuppressWarnings("checkstyle:hiddenField")
77 public NetconfClientConfigurationBuilder withSessionListener(final NetconfClientSessionListener sessionListener) {
78 this.sessionListener = sessionListener;
82 @SuppressWarnings("checkstyle:hiddenField")
83 public NetconfClientConfigurationBuilder withReconnectStrategy(final ReconnectStrategy reconnectStrategy) {
84 this.reconnectStrategy = reconnectStrategy;
88 @SuppressWarnings("checkstyle:hiddenField")
89 public NetconfClientConfigurationBuilder withAuthHandler(final AuthenticationHandler authHandler) {
90 this.authHandler = authHandler;
94 @SuppressWarnings("checkstyle:hiddenField")
95 public NetconfClientConfigurationBuilder withSslHandlerFactory(final SslHandlerFactory sslHandlerFactory) {
96 this.sslHandlerFactory = sslHandlerFactory;
100 @SuppressWarnings("checkstyle:hiddenField")
101 public NetconfClientConfigurationBuilder withSshClient(final NetconfSshClient sshClient) {
102 this.sshClient = sshClient;
106 @SuppressWarnings("checkstyle:hiddenField")
107 public NetconfClientConfigurationBuilder withOdlHelloCapabilities(final List<Uri> odlHelloCapabilities) {
108 this.odlHelloCapabilities = odlHelloCapabilities;
112 @SuppressWarnings("checkstyle:hiddenField")
113 public NetconfClientConfigurationBuilder withMaximumIncomingChunkSize(
114 final @NonNegative int maximumIncomingChunkSize) {
115 checkArgument(maximumIncomingChunkSize > 0);
116 this.maximumIncomingChunkSize = maximumIncomingChunkSize;
120 final InetSocketAddress getAddress() {
124 final long getConnectionTimeoutMillis() {
125 return connectionTimeoutMillis;
128 final NetconfHelloMessageAdditionalHeader getAdditionalHeader() {
129 return additionalHeader;
132 final NetconfClientSessionListener getSessionListener() {
133 return sessionListener;
136 final ReconnectStrategy getReconnectStrategy() {
137 return reconnectStrategy;
140 final AuthenticationHandler getAuthHandler() {
144 final NetconfClientConfiguration.NetconfClientProtocol getProtocol() {
145 return clientProtocol;
148 final SslHandlerFactory getSslHandlerFactory() {
149 return sslHandlerFactory;
152 public NetconfSshClient getSshClient() {
156 final List<Uri> getOdlHelloCapabilities() {
157 return odlHelloCapabilities;
160 final @NonNegative int getMaximumIncomingChunkSize() {
161 return maximumIncomingChunkSize;
164 public NetconfClientConfiguration build() {
165 return new NetconfClientConfiguration(clientProtocol, address, connectionTimeoutMillis, additionalHeader,
166 sessionListener, reconnectStrategy, authHandler, sslHandlerFactory, sshClient, odlHelloCapabilities,
167 maximumIncomingChunkSize);