X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-dom-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fdom%2Fbroker%2FBrokerImpl.xtend;h=26fecef688d3cfc748bc1367a5a1e4e5a9d40ac1;hb=a8a5f3741b19fba443c0ee6bf0df663bf43ee034;hp=6b57cdc4db64c72990359c8a9dc9191f967debdd;hpb=4b1c94354c0396645effe64388bbefb653e29344;p=controller.git diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/BrokerImpl.xtend b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/BrokerImpl.xtend index 6b57cdc4db..26fecef688 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/BrokerImpl.xtend +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/BrokerImpl.xtend @@ -7,25 +7,28 @@ */ package org.opendaylight.controller.sal.dom.broker; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.Callable; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Future; -import org.opendaylight.controller.sal.core.api.Broker; -import org.opendaylight.controller.sal.core.api.BrokerService; -import org.opendaylight.controller.sal.core.api.Consumer; -import org.opendaylight.controller.sal.core.api.Provider; -import org.opendaylight.controller.sal.core.api.RpcImplementation; -import org.opendaylight.controller.sal.core.spi.BrokerModule; -import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.common.RpcResult; -import org.opendaylight.yangtools.yang.data.api.CompositeNode; -import org.osgi.framework.BundleContext; -import org.slf4j.LoggerFactory; +import java.util.Collections +import java.util.HashMap +import java.util.HashSet +import java.util.Map +import java.util.Set +import java.util.concurrent.Callable +import java.util.concurrent.ExecutorService +import java.util.concurrent.Executors +import java.util.concurrent.Future +import org.opendaylight.controller.sal.core.api.Broker +import org.opendaylight.controller.sal.core.api.BrokerService +import org.opendaylight.controller.sal.core.api.Consumer +import org.opendaylight.controller.sal.core.api.Provider +import org.opendaylight.controller.sal.core.spi.BrokerModule +import org.opendaylight.yangtools.yang.common.QName +import org.opendaylight.yangtools.yang.common.RpcResult +import org.opendaylight.yangtools.yang.data.api.CompositeNode +import org.osgi.framework.BundleContext +import org.slf4j.LoggerFactory +import org.opendaylight.controller.sal.dom.broker.spi.RpcRouter +import org.opendaylight.yangtools.concepts.ListenerRegistration +import org.opendaylight.controller.sal.core.api.RpcRegistrationListener public class BrokerImpl implements Broker { private static val log = LoggerFactory.getLogger(BrokerImpl); @@ -34,20 +37,16 @@ public class BrokerImpl implements Broker { private val Set sessions = Collections.synchronizedSet(new HashSet()); private val Set providerSessions = Collections.synchronizedSet( new HashSet()); - private val Set modules = Collections.synchronizedSet(new HashSet()); - private val Map, BrokerModule> serviceProviders = Collections. - synchronizedMap(new HashMap, BrokerModule>()); - - // RPC Context - private val Map rpcImpls = Collections.synchronizedMap( - new HashMap()); // Implementation specific @Property - private var ExecutorService executor; + private var ExecutorService executor = Executors.newFixedThreadPool(5); @Property private var BundleContext bundleContext; + @Property + private var RpcRouter router; + override registerConsumer(Consumer consumer, BundleContext ctx) { checkPredicates(consumer); log.info("Registering consumer " + consumer); @@ -66,67 +65,27 @@ public class BrokerImpl implements Broker { return session; } - public def addModule(BrokerModule module) { - log.info("Registering broker module " + module); - if(modules.contains(module)) { - log.error("Module already registered"); - throw new IllegalArgumentException("Module already exists."); - } - - val provServices = module.getProvidedServices(); - for (Class serviceType : provServices) { - log.info(" Registering session service implementation: " + serviceType.getCanonicalName()); - serviceProviders.put(serviceType, module); - } - } - - public def T serviceFor(Class service, ConsumerContextImpl session) { - val prov = serviceProviders.get(service); - if(prov == null) { - log.warn("Service " + service.toString() + " is not supported"); - return null; - } - return prov.getServiceForSession(service, session); - } - - // RPC Functionality - protected def void addRpcImplementation(QName rpcType, RpcImplementation implementation) { - if(rpcImpls.get(rpcType) != null) { - throw new IllegalStateException("Implementation for rpc " + rpcType + " is already registered."); - } - - //TODO: Add notification for availability of Rpc Implementation - rpcImpls.put(rpcType, implementation); - } - - protected def void removeRpcImplementation(QName rpcType, RpcImplementation implToRemove) { - if(implToRemove == rpcImpls.get(rpcType)) { - rpcImpls.remove(rpcType); - } - } - protected def Future> invokeRpc(QName rpc, CompositeNode input) { - val impl = rpcImpls.get(rpc); - val result = executor.submit([|impl.invokeRpc(rpc, input)] as Callable>); + val result = executor.submit([|router.invokeRpc(rpc, input)] as Callable>); return result; } // Validation private def void checkPredicates(Provider prov) { - if(prov == null) + if (prov == null) throw new IllegalArgumentException("Provider should not be null."); for (ProviderContextImpl session : providerSessions) { - if(prov.equals(session.getProvider())) + if (prov.equals(session.getProvider())) throw new IllegalStateException("Provider already registered"); } } private def void checkPredicates(Consumer cons) { - if(cons == null) + if (cons == null) throw new IllegalArgumentException("Consumer should not be null."); for (ConsumerContextImpl session : sessions) { - if(cons.equals(session.getConsumer())) + if (cons.equals(session.getConsumer())) throw new IllegalStateException("Consumer already registered"); } }