X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-dom-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fdom%2Fbroker%2FBrokerImpl.xtend;h=7ef594bad94cddd77db1136f6a2e9a311d4203e9;hp=855ad9bd328d19c79b30e09ba4e485e0d1918044;hb=a9e05354c351d3d88457892e28e2f01993d53142;hpb=7bc6403c0fe122ff37ef774f58c1ad2c7d714407 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 855ad9bd32..7ef594bad9 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 @@ -30,16 +30,13 @@ 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 { +public class BrokerImpl implements Broker, AutoCloseable { private static val log = LoggerFactory.getLogger(BrokerImpl); // Broker Generic Context 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>()); // Implementation specific @Property @@ -47,6 +44,9 @@ public class BrokerImpl implements Broker { @Property private var BundleContext bundleContext; + @Property + private var AutoCloseable deactivator; + @Property private var RpcRouter router; @@ -68,29 +68,6 @@ 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); - } - protected def Future> invokeRpc(QName rpc, CompositeNode input) { val result = executor.submit([|router.invokeRpc(rpc, input)] as Callable>); return result; @@ -98,20 +75,20 @@ public class BrokerImpl implements Broker { // 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"); } } @@ -133,4 +110,9 @@ public class BrokerImpl implements Broker { sessions.remove(consumerContextImpl); providerSessions.remove(consumerContextImpl); } + + override close() throws Exception { + deactivator?.close(); + } + }