c430fa41a487f1c93c4fd2379726caf733fa7b8c
[netconf.git] / netconf / netconf-client / src / main / java / org / opendaylight / netconf / client / conf / NetconfReconnectingClientConfigurationBuilder.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 java.util.List;
12 import org.opendaylight.netconf.api.messages.NetconfHelloMessageAdditionalHeader;
13 import org.opendaylight.netconf.client.NetconfClientSessionListener;
14 import org.opendaylight.netconf.client.SslHandlerFactory;
15 import org.opendaylight.netconf.nettyutil.ReconnectStrategy;
16 import org.opendaylight.netconf.nettyutil.ReconnectStrategyFactory;
17 import org.opendaylight.netconf.nettyutil.handler.ssh.authentication.AuthenticationHandler;
18 import org.opendaylight.netconf.nettyutil.handler.ssh.client.NetconfSshClient;
19 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
20
21 public final class NetconfReconnectingClientConfigurationBuilder extends NetconfClientConfigurationBuilder {
22
23     private ReconnectStrategyFactory connectStrategyFactory;
24
25     private NetconfReconnectingClientConfigurationBuilder() {
26     }
27
28     public static NetconfReconnectingClientConfigurationBuilder create() {
29         return new NetconfReconnectingClientConfigurationBuilder();
30     }
31
32     @SuppressWarnings("checkstyle:hiddenField")
33     public NetconfReconnectingClientConfigurationBuilder withConnectStrategyFactory(
34             final ReconnectStrategyFactory connectStrategyFactory) {
35         this.connectStrategyFactory = connectStrategyFactory;
36         return this;
37     }
38
39     @Override
40     public NetconfReconnectingClientConfiguration build() {
41         return new NetconfReconnectingClientConfiguration(getProtocol(), getAddress(), getConnectionTimeoutMillis(),
42                 getAdditionalHeader(), getSessionListener(), getReconnectStrategy(), connectStrategyFactory,
43                 getAuthHandler(), getSslHandlerFactory(), getSshClient(), getOdlHelloCapabilities());
44     }
45
46     // Override setter methods to return subtype
47
48     @Override
49     public NetconfReconnectingClientConfigurationBuilder withAddress(final InetSocketAddress address) {
50         return (NetconfReconnectingClientConfigurationBuilder) super.withAddress(address);
51     }
52
53     @Override
54     public NetconfReconnectingClientConfigurationBuilder withConnectionTimeoutMillis(
55             final long connectionTimeoutMillis) {
56         return (NetconfReconnectingClientConfigurationBuilder)
57                 super.withConnectionTimeoutMillis(connectionTimeoutMillis);
58     }
59
60     @Override
61     public NetconfReconnectingClientConfigurationBuilder withAdditionalHeader(
62             final NetconfHelloMessageAdditionalHeader additionalHeader) {
63         return (NetconfReconnectingClientConfigurationBuilder) super.withAdditionalHeader(additionalHeader);
64     }
65
66     @Override
67     public NetconfReconnectingClientConfigurationBuilder withSessionListener(
68             final NetconfClientSessionListener sessionListener) {
69         return (NetconfReconnectingClientConfigurationBuilder) super.withSessionListener(sessionListener);
70     }
71
72     @Override
73     public NetconfReconnectingClientConfigurationBuilder withReconnectStrategy(
74             final ReconnectStrategy reconnectStrategy) {
75         return (NetconfReconnectingClientConfigurationBuilder) super.withReconnectStrategy(reconnectStrategy);
76     }
77
78     @Override
79     public NetconfReconnectingClientConfigurationBuilder withAuthHandler(final AuthenticationHandler authHandler) {
80         return (NetconfReconnectingClientConfigurationBuilder) super.withAuthHandler(authHandler);
81     }
82
83     @Override
84     public NetconfReconnectingClientConfigurationBuilder withProtocol(
85             NetconfClientConfiguration.NetconfClientProtocol clientProtocol) {
86         return (NetconfReconnectingClientConfigurationBuilder) super.withProtocol(clientProtocol);
87     }
88
89     @Override
90     public NetconfReconnectingClientConfigurationBuilder withSslHandlerFactory(
91             final SslHandlerFactory sslHandlerFactory) {
92         return (NetconfReconnectingClientConfigurationBuilder) super.withSslHandlerFactory(sslHandlerFactory);
93     }
94
95     @Override
96     public NetconfReconnectingClientConfigurationBuilder withSshClient(
97         final NetconfSshClient sshClient) {
98         return (NetconfReconnectingClientConfigurationBuilder) super.withSshClient(sshClient);
99     }
100
101     @Override
102     public NetconfReconnectingClientConfigurationBuilder withOdlHelloCapabilities(List<Uri> odlHelloCapabilities) {
103         return (NetconfReconnectingClientConfigurationBuilder) super.withOdlHelloCapabilities(odlHelloCapabilities);
104     }
105 }