package org.opendaylight.controller.config.yang.md.sal.binding.impl;\r
\r
import java.util.concurrent.ExecutorService;\r
-import java.util.concurrent.Executors;\r
-import java.util.concurrent.ScheduledExecutorService;\r
\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
+import org.opendaylight.yangtools.yang.data.impl.codec.BindingIndependentMappingService;\r
import org.osgi.framework.BundleContext;\r
-\r
-import com.google.common.util.concurrent.MoreExecutors;\r
+import org.osgi.framework.ServiceReference;\r
\r
/**\r
*\r
@Override\r
public java.lang.AutoCloseable createInstance() {\r
RootDataBrokerImpl dataBindingBroker;\r
- \r
- \r
+\r
+\r
ExecutorService listeningExecutor = SingletonHolder.getDefaultCommitExecutor();\r
- \r
- if (getDomBrokerDependency() != null && getMappingServiceDependency() != null) {\r
- \r
- dataBindingBroker = createDomConnectedBroker(listeningExecutor);\r
+ BindingIndependentMappingService potentialMapping = resolveMappingServiceDependency();\r
+ if (getDomBrokerDependency() != null && potentialMapping != null) {\r
+\r
+ dataBindingBroker = createDomConnectedBroker(listeningExecutor,potentialMapping);\r
} else {\r
dataBindingBroker = createStandAloneBroker(listeningExecutor);\r
}\r
\r
return dataBindingBroker;\r
}\r
+ private BindingIndependentMappingService resolveMappingServiceDependency() {\r
+ if(getMappingService() != null) {\r
+ return getMappingServiceDependency();\r
+ }\r
+ \r
+ ServiceReference<BindingIndependentMappingService> potentialMappingService = bundleContext.getServiceReference(BindingIndependentMappingService.class);\r
+ if(potentialMappingService != null) {\r
+ return bundleContext.getService(potentialMappingService);\r
+ }\r
+ return null;\r
+ }\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
+ private RootDataBrokerImpl createDomConnectedBroker(ExecutorService listeningExecutor, BindingIndependentMappingService mappingService) {\r
DomForwardedDataBrokerImpl forwardedBroker = new DomForwardedDataBrokerImpl();\r
forwardedBroker.setExecutor(listeningExecutor);\r
- BindingIndependentConnector connector = BindingDomConnectorDeployer.createConnector(getMappingServiceDependency());\r
+ BindingIndependentConnector connector = BindingDomConnectorDeployer.createConnector(mappingService);\r
getDomBrokerDependency().registerProvider(forwardedBroker, getBundleContext());\r
ProviderSession domContext = forwardedBroker.getDomProviderContext();\r
forwardedBroker.setConnector(connector);\r