Bug 624 - Separate netty and exi specific classes from netconf-util.
[controller.git] / opendaylight / netconf / netconf-client / src / main / java / org / opendaylight / controller / 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.controller.netconf.client.conf;
9
10 import java.net.InetSocketAddress;
11 import org.opendaylight.controller.netconf.client.NetconfClientSessionListener;
12 import org.opendaylight.controller.netconf.nettyutil.handler.ssh.authentication.AuthenticationHandler;
13 import org.opendaylight.controller.netconf.util.messages.NetconfHelloMessageAdditionalHeader;
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 = NetconfClientConfiguration.NetconfClientProtocol.TCP;
20
21     private InetSocketAddress address;
22     private long connectionTimeoutMillis = DEFAULT_CONNECTION_TIMEOUT_MILLIS;
23     private NetconfHelloMessageAdditionalHeader additionalHeader;
24     private NetconfClientSessionListener sessionListener;
25     private ReconnectStrategy reconnectStrategy;
26     private AuthenticationHandler authHandler;
27     private NetconfClientConfiguration.NetconfClientProtocol clientProtocol = DEFAULT_CLIENT_PROTOCOL;
28
29     protected NetconfClientConfigurationBuilder() {
30     }
31
32     public static NetconfClientConfigurationBuilder create() {
33         return new NetconfClientConfigurationBuilder();
34     }
35
36     public NetconfClientConfigurationBuilder withAddress(final InetSocketAddress address) {
37         this.address = address;
38         return this;
39     }
40
41     public NetconfClientConfigurationBuilder withConnectionTimeoutMillis(final long connectionTimeoutMillis) {
42         this.connectionTimeoutMillis = connectionTimeoutMillis;
43         return this;
44     }
45
46     public NetconfClientConfigurationBuilder withProtocol(final NetconfClientConfiguration.NetconfClientProtocol clientProtocol) {
47         this.clientProtocol = clientProtocol;
48         return this;
49     }
50
51     public NetconfClientConfigurationBuilder withAdditionalHeader(final NetconfHelloMessageAdditionalHeader additionalHeader) {
52         this.additionalHeader = additionalHeader;
53         return this;
54     }
55
56     public NetconfClientConfigurationBuilder withSessionListener(final NetconfClientSessionListener sessionListener) {
57         this.sessionListener = sessionListener;
58         return this;
59     }
60
61     public NetconfClientConfigurationBuilder withReconnectStrategy(final ReconnectStrategy reconnectStrategy) {
62         this.reconnectStrategy = reconnectStrategy;
63         return this;
64     }
65
66     public NetconfClientConfigurationBuilder withAuthHandler(final AuthenticationHandler authHandler) {
67         this.authHandler = authHandler;
68         return this;
69     }
70
71     final InetSocketAddress getAddress() {
72         return address;
73     }
74
75     final long getConnectionTimeoutMillis() {
76         return connectionTimeoutMillis;
77     }
78
79     final NetconfHelloMessageAdditionalHeader getAdditionalHeader() {
80         return additionalHeader;
81     }
82
83     final NetconfClientSessionListener getSessionListener() {
84         return sessionListener;
85     }
86
87     final ReconnectStrategy getReconnectStrategy() {
88         return reconnectStrategy;
89     }
90
91     final AuthenticationHandler getAuthHandler() {
92         return authHandler;
93     }
94
95     final NetconfClientConfiguration.NetconfClientProtocol getProtocol() {
96         return clientProtocol;
97     }
98
99     public NetconfClientConfiguration build() {
100         return new NetconfClientConfiguration(clientProtocol, address, connectionTimeoutMillis, additionalHeader, sessionListener, reconnectStrategy, authHandler);
101     }
102 }