Merge "BUG-650: Split out CommitCoordinationTask"
[controller.git] / opendaylight / config / config-manager / src / main / java / org / opendaylight / controller / config / manager / impl / ConfigTransactionControllerInternal.java
index 58d3bc1e4b97c4a41af3b9bf43900feb7aaf7eb1..30183ebff30547a3b2f164aa9cb0df476b4f9a40 100644 (file)
@@ -7,26 +7,30 @@
  */
 package org.opendaylight.controller.config.manager.impl;
 
+import java.util.Collection;
 import java.util.List;
-
-import javax.management.InstanceAlreadyExistsException;
 import javax.management.ObjectName;
-
 import org.opendaylight.controller.config.api.ModuleIdentifier;
 import org.opendaylight.controller.config.api.ValidationException;
+import org.opendaylight.controller.config.spi.ModuleFactory;
+import org.osgi.framework.BundleContext;
 
 /**
  * Defines contract between {@link ConfigTransactionControllerImpl} (producer)
  * and {@link ConfigRegistryImpl} (consumer).
  */
 interface ConfigTransactionControllerInternal extends
-        ConfigTransactionControllerImplMXBean {
+        ConfigTransactionControllerImplMXBean, AutoCloseable {
+
+
 
     /**
-     * Copy already committed module to current transaction.
+     * 1, Copy already committed modules to current transaction.
+     * 2, Diff: compute added and removed factories from last run, then create new modules using
+     * {@link org.opendaylight.controller.config.spi.ModuleFactory#getDefaultModules(org.opendaylight.controller.config.api.DependencyResolverFactory)}
+     * and remove modules belonging to removed factories.
      */
-    void copyExistingModule(ModuleInternalInfo oldConfigBeanInfo)
-            throws InstanceAlreadyExistsException;
+    void copyExistingModulesAndProcessFactoryDiff(Collection<ModuleInternalInfo> entries, List<ModuleFactory> lastListOfFactories);
 
     /**
      * Call {@link org.opendaylight.controller.config.spi.Module#validate()} on
@@ -62,4 +66,14 @@ interface ConfigTransactionControllerInternal extends
      */
     boolean isClosed();
 
+    List<ModuleFactory> getCurrentlyRegisteredFactories();
+
+    BundleContext getModuleFactoryBundleContext(String factoryName);
+
+    SearchableServiceReferenceWritableRegistry  getWritableRegistry();
+
+    TransactionIdentifier getTransactionIdentifier();
+
+    @Override
+    void close();
 }