Bug 865: Changed Config subsystem module for ForwardedBindingDataBroker.
authorTony Tkacik <ttkacik@cisco.com>
Thu, 20 Nov 2014 16:49:47 +0000 (17:49 +0100)
committerTony Tkacik <ttkacik@cisco.com>
Fri, 21 Nov 2014 13:02:49 +0000 (13:02 +0000)
Implementation of new Bidning Data Broker was wired to deprecated APIs
and used broker to discover dependencies which did not allowed for
full-fledged customized wiring. Reworked configuration to explicitly
allow injection of each required depenency and to not use
deprecated APIs for dependency injection.

Change-Id: Iccbb20ee4bb1df380f5fc4a3a1bbc5748dcc5a38
Signed-off-by: Tony Tkacik <ttkacik@cisco.com>
opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/config/yang/md/sal/binding/impl/BindingAsyncDataBrokerImplModule.java
opendaylight/md-sal/sal-binding-broker/src/main/yang/opendaylight-binding-broker-impl.yang

index 93d99c832fcc2bbffe5a7c5f851fe2fec2ef7558..d0d68218c04635bc6835bdca9f5bb84a33a4f38c 100644 (file)
@@ -1,18 +1,12 @@
 package org.opendaylight.controller.config.yang.md.sal.binding.impl;
 
-import java.util.Collection;
-import java.util.Collections;
 import org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec;
 import org.opendaylight.controller.md.sal.binding.impl.ForwardedBindingDataBroker;
 import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
-import org.opendaylight.controller.sal.core.api.Broker;
-import org.opendaylight.controller.sal.core.api.Broker.ProviderSession;
-import org.opendaylight.controller.sal.core.api.Provider;
 import org.opendaylight.controller.sal.core.api.model.SchemaService;
 
 public class BindingAsyncDataBrokerImplModule extends
-        org.opendaylight.controller.config.yang.md.sal.binding.impl.AbstractBindingAsyncDataBrokerImplModule implements
-        Provider {
+        org.opendaylight.controller.config.yang.md.sal.binding.impl.AbstractBindingAsyncDataBrokerImplModule {
 
     public BindingAsyncDataBrokerImplModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier,
             final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
@@ -34,29 +28,10 @@ public class BindingAsyncDataBrokerImplModule extends
 
     @Override
     public java.lang.AutoCloseable createInstance() {
-        Broker domBroker = getDomAsyncBrokerDependency();
-        BindingToNormalizedNodeCodec mappingService = getBindingMappingServiceDependency();
-
-        // FIXME: Switch this to DOM Broker registration which would not require
-        // BundleContext when API are updated.
-        ProviderSession session = domBroker.registerProvider(this, null);
-        DOMDataBroker domDataBroker = session.getService(DOMDataBroker.class);
-        SchemaService schemaService = session.getService(SchemaService.class);
+        final BindingToNormalizedNodeCodec mappingService = getBindingMappingServiceDependency();
+        final DOMDataBroker domDataBroker = getDomAsyncBrokerDependency();
+        final SchemaService schemaService = getSchemaServiceDependency();
         return new ForwardedBindingDataBroker(domDataBroker, mappingService, schemaService);
     }
 
-
-
-
-
-    @Override
-    public Collection<ProviderFunctionality> getProviderFunctionality() {
-        return Collections.emptySet();
-    }
-
-    @Override
-    public void onSessionInitiated(final ProviderSession arg0) {
-        // intentional NOOP
-    }
-
 }
index aec27235910633fb34389208e02b550c81a85a43..de8ab63c0a72b403438505f5f3aeadb918e0e4b9 100644 (file)
@@ -135,7 +135,32 @@ module opendaylight-sal-binding-broker-impl {
         case binding-forwarded-data-broker {
             when "/config:modules/config:module/config:type = 'binding-forwarded-data-broker'";
             container binding-forwarded-data-broker {
-                uses dom-forwarding-component;
+                container dom-async-broker {
+                    uses config:service-ref {
+                        refine type {
+                            mandatory true;
+                            config:required-identity dom:dom-async-data-broker;
+                        }
+                    }
+                }
+
+                container binding-mapping-service {
+                    uses config:service-ref {
+                        refine type {
+                            mandatory true;
+                            config:required-identity binding-dom-mapping-service;
+                        }
+                    }
+                }
+
+                container schema-service {
+                    uses config:service-ref {
+                        refine type {
+                            mandatory false;
+                            config:required-identity dom:schema-service;
+                        }
+                    }
+                }
             }
         }
     }