BUG-693 Config module for netconf client dispatcher.
[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 org.opendaylight.controller.netconf.client.NetconfClientSessionListener;
11 import org.opendaylight.controller.netconf.util.handler.ssh.authentication.AuthenticationHandler;
12 import org.opendaylight.controller.netconf.util.messages.NetconfHelloMessageAdditionalHeader;
13 import org.opendaylight.protocol.framework.ReconnectStrategy;
14
15 import java.net.InetSocketAddress;
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 = 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(final NetconfClientConfiguration.NetconfClientProtocol clientProtocol) {
48         this.clientProtocol = clientProtocol;
49         return this;
50     }
51
52     public NetconfClientConfigurationBuilder withAdditionalHeader(final NetconfHelloMessageAdditionalHeader additionalHeader) {
53         this.additionalHeader = additionalHeader;
54         return this;
55     }
56
57     public NetconfClientConfigurationBuilder withSessionListener(final NetconfClientSessionListener sessionListener) {
58         this.sessionListener = sessionListener;
59         return this;
60     }
61
62     public NetconfClientConfigurationBuilder withReconnectStrategy(final ReconnectStrategy reconnectStrategy) {
63         this.reconnectStrategy = reconnectStrategy;
64         return this;
65     }
66
67     public NetconfClientConfigurationBuilder withAuthHandler(final AuthenticationHandler authHandler) {
68         this.authHandler = authHandler;
69         return this;
70     }
71
72     final InetSocketAddress getAddress() {
73         return address;
74     }
75
76     final long getConnectionTimeoutMillis() {
77         return connectionTimeoutMillis;
78     }
79
80     final NetconfHelloMessageAdditionalHeader getAdditionalHeader() {
81         return additionalHeader;
82     }
83
84     final NetconfClientSessionListener getSessionListener() {
85         return sessionListener;
86     }
87
88     final ReconnectStrategy getReconnectStrategy() {
89         return reconnectStrategy;
90     }
91
92     final AuthenticationHandler getAuthHandler() {
93         return authHandler;
94     }
95
96     final NetconfClientConfiguration.NetconfClientProtocol getProtocol() {
97         return clientProtocol;
98     }
99
100     public NetconfClientConfiguration build() {
101         return new NetconfClientConfiguration(clientProtocol, address, connectionTimeoutMillis, additionalHeader, sessionListener, reconnectStrategy, authHandler);
102     }
103 }