Merge "Bug 8153: Enforce check-style rules for netconf - client."
[netconf.git] / netconf / netconf-client / src / main / java / org / opendaylight / netconf / client / conf / NetconfClientConfigurationBuilder.java
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.netconf.client.conf;
9
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;
15
16 public class NetconfClientConfigurationBuilder {
17
18     public static final int DEFAULT_CONNECTION_TIMEOUT_MILLIS = 5000;
19     public static final NetconfClientConfiguration.NetconfClientProtocol DEFAULT_CLIENT_PROTOCOL =
20             NetconfClientConfiguration.NetconfClientProtocol.TCP;
21
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;
29
30     protected NetconfClientConfigurationBuilder() {
31     }
32
33     public static NetconfClientConfigurationBuilder create() {
34         return new NetconfClientConfigurationBuilder();
35     }
36
37     public NetconfClientConfigurationBuilder withAddress(final InetSocketAddress address) {
38         this.address = address;
39         return this;
40     }
41
42     public NetconfClientConfigurationBuilder withConnectionTimeoutMillis(final long connectionTimeoutMillis) {
43         this.connectionTimeoutMillis = connectionTimeoutMillis;
44         return this;
45     }
46
47     public NetconfClientConfigurationBuilder withProtocol(
48             final NetconfClientConfiguration.NetconfClientProtocol clientProtocol) {
49         this.clientProtocol = clientProtocol;
50         return this;
51     }
52
53     public NetconfClientConfigurationBuilder withAdditionalHeader(
54             final NetconfHelloMessageAdditionalHeader additionalHeader) {
55         this.additionalHeader = additionalHeader;
56         return this;
57     }
58
59     public NetconfClientConfigurationBuilder withSessionListener(final NetconfClientSessionListener sessionListener) {
60         this.sessionListener = sessionListener;
61         return this;
62     }
63
64     public NetconfClientConfigurationBuilder withReconnectStrategy(final ReconnectStrategy reconnectStrategy) {
65         this.reconnectStrategy = reconnectStrategy;
66         return this;
67     }
68
69     public NetconfClientConfigurationBuilder withAuthHandler(final AuthenticationHandler authHandler) {
70         this.authHandler = authHandler;
71         return this;
72     }
73
74     final InetSocketAddress getAddress() {
75         return address;
76     }
77
78     final long getConnectionTimeoutMillis() {
79         return connectionTimeoutMillis;
80     }
81
82     final NetconfHelloMessageAdditionalHeader getAdditionalHeader() {
83         return additionalHeader;
84     }
85
86     final NetconfClientSessionListener getSessionListener() {
87         return sessionListener;
88     }
89
90     final ReconnectStrategy getReconnectStrategy() {
91         return reconnectStrategy;
92     }
93
94     final AuthenticationHandler getAuthHandler() {
95         return authHandler;
96     }
97
98     final NetconfClientConfiguration.NetconfClientProtocol getProtocol() {
99         return clientProtocol;
100     }
101
102     public NetconfClientConfiguration build() {
103         return new NetconfClientConfiguration(clientProtocol, address, connectionTimeoutMillis, additionalHeader,
104                 sessionListener, reconnectStrategy, authHandler);
105     }
106 }