Prevent ConfigPusher from killing its thread
[controller.git] / opendaylight / md-sal / sal-binding-broker / src / main / java / org / opendaylight / controller / config / yang / md / sal / binding / impl / DataBrokerImplModule.java
1 /**\r
2  * Generated file\r
3 \r
4  * Generated from: yang module name: opendaylight-sal-binding-broker-impl  yang module local name: binding-data-broker\r
5  * Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator\r
6  * Generated at: Wed Nov 20 17:33:01 CET 2013\r
7  *\r
8  * Do not modify this file unless it is present under src/main directory\r
9  */\r
10 package org.opendaylight.controller.config.yang.md.sal.binding.impl;\r
11 \r
12 import java.util.concurrent.ExecutorService;\r
13 \r
14 import org.opendaylight.controller.sal.binding.codegen.impl.SingletonHolder;\r
15 import org.opendaylight.controller.sal.binding.impl.RootDataBrokerImpl;\r
16 import org.opendaylight.controller.sal.binding.impl.connect.dom.BindingDomConnectorDeployer;\r
17 import org.opendaylight.controller.sal.binding.impl.connect.dom.BindingIndependentConnector;\r
18 import org.opendaylight.controller.sal.binding.impl.forward.DomForwardedDataBrokerImpl;\r
19 import org.opendaylight.controller.sal.core.api.Broker.ProviderSession;\r
20 import org.opendaylight.yangtools.yang.data.impl.codec.BindingIndependentMappingService;\r
21 import org.osgi.framework.BundleContext;\r
22 import org.osgi.framework.ServiceReference;\r
23 \r
24 /**\r
25 *\r
26 */\r
27 public final class DataBrokerImplModule extends\r
28         org.opendaylight.controller.config.yang.md.sal.binding.impl.AbstractDataBrokerImplModule {\r
29 \r
30     private BundleContext bundleContext;\r
31 \r
32     public DataBrokerImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier,\r
33             org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {\r
34         super(identifier, dependencyResolver);\r
35     }\r
36 \r
37     public DataBrokerImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier,\r
38             org.opendaylight.controller.config.api.DependencyResolver dependencyResolver,\r
39             DataBrokerImplModule oldModule, java.lang.AutoCloseable oldInstance) {\r
40         super(identifier, dependencyResolver, oldModule, oldInstance);\r
41     }\r
42 \r
43     @Override\r
44     public void validate() {\r
45         super.validate();\r
46     }\r
47 \r
48     @Override\r
49     public java.lang.AutoCloseable createInstance() {\r
50         RootDataBrokerImpl dataBindingBroker;\r
51 \r
52 \r
53         ExecutorService listeningExecutor = SingletonHolder.getDefaultCommitExecutor();\r
54         BindingIndependentMappingService potentialMapping = resolveMappingServiceDependency();\r
55         if (getDomBrokerDependency() != null && potentialMapping != null) {\r
56 \r
57             dataBindingBroker = createDomConnectedBroker(listeningExecutor,potentialMapping);\r
58         } else {\r
59             dataBindingBroker = createStandAloneBroker(listeningExecutor);\r
60         }\r
61         dataBindingBroker.registerRuntimeBean(getRootRuntimeBeanRegistratorWrapper());\r
62 \r
63         return dataBindingBroker;\r
64     }\r
65     private BindingIndependentMappingService resolveMappingServiceDependency() {\r
66         if(getMappingService() != null) {\r
67             return getMappingServiceDependency();\r
68         }\r
69         \r
70         ServiceReference<BindingIndependentMappingService> potentialMappingService = bundleContext.getServiceReference(BindingIndependentMappingService.class);\r
71         if(potentialMappingService != null) {\r
72             return bundleContext.getService(potentialMappingService);\r
73         }\r
74         return null;\r
75     }\r
76 \r
77     private RootDataBrokerImpl createStandAloneBroker(ExecutorService listeningExecutor) {\r
78         RootDataBrokerImpl broker = new RootDataBrokerImpl();\r
79         broker.setExecutor(listeningExecutor);\r
80         return broker;\r
81     }\r
82 \r
83     private RootDataBrokerImpl createDomConnectedBroker(ExecutorService listeningExecutor, BindingIndependentMappingService mappingService) {\r
84         DomForwardedDataBrokerImpl forwardedBroker = new DomForwardedDataBrokerImpl();\r
85         forwardedBroker.setExecutor(listeningExecutor);\r
86         BindingIndependentConnector connector = BindingDomConnectorDeployer.createConnector(mappingService);\r
87         getDomBrokerDependency().registerProvider(forwardedBroker, getBundleContext());\r
88         ProviderSession domContext = forwardedBroker.getDomProviderContext();\r
89         forwardedBroker.setConnector(connector);\r
90         forwardedBroker.setDomProviderContext(domContext);\r
91         forwardedBroker.startForwarding();\r
92         return forwardedBroker;\r
93     }\r
94 \r
95     public BundleContext getBundleContext() {\r
96         return bundleContext;\r
97     }\r
98 \r
99     public void setBundleContext(BundleContext bundleContext2) {\r
100         this.bundleContext = bundleContext2;\r
101     }\r
102 }\r