import java.util.concurrent.Executors;\r
import java.util.concurrent.ScheduledExecutorService;\r
\r
-import org.opendaylight.controller.config.yang.md.sal.binding.statistics.DataBrokerRuntimeMXBeanImpl;\r
import org.opendaylight.controller.md.sal.common.impl.routing.AbstractDataReadRouter;\r
+import org.opendaylight.controller.sal.binding.codegen.impl.SingletonHolder;\r
import org.opendaylight.controller.sal.binding.impl.DataBrokerImpl;\r
+import org.opendaylight.controller.sal.binding.impl.RootDataBrokerImpl;\r
+import org.opendaylight.controller.sal.binding.impl.connect.dom.BindingDomConnectorDeployer;\r
import org.opendaylight.controller.sal.binding.impl.connect.dom.BindingIndependentConnector;\r
import org.opendaylight.controller.sal.binding.impl.connect.dom.BindingIndependentMappingService;\r
+import org.opendaylight.controller.sal.binding.impl.forward.DomForwardedDataBrokerImpl;\r
import org.opendaylight.controller.sal.core.api.Broker;\r
+import org.opendaylight.controller.sal.core.api.Broker.ProviderSession;\r
import org.opendaylight.controller.sal.core.api.data.DataProviderService;\r
import org.opendaylight.yangtools.yang.binding.DataObject;\r
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
\r
@Override\r
public java.lang.AutoCloseable createInstance() {\r
- DataBrokerRuntimeMXBeanImpl dataBindingBroker = new DataBrokerRuntimeMXBeanImpl();\r
+ RootDataBrokerImpl dataBindingBroker;\r
\r
- // FIXME: obtain via dependency management\r
- ExecutorService executor = Executors.newCachedThreadPool();\r
- ExecutorService listeningExecutor = MoreExecutors.listeningDecorator(executor);\r
- dataBindingBroker.setExecutor(listeningExecutor);\r
-\r
- Broker domBroker = getDomBrokerDependency();\r
- BindingIndependentMappingService mappingService = getMappingServiceDependency();\r
\r
- if (domBroker != null && mappingService != null) {\r
- BindingIndependentConnector runtimeMapping = new BindingIndependentConnector();\r
- runtimeMapping.setMappingService(mappingService);\r
- runtimeMapping.setBaDataService(dataBindingBroker);\r
- domBroker.registerProvider(runtimeMapping, getBundleContext());\r
+ ExecutorService listeningExecutor = SingletonHolder.getDefaultCommitExecutor();\r
+ \r
+ if (getDomBrokerDependency() != null && getMappingServiceDependency() != null) {\r
+ \r
+ dataBindingBroker = createDomConnectedBroker(listeningExecutor);\r
+ } else {\r
+ dataBindingBroker = createStandAloneBroker(listeningExecutor);\r
}\r
- getRootRuntimeBeanRegistratorWrapper().register(dataBindingBroker);\r
+ dataBindingBroker.registerRuntimeBean(getRootRuntimeBeanRegistratorWrapper());\r
+\r
return dataBindingBroker;\r
}\r
+ private RootDataBrokerImpl createStandAloneBroker(ExecutorService listeningExecutor) {\r
+ RootDataBrokerImpl broker = new RootDataBrokerImpl();\r
+ broker.setExecutor(listeningExecutor);\r
+ return broker;\r
+ }\r
+\r
+ private RootDataBrokerImpl createDomConnectedBroker(ExecutorService listeningExecutor) {\r
+ DomForwardedDataBrokerImpl forwardedBroker = new DomForwardedDataBrokerImpl();\r
+ forwardedBroker.setExecutor(listeningExecutor);\r
+ BindingIndependentConnector connector = BindingDomConnectorDeployer.createConnector(getMappingServiceDependency());\r
+ getDomBrokerDependency().registerProvider(forwardedBroker, getBundleContext());\r
+ ProviderSession domContext = forwardedBroker.getDomProviderContext();\r
+ forwardedBroker.setConnector(connector);\r
+ forwardedBroker.setDomProviderContext(domContext);\r
+ forwardedBroker.startForwarding();\r
+ return forwardedBroker;\r
+ }\r
\r
public BundleContext getBundleContext() {\r
return bundleContext;\r