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%2Fconfig%2Fyang%2Fmd%2Fsal%2Fdom%2Fimpl%2FDomBrokerImplModule.java;h=35c22a1bee122d31b67bcd700c571b5f283ffc95;hb=refs%2Fchanges%2F30%2F16630%2F12;hp=f4d642f82d1e9cf54bd5c89c71f8640dab7bf148;hpb=4c1e9ed9fa2386ca63a0bbf11da620c83a6d7d5e;p=controller.git diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/config/yang/md/sal/dom/impl/DomBrokerImplModule.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/config/yang/md/sal/dom/impl/DomBrokerImplModule.java index f4d642f82d..35c22a1bee 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/config/yang/md/sal/dom/impl/DomBrokerImplModule.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/config/yang/md/sal/dom/impl/DomBrokerImplModule.java @@ -7,13 +7,21 @@ */ package org.opendaylight.controller.config.yang.md.sal.dom.impl; -import org.opendaylight.controller.config.yang.md.sal.dom.statistics.DomBrokerRuntimeMXBeanImpl; -import org.opendaylight.controller.sal.core.api.data.DataStore; -import org.opendaylight.controller.sal.dom.broker.BrokerConfigActivator; +import com.google.common.collect.ClassToInstanceMap; +import com.google.common.collect.MutableClassToInstanceMap; +import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; +import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; +import org.opendaylight.controller.md.sal.dom.api.DOMNotificationPublishService; +import org.opendaylight.controller.md.sal.dom.api.DOMNotificationService; +import org.opendaylight.controller.md.sal.dom.api.DOMRpcProviderService; +import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; +import org.opendaylight.controller.md.sal.dom.broker.impl.DOMNotificationRouter; +import org.opendaylight.controller.md.sal.dom.broker.impl.DOMRpcRouter; +import org.opendaylight.controller.md.sal.dom.broker.impl.mount.DOMMountPointServiceImpl; +import org.opendaylight.controller.sal.core.api.BrokerService; +import org.opendaylight.controller.sal.core.api.model.SchemaService; import org.opendaylight.controller.sal.dom.broker.BrokerImpl; -import org.osgi.framework.BundleContext; - -import static com.google.common.base.Preconditions.*; +import org.opendaylight.controller.sal.dom.broker.GlobalBundleScanningSchemaServiceImpl; /** * @@ -21,39 +29,55 @@ import static com.google.common.base.Preconditions.*; public final class DomBrokerImplModule extends org.opendaylight.controller.config.yang.md.sal.dom.impl.AbstractDomBrokerImplModule { - private BundleContext bundleContext; - - public DomBrokerImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { + public DomBrokerImplModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { super(identifier, dependencyResolver); } - public DomBrokerImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, DomBrokerImplModule oldModule, java.lang.AutoCloseable oldInstance) { + public DomBrokerImplModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, final DomBrokerImplModule oldModule, final java.lang.AutoCloseable oldInstance) { super(identifier, dependencyResolver, oldModule, oldInstance); } @Override public void validate(){ super.validate(); - checkArgument(getDataStore() != null, "Data Store needs to be provided for DomBroker"); } - + @Override public java.lang.AutoCloseable createInstance() { - final BrokerImpl broker = new BrokerImpl(); - final BrokerConfigActivator activator = new BrokerConfigActivator(); - final DataStore store = getDataStoreDependency(); - activator.start(broker, store, getBundleContext()); - - final DomBrokerImplRuntimeMXBean domBrokerRuntimeMXBean = new DomBrokerRuntimeMXBeanImpl(activator.getDataService()); - getRootRuntimeBeanRegistratorWrapper().register(domBrokerRuntimeMXBean); - return broker; - } + final DOMDataBroker asyncBroker= getAsyncDataBrokerDependency(); + + final ClassToInstanceMap services = MutableClassToInstanceMap.create(); + + // TODO: retrieve from config subsystem + final int queueDepth = 1024; + + final DOMNotificationRouter domNotificationRouter = DOMNotificationRouter.create(queueDepth); + services.putInstance(DOMNotificationService.class, domNotificationRouter); + services.putInstance(DOMNotificationPublishService.class, domNotificationRouter); + + final SchemaService schemaService = getSchemaServiceImpl(); + services.putInstance(SchemaService.class, schemaService); + + services.putInstance(DOMDataBroker.class, asyncBroker); + + final DOMRpcRouter rpcRouter = new DOMRpcRouter(); + schemaService.registerSchemaContextListener(rpcRouter); + services.putInstance(DOMRpcService.class, rpcRouter); + services.putInstance(DOMRpcProviderService.class, rpcRouter); + + final DOMMountPointService mountService = new DOMMountPointServiceImpl(); + services.putInstance(DOMMountPointService.class, mountService); - private BundleContext getBundleContext() { - return this.bundleContext; + return new BrokerImpl(rpcRouter, services); } - public void setBundleContext(BundleContext bundleContext) { - this.bundleContext = bundleContext; + private SchemaService getSchemaServiceImpl() { + final SchemaService schemaService; + if(getRootSchemaService() != null) { + schemaService = getRootSchemaServiceDependency(); + } else { + schemaService = GlobalBundleScanningSchemaServiceImpl.getInstance(); + } + return schemaService; } }