/* * Copyright (c) 2016 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.netconf.impl; import com.google.common.base.Preconditions; import io.netty.util.Timer; import java.util.Set; import org.opendaylight.netconf.api.monitoring.NetconfMonitoringService; import org.opendaylight.netconf.mapping.api.NetconfOperationServiceFactory; public class NetconfServerSessionNegotiatorFactoryBuilder { private Timer timer; private SessionIdProvider idProvider; private NetconfOperationServiceFactory aggregatedOpService; private long connectionTimeoutMillis; private NetconfMonitoringService monitoringService; private Set baseCapabilities; public NetconfServerSessionNegotiatorFactoryBuilder() { } public NetconfServerSessionNegotiatorFactoryBuilder setTimer(final Timer timer) { this.timer = timer; return this; } public NetconfServerSessionNegotiatorFactoryBuilder setIdProvider(final SessionIdProvider idProvider) { this.idProvider = idProvider; return this; } public NetconfServerSessionNegotiatorFactoryBuilder setAggregatedOpService( final NetconfOperationServiceFactory aggregatedOpService) { this.aggregatedOpService = aggregatedOpService; return this; } public NetconfServerSessionNegotiatorFactoryBuilder setConnectionTimeoutMillis(final long connectionTimeoutMillis) { this.connectionTimeoutMillis = connectionTimeoutMillis; return this; } public NetconfServerSessionNegotiatorFactoryBuilder setMonitoringService( final NetconfMonitoringService monitoringService) { this.monitoringService = monitoringService; return this; } public NetconfServerSessionNegotiatorFactoryBuilder setBaseCapabilities(final Set baseCapabilities) { this.baseCapabilities = baseCapabilities; return this; } public NetconfServerSessionNegotiatorFactory build() { validate(); return new NetconfServerSessionNegotiatorFactory(timer, aggregatedOpService, idProvider, connectionTimeoutMillis, monitoringService, baseCapabilities); } private void validate() { Preconditions.checkNotNull(timer, "timer not initialized"); Preconditions.checkNotNull(aggregatedOpService, "NetconfOperationServiceFactory not initialized"); Preconditions.checkNotNull(idProvider, "SessionIdProvider not initialized"); Preconditions.checkArgument(connectionTimeoutMillis > 0, "connection time out <=0"); Preconditions.checkNotNull(monitoringService, "NetconfMonitoringService not initialized"); baseCapabilities = (baseCapabilities == null) ? NetconfServerSessionNegotiatorFactory .DEFAULT_BASE_CAPABILITIES : baseCapabilities; } }