Extract dom-serializer-api|impl from binding-broker-impl
[controller.git] / opendaylight / md-sal / sal-binding-broker / src / main / java / org / opendaylight / controller / config / yang / md / sal / binding / impl / DataBrokerImplModule.java
index 185b37bab53a2789763979525f9455e73aaee8d3..0ae43365712feaa09e428756d19222d1411f1da8 100644 (file)
 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
@@ -57,13 +48,13 @@ public final class DataBrokerImplModule extends
     @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
@@ -71,16 +62,28 @@ public final class DataBrokerImplModule extends
 \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