Merge "Fix findbugs violations in netconf"
[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.client.SslHandlerFactory;
14 import org.opendaylight.netconf.nettyutil.handler.ssh.authentication.AuthenticationHandler;
15 import org.opendaylight.protocol.framework.ReconnectStrategy;
16
17 public class NetconfClientConfigurationBuilder {
18
19     public static final int DEFAULT_CONNECTION_TIMEOUT_MILLIS = 5000;
20     public static final NetconfClientConfiguration.NetconfClientProtocol DEFAULT_CLIENT_PROTOCOL =
21             NetconfClientConfiguration.NetconfClientProtocol.TCP;
22
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;
31
32     protected NetconfClientConfigurationBuilder() {
33     }
34
35     public static NetconfClientConfigurationBuilder create() {
36         return new NetconfClientConfigurationBuilder();
37     }
38
39     @SuppressWarnings("checkstyle:hiddenField")
40     public NetconfClientConfigurationBuilder withAddress(final InetSocketAddress address) {
41         this.address = address;
42         return this;
43     }
44
45     @SuppressWarnings("checkstyle:hiddenField")
46     public NetconfClientConfigurationBuilder withConnectionTimeoutMillis(final long connectionTimeoutMillis) {
47         this.connectionTimeoutMillis = connectionTimeoutMillis;
48         return this;
49     }
50
51     @SuppressWarnings("checkstyle:hiddenField")
52     public NetconfClientConfigurationBuilder withProtocol(
53             final NetconfClientConfiguration.NetconfClientProtocol clientProtocol) {
54         this.clientProtocol = clientProtocol;
55         return this;
56     }
57
58     @SuppressWarnings("checkstyle:hiddenField")
59     public NetconfClientConfigurationBuilder withAdditionalHeader(
60             final NetconfHelloMessageAdditionalHeader additionalHeader) {
61         this.additionalHeader = additionalHeader;
62         return this;
63     }
64
65     @SuppressWarnings("checkstyle:hiddenField")
66     public NetconfClientConfigurationBuilder withSessionListener(final NetconfClientSessionListener sessionListener) {
67         this.sessionListener = sessionListener;
68         return this;
69     }
70
71     @SuppressWarnings("checkstyle:hiddenField")
72     public NetconfClientConfigurationBuilder withReconnectStrategy(final ReconnectStrategy reconnectStrategy) {
73         this.reconnectStrategy = reconnectStrategy;
74         return this;
75     }
76
77     @SuppressWarnings("checkstyle:hiddenField")
78     public NetconfClientConfigurationBuilder withAuthHandler(final AuthenticationHandler authHandler) {
79         this.authHandler = authHandler;
80         return this;
81     }
82
83     @SuppressWarnings("checkstyle:hiddenField")
84     public NetconfClientConfigurationBuilder withSslHandlerFactory(final SslHandlerFactory sslHandlerFactory) {
85         this.sslHandlerFactory = sslHandlerFactory;
86         return this;
87     }
88
89     final InetSocketAddress getAddress() {
90         return address;
91     }
92
93     final long getConnectionTimeoutMillis() {
94         return connectionTimeoutMillis;
95     }
96
97     final NetconfHelloMessageAdditionalHeader getAdditionalHeader() {
98         return additionalHeader;
99     }
100
101     final NetconfClientSessionListener getSessionListener() {
102         return sessionListener;
103     }
104
105     final ReconnectStrategy getReconnectStrategy() {
106         return reconnectStrategy;
107     }
108
109     final AuthenticationHandler getAuthHandler() {
110         return authHandler;
111     }
112
113     final NetconfClientConfiguration.NetconfClientProtocol getProtocol() {
114         return clientProtocol;
115     }
116
117     final SslHandlerFactory getSslHandlerFactory() {
118         return sslHandlerFactory;
119     }
120
121     public NetconfClientConfiguration build() {
122         return new NetconfClientConfiguration(clientProtocol, address, connectionTimeoutMillis, additionalHeader,
123                 sessionListener, reconnectStrategy, authHandler, sslHandlerFactory);
124     }
125 }