/* * 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.topology.singleton.impl.utils; import akka.actor.ActorSystem; import io.netty.util.concurrent.EventExecutor; import org.opendaylight.controller.config.threadpool.ScheduledThreadPool; import org.opendaylight.controller.config.threadpool.ThreadPool; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.sal.binding.api.BindingAwareBroker; import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; import org.opendaylight.controller.sal.core.api.Broker; import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider; import org.opendaylight.netconf.client.NetconfClientDispatcher; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; public class NetconfTopologySetup { private final ClusterSingletonServiceProvider clusterSingletonServiceProvider; private final RpcProviderRegistry rpcProviderRegistry; private final DataBroker dataBroker; private final InstanceIdentifier instanceIdentifier; private final Node node; private final BindingAwareBroker bindingAwareBroker; private final ScheduledThreadPool keepaliveExecutor; private final ThreadPool processingExecutor; private final Broker domBroker; private final ActorSystem actorSystem; private final EventExecutor eventExecutor; private final NetconfClientDispatcher netconfClientDispatcher; private final String topologyId; private NetconfTopologySetup(final NetconfTopologySetupBuilder builder) { this.clusterSingletonServiceProvider = builder.getClusterSingletonServiceProvider(); this.rpcProviderRegistry = builder.getRpcProviderRegistry(); this.dataBroker = builder.getDataBroker(); this.instanceIdentifier = builder.getInstanceIdentifier(); this.node = builder.getNode(); this.bindingAwareBroker = builder.getBindingAwareBroker(); this.keepaliveExecutor = builder.getKeepaliveExecutor(); this.processingExecutor = builder.getProcessingExecutor(); this.domBroker = builder.getDomBroker(); this.actorSystem = builder.getActorSystem(); this.eventExecutor = builder.getEventExecutor(); this.netconfClientDispatcher = builder.getNetconfClientDispatcher(); this.topologyId = builder.getTopologyId(); } public ClusterSingletonServiceProvider getClusterSingletonServiceProvider() { return clusterSingletonServiceProvider; } public RpcProviderRegistry getRpcProviderRegistry() { return rpcProviderRegistry; } public DataBroker getDataBroker() { return dataBroker; } public InstanceIdentifier getInstanceIdentifier() { return instanceIdentifier; } public Node getNode() { return node; } public BindingAwareBroker getBindingAwareBroker() { return bindingAwareBroker; } public ThreadPool getProcessingExecutor() { return processingExecutor; } public ScheduledThreadPool getKeepaliveExecutor() { return keepaliveExecutor; } public Broker getDomBroker() { return domBroker; } public ActorSystem getActorSystem() { return actorSystem; } public EventExecutor getEventExecutor() { return eventExecutor; } public String getTopologyId() { return topologyId; } public NetconfClientDispatcher getNetconfClientDispatcher() { return netconfClientDispatcher; } public static class NetconfTopologySetupBuilder { private ClusterSingletonServiceProvider clusterSingletonServiceProvider; private RpcProviderRegistry rpcProviderRegistry; private DataBroker dataBroker; private InstanceIdentifier instanceIdentifier; private Node node; private BindingAwareBroker bindingAwareBroker; private ScheduledThreadPool keepaliveExecutor; private ThreadPool processingExecutor; private Broker domBroker; private ActorSystem actorSystem; private EventExecutor eventExecutor; private String topologyId; private NetconfClientDispatcher netconfClientDispatcher; public NetconfTopologySetupBuilder(){ } private ClusterSingletonServiceProvider getClusterSingletonServiceProvider() { return clusterSingletonServiceProvider; } public NetconfTopologySetupBuilder setClusterSingletonServiceProvider( final ClusterSingletonServiceProvider clusterSingletonServiceProvider) { this.clusterSingletonServiceProvider = clusterSingletonServiceProvider; return this; } private RpcProviderRegistry getRpcProviderRegistry() { return rpcProviderRegistry; } public NetconfTopologySetupBuilder setRpcProviderRegistry(final RpcProviderRegistry rpcProviderRegistry) { this.rpcProviderRegistry = rpcProviderRegistry; return this; } private DataBroker getDataBroker() { return dataBroker; } public NetconfTopologySetupBuilder setDataBroker(final DataBroker dataBroker) { this.dataBroker = dataBroker; return this; } private InstanceIdentifier getInstanceIdentifier() { return instanceIdentifier; } public NetconfTopologySetupBuilder setInstanceIdentifier(final InstanceIdentifier instanceIdentifier) { this.instanceIdentifier = instanceIdentifier; return this; } public Node getNode() { return node; } public NetconfTopologySetupBuilder setNode(final Node node) { this.node = node; return this; } public NetconfTopologySetup build() { return new NetconfTopologySetup(this); } private BindingAwareBroker getBindingAwareBroker() { return bindingAwareBroker; } public NetconfTopologySetupBuilder setBindingAwareBroker(BindingAwareBroker bindingAwareBroker) { this.bindingAwareBroker = bindingAwareBroker; return this; } private ScheduledThreadPool getKeepaliveExecutor() { return keepaliveExecutor; } public NetconfTopologySetupBuilder setKeepaliveExecutor(ScheduledThreadPool keepaliveExecutor) { this.keepaliveExecutor = keepaliveExecutor; return this; } private ThreadPool getProcessingExecutor() { return processingExecutor; } public NetconfTopologySetupBuilder setProcessingExecutor(ThreadPool processingExecutor) { this.processingExecutor = processingExecutor; return this; } private Broker getDomBroker() { return domBroker; } public NetconfTopologySetupBuilder setDomBroker(Broker domBroker) { this.domBroker = domBroker; return this; } private ActorSystem getActorSystem() { return actorSystem; } public NetconfTopologySetupBuilder setActorSystem(ActorSystem actorSystem) { this.actorSystem = actorSystem; return this; } private EventExecutor getEventExecutor() { return eventExecutor; } public NetconfTopologySetupBuilder setEventExecutor(EventExecutor eventExecutor) { this.eventExecutor = eventExecutor; return this; } private String getTopologyId() { return topologyId; } public NetconfTopologySetupBuilder setTopologyId(String topologyId) { this.topologyId = topologyId; return this; } private NetconfClientDispatcher getNetconfClientDispatcher() { return netconfClientDispatcher; } public NetconfTopologySetupBuilder setNetconfClientDispatcher(NetconfClientDispatcher clientDispatcher) { this.netconfClientDispatcher = clientDispatcher; return this; } public static NetconfTopologySetupBuilder create() { return new NetconfTopologySetupBuilder(); } } }