Add sender actor to the ForwardingDataTreeChangeListener
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / datastore / DistributedDataStoreFactory.java
index 4fd09914cdb6eb5185247bf51f6177064aba7337..a765fa3efe072b994adff57d1d71ae222aa55a10 100644 (file)
@@ -13,44 +13,45 @@ import org.opendaylight.controller.cluster.databroker.ClientBackedDataStore;
 import org.opendaylight.controller.cluster.datastore.config.Configuration;
 import org.opendaylight.controller.cluster.datastore.config.ConfigurationImpl;
 import org.opendaylight.controller.cluster.datastore.persisted.DatastoreSnapshot;
 import org.opendaylight.controller.cluster.datastore.config.Configuration;
 import org.opendaylight.controller.cluster.datastore.config.ConfigurationImpl;
 import org.opendaylight.controller.cluster.datastore.persisted.DatastoreSnapshot;
-import org.opendaylight.controller.sal.core.api.model.SchemaService;
 import org.opendaylight.mdsal.dom.api.DOMSchemaService;
 import org.opendaylight.mdsal.dom.api.DOMSchemaService;
-import org.osgi.framework.BundleContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class DistributedDataStoreFactory {
+public final class DistributedDataStoreFactory {
+
     private static final Logger LOG = LoggerFactory.getLogger(DistributedDataStoreFactory.class);
     private static final Logger LOG = LoggerFactory.getLogger(DistributedDataStoreFactory.class);
+    private static final String DEFAULT_MODULE_SHARDS_PATH = "./configuration/initial/module-shards.conf";
+    private static final String DEFAULT_MODULES_PATH = "./configuration/initial/modules.conf";
 
 
-    /**
-     * Create a data store instance.
-     *
-     * @deprecated Use {@link #createInstance(DOMSchemaService, DatastoreContext, DatastoreSnapshotRestore,
-     *                        ActorSystemProvider, BundleContext)} instead.
-     */
-    @Deprecated
-    public static AbstractDataStore createInstance(final SchemaService schemaService,
-            final DatastoreContext initialDatastoreContext, final DatastoreSnapshotRestore datastoreSnapshotRestore,
-            final ActorSystemProvider actorSystemProvider, final BundleContext bundleContext) {
+    private DistributedDataStoreFactory() {
+    }
 
 
-        return createInstance((DOMSchemaService) schemaService, initialDatastoreContext, datastoreSnapshotRestore,
-            actorSystemProvider, bundleContext);
+    public static AbstractDataStore createInstance(final DOMSchemaService schemaService,
+            final DatastoreContext initialDatastoreContext, final DatastoreSnapshotRestore datastoreSnapshotRestore,
+            final ActorSystemProvider actorSystemProvider, final DatastoreContextIntrospector introspector,
+            final DatastoreContextPropertiesUpdater updater) {
+        return createInstance(schemaService, initialDatastoreContext, datastoreSnapshotRestore, actorSystemProvider,
+                introspector, updater, null);
     }
 
     }
 
+    // TODO: separate out settle wait so it is better controlled
     public static AbstractDataStore createInstance(final DOMSchemaService schemaService,
             final DatastoreContext initialDatastoreContext, final DatastoreSnapshotRestore datastoreSnapshotRestore,
     public static AbstractDataStore createInstance(final DOMSchemaService schemaService,
             final DatastoreContext initialDatastoreContext, final DatastoreSnapshotRestore datastoreSnapshotRestore,
-            final ActorSystemProvider actorSystemProvider, final BundleContext bundleContext) {
+            final ActorSystemProvider actorSystemProvider, final DatastoreContextIntrospector introspector,
+            final DatastoreContextPropertiesUpdater updater, final Configuration orgConfig) {
 
         final String datastoreName = initialDatastoreContext.getDataStoreName();
         LOG.info("Create data store instance of type : {}", datastoreName);
 
         final ActorSystem actorSystem = actorSystemProvider.getActorSystem();
         final DatastoreSnapshot restoreFromSnapshot = datastoreSnapshotRestore.getAndRemove(datastoreName);
 
         final String datastoreName = initialDatastoreContext.getDataStoreName();
         LOG.info("Create data store instance of type : {}", datastoreName);
 
         final ActorSystem actorSystem = actorSystemProvider.getActorSystem();
         final DatastoreSnapshot restoreFromSnapshot = datastoreSnapshotRestore.getAndRemove(datastoreName);
-        final DatastoreContextIntrospector introspector = new DatastoreContextIntrospector(initialDatastoreContext);
-        final DatastoreContextConfigAdminOverlay overlay = new DatastoreContextConfigAdminOverlay(
-                introspector, bundleContext);
 
 
-        final Configuration config = new ConfigurationImpl("module-shards.conf", "modules.conf");
+        Configuration config;
+        if (orgConfig == null) {
+            config = new ConfigurationImpl(DEFAULT_MODULE_SHARDS_PATH, DEFAULT_MODULES_PATH);
+        } else {
+            config = orgConfig;
+        }
         final ClusterWrapper clusterWrapper = new ClusterWrapperImpl(actorSystem);
         final DatastoreContextFactory contextFactory = introspector.newContextFactory();
 
         final ClusterWrapper clusterWrapper = new ClusterWrapperImpl(actorSystem);
         final DatastoreContextFactory contextFactory = introspector.newContextFactory();
 
@@ -67,12 +68,11 @@ public class DistributedDataStoreFactory {
                 restoreFromSnapshot);
             LOG.info("Data store {} is using ask-based protocol", datastoreName);
         }
                 restoreFromSnapshot);
             LOG.info("Data store {} is using ask-based protocol", datastoreName);
         }
-
-        overlay.setListener(dataStore);
+        updater.setListener(dataStore);
 
         schemaService.registerSchemaContextListener(dataStore);
 
 
         schemaService.registerSchemaContextListener(dataStore);
 
-        dataStore.setCloseable(overlay);
+        dataStore.setCloseable(updater);
         dataStore.waitTillReady();
 
         return dataStore;
         dataStore.waitTillReady();
 
         return dataStore;