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%2Fconfig%2Fyang%2Fmd%2Fsal%2Fdom%2Fimpl%2FDomBrokerImplModule.java;h=998d884b0cde71cd2fe774352229a61afd98761d;hp=9a2a90445e0ad1f72d37fc11b4308b0a74452ae8;hb=1f6daaf007e78df276604baa4c515a50037a649d;hpb=eff404d4edd10fcde6d85c5821c80263339d9a4a 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 9a2a90445e..998d884b0c 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 @@ -1,21 +1,33 @@ -/** -* Generated file - -* Generated from: yang module name: opendaylight-sal-dom-broker-impl yang module local name: dom-broker-impl -* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator -* Generated at: Wed Nov 20 17:04:41 CET 2013 -* -* Do not modify this file unless it is present under src/main directory -*/ +/* + * Copyright (c) 2014 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.controller.config.yang.md.sal.dom.impl; -import org.opendaylight.controller.config.yang.md.sal.dom.statistics.DomBrokerRuntimeMXBeanImpl; +import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; +import org.opendaylight.controller.md.sal.dom.broker.impl.compat.BackwardsCompatibleDataBroker; +import org.opendaylight.controller.sal.core.api.BrokerService; +import org.opendaylight.controller.sal.core.api.RpcProvisionRegistry; +import org.opendaylight.controller.sal.core.api.data.DataBrokerService; +import org.opendaylight.controller.sal.core.api.data.DataProviderService; import org.opendaylight.controller.sal.core.api.data.DataStore; -import org.opendaylight.controller.sal.dom.broker.BrokerConfigActivator; +import org.opendaylight.controller.sal.core.api.model.SchemaService; +import org.opendaylight.controller.sal.core.api.mount.MountProvisionService; +import org.opendaylight.controller.sal.core.api.mount.MountService; import org.opendaylight.controller.sal.dom.broker.BrokerImpl; -import org.osgi.framework.BundleContext; +import org.opendaylight.controller.sal.dom.broker.DataBrokerImpl; +import org.opendaylight.controller.sal.dom.broker.GlobalBundleScanningSchemaServiceImpl; +import org.opendaylight.controller.sal.dom.broker.MountPointManagerImpl; +import org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareDataStoreAdapter; +import org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareRpcBroker; +import org.opendaylight.controller.sal.dom.broker.impl.SchemaContextProviders; +import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; -import static com.google.common.base.Preconditions.*; +import com.google.common.collect.ClassToInstanceMap; +import com.google.common.collect.MutableClassToInstanceMap; /** * @@ -23,39 +35,73 @@ 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 DataStore legacyStore = getDataStoreDependency(); + final DOMDataBroker asyncBroker= getAsyncDataBrokerDependency(); + + ClassToInstanceMap services = MutableClassToInstanceMap.create(); + + + SchemaService schemaService = getSchemaServiceImpl(); + services.putInstance(SchemaService.class, schemaService); + SchemaAwareRpcBroker router = new SchemaAwareRpcBroker("/", SchemaContextProviders + .fromSchemaService(schemaService)); + services.putInstance(RpcProvisionRegistry.class, router); + + final DataProviderService legacyData; + if(asyncBroker != null) { + services.putInstance(DOMDataBroker.class, asyncBroker); + legacyData = new BackwardsCompatibleDataBroker(asyncBroker,schemaService); + } else { + legacyData = createLegacyDataService(legacyStore,schemaService); + } + services.putInstance(DataProviderService.class,legacyData); + services.putInstance(DataBrokerService.class, legacyData); + + + MountPointManagerImpl mountService = new MountPointManagerImpl(); + services.putInstance(MountService.class, mountService); + services.putInstance(MountProvisionService.class, mountService); + + return new BrokerImpl(router, services); } - private BundleContext getBundleContext() { - return this.bundleContext; + private DataProviderService createLegacyDataService(final DataStore legacyStore, final SchemaService schemaService) { + InstanceIdentifier rootPath = InstanceIdentifier.builder().toInstance(); + DataBrokerImpl dataService = new DataBrokerImpl(); + SchemaAwareDataStoreAdapter wrappedStore = new SchemaAwareDataStoreAdapter(); + wrappedStore.changeDelegate(legacyStore); + wrappedStore.setValidationEnabled(false); + + schemaService.registerSchemaServiceListener(wrappedStore); + + dataService.registerConfigurationReader(rootPath, wrappedStore); + dataService.registerCommitHandler(rootPath, wrappedStore); + dataService.registerOperationalReader(rootPath, wrappedStore); + return dataService; } - 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; } }