/* * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.controller.netconf.client.conf; import java.net.InetSocketAddress; import org.opendaylight.controller.netconf.client.NetconfClientSessionListener; import org.opendaylight.controller.netconf.nettyutil.handler.ssh.authentication.AuthenticationHandler; import org.opendaylight.controller.netconf.util.messages.NetconfHelloMessageAdditionalHeader; import org.opendaylight.protocol.framework.ReconnectStrategy; public class NetconfClientConfigurationBuilder { public static final int DEFAULT_CONNECTION_TIMEOUT_MILLIS = 5000; public static final NetconfClientConfiguration.NetconfClientProtocol DEFAULT_CLIENT_PROTOCOL = NetconfClientConfiguration.NetconfClientProtocol.TCP; private InetSocketAddress address; private long connectionTimeoutMillis = DEFAULT_CONNECTION_TIMEOUT_MILLIS; private NetconfHelloMessageAdditionalHeader additionalHeader; private NetconfClientSessionListener sessionListener; private ReconnectStrategy reconnectStrategy; private AuthenticationHandler authHandler; private NetconfClientConfiguration.NetconfClientProtocol clientProtocol = DEFAULT_CLIENT_PROTOCOL; protected NetconfClientConfigurationBuilder() { } public static NetconfClientConfigurationBuilder create() { return new NetconfClientConfigurationBuilder(); } public NetconfClientConfigurationBuilder withAddress(final InetSocketAddress address) { this.address = address; return this; } public NetconfClientConfigurationBuilder withConnectionTimeoutMillis(final long connectionTimeoutMillis) { this.connectionTimeoutMillis = connectionTimeoutMillis; return this; } public NetconfClientConfigurationBuilder withProtocol(final NetconfClientConfiguration.NetconfClientProtocol clientProtocol) { this.clientProtocol = clientProtocol; return this; } public NetconfClientConfigurationBuilder withAdditionalHeader(final NetconfHelloMessageAdditionalHeader additionalHeader) { this.additionalHeader = additionalHeader; return this; } public NetconfClientConfigurationBuilder withSessionListener(final NetconfClientSessionListener sessionListener) { this.sessionListener = sessionListener; return this; } public NetconfClientConfigurationBuilder withReconnectStrategy(final ReconnectStrategy reconnectStrategy) { this.reconnectStrategy = reconnectStrategy; return this; } public NetconfClientConfigurationBuilder withAuthHandler(final AuthenticationHandler authHandler) { this.authHandler = authHandler; return this; } final InetSocketAddress getAddress() { return address; } final long getConnectionTimeoutMillis() { return connectionTimeoutMillis; } final NetconfHelloMessageAdditionalHeader getAdditionalHeader() { return additionalHeader; } final NetconfClientSessionListener getSessionListener() { return sessionListener; } final ReconnectStrategy getReconnectStrategy() { return reconnectStrategy; } final AuthenticationHandler getAuthHandler() { return authHandler; } final NetconfClientConfiguration.NetconfClientProtocol getProtocol() { return clientProtocol; } public NetconfClientConfiguration build() { return new NetconfClientConfiguration(clientProtocol, address, connectionTimeoutMillis, additionalHeader, sessionListener, reconnectStrategy, authHandler); } }