2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.controller.config.yang.md.sal.binding.impl;
\r
10 import java.util.concurrent.ExecutorService;
12 import org.opendaylight.controller.sal.binding.codegen.impl.SingletonHolder;
13 import org.opendaylight.controller.sal.binding.impl.RootDataBrokerImpl;
14 import org.opendaylight.controller.sal.binding.impl.connect.dom.BindingDomConnectorDeployer;
15 import org.opendaylight.controller.sal.binding.impl.connect.dom.BindingIndependentConnector;
16 import org.opendaylight.controller.sal.binding.impl.forward.DomForwardedDataBrokerImpl;
17 import org.opendaylight.controller.sal.core.api.Broker.ProviderSession;
18 import org.opendaylight.yangtools.yang.data.impl.codec.BindingIndependentMappingService;
19 import org.osgi.framework.BundleContext;
20 import org.osgi.framework.ServiceReference;
25 public final class DataBrokerImplModule extends
\r
26 org.opendaylight.controller.config.yang.md.sal.binding.impl.AbstractDataBrokerImplModule {
\r
28 private BundleContext bundleContext;
\r
30 public DataBrokerImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier,
\r
31 org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
\r
32 super(identifier, dependencyResolver);
\r
35 public DataBrokerImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier,
\r
36 org.opendaylight.controller.config.api.DependencyResolver dependencyResolver,
\r
37 DataBrokerImplModule oldModule, java.lang.AutoCloseable oldInstance) {
\r
38 super(identifier, dependencyResolver, oldModule, oldInstance);
\r
42 public void validate() {
\r
47 public java.lang.AutoCloseable createInstance() {
\r
48 RootDataBrokerImpl dataBindingBroker;
\r
51 ExecutorService listeningExecutor = SingletonHolder.getDefaultCommitExecutor();
\r
52 BindingIndependentMappingService potentialMapping = resolveMappingServiceDependency();
\r
53 if (getDomBrokerDependency() != null && potentialMapping != null) {
\r
55 dataBindingBroker = createDomConnectedBroker(listeningExecutor,potentialMapping);
\r
57 dataBindingBroker = createStandAloneBroker(listeningExecutor);
\r
59 dataBindingBroker.registerRuntimeBean(getRootRuntimeBeanRegistratorWrapper());
\r
60 dataBindingBroker.setNotificationExecutor(SingletonHolder.getDefaultChangeEventExecutor());
\r
61 return dataBindingBroker;
\r
63 private BindingIndependentMappingService resolveMappingServiceDependency() {
\r
64 if(getMappingService() != null) {
\r
65 return getMappingServiceDependency();
\r
68 ServiceReference<BindingIndependentMappingService> potentialMappingService = bundleContext.getServiceReference(BindingIndependentMappingService.class);
\r
69 if(potentialMappingService != null) {
\r
70 return bundleContext.getService(potentialMappingService);
\r
75 private RootDataBrokerImpl createStandAloneBroker(ExecutorService listeningExecutor) {
\r
76 RootDataBrokerImpl broker = new RootDataBrokerImpl();
\r
77 broker.setExecutor(listeningExecutor);
\r
81 private RootDataBrokerImpl createDomConnectedBroker(ExecutorService listeningExecutor, BindingIndependentMappingService mappingService) {
\r
82 DomForwardedDataBrokerImpl forwardedBroker = new DomForwardedDataBrokerImpl();
\r
83 forwardedBroker.setExecutor(listeningExecutor);
\r
84 BindingIndependentConnector connector = BindingDomConnectorDeployer.createConnector(mappingService);
\r
85 getDomBrokerDependency().registerProvider(forwardedBroker, getBundleContext());
\r
86 ProviderSession domContext = forwardedBroker.getDomProviderContext();
\r
87 forwardedBroker.setConnector(connector);
\r
88 forwardedBroker.setDomProviderContext(domContext);
\r
89 forwardedBroker.startForwarding();
\r
90 return forwardedBroker;
\r
93 public BundleContext getBundleContext() {
\r
94 return bundleContext;
\r
97 public void setBundleContext(BundleContext bundleContext2) {
\r
98 this.bundleContext = bundleContext2;
\r