*/
package org.opendaylight.controller.config.spi;
-import javax.management.DynamicMBean;
-
+import java.util.Set;
import org.opendaylight.controller.config.api.DependencyResolver;
+import org.opendaylight.controller.config.api.DependencyResolverFactory;
import org.opendaylight.controller.config.api.DynamicMBeanWithInstance;
import org.opendaylight.controller.config.api.annotations.AbstractServiceInterface;
+import org.osgi.framework.BundleContext;
/**
* Factory which creates {@link Module instances. An instance of this interface
* @param dependencyResolver
* This resolver will return actual config mbean based on its
* ObjectName.
+ * @param bundleContext Reference to OSGi bundleContext that can be used to
+ * acquire OSGi services, startup configuration and other
+ * OSGi related information.
+ *
* @return newly created module
*
*/
public Module createModule(String instanceName,
- DependencyResolver dependencyResolver);
+ DependencyResolver dependencyResolver, BundleContext bundleContext);
/**
* Create a new Module instance. The returned object is expected to use the
* {@link ClassCastException} when OSGi bundle is being updated.
* In this case, implementation should revert to creating new
* instance.
+ * @param bundleContext Reference to OSGi bundleContext that can be used to
+ * acquire OSGi services, startup configuration and other
+ * OSGi related information.
+ *
* @return newly created module
* @throws Exception
* if it is not possible to recover configuration from old. This
* leaves server in a running state but no configuration
* transaction can be created.
*/
- public Module createModule(String instanceName,
- DependencyResolver dependencyResolver, DynamicMBeanWithInstance old)
- throws Exception;
+ public Module createModule(String instanceName, DependencyResolver dependencyResolver,
+ DynamicMBeanWithInstance old, BundleContext bundleContext) throws Exception;
boolean isModuleImplementingServiceInterface(
Class<? extends AbstractServiceInterface> serviceInterface);
+ Set<Class<? extends AbstractServiceInterface>> getImplementedServiceIntefaces();
+
+ /**
+ * Called when ModuleFactory is registered to config manager.
+ * Useful for populating the registry with pre-existing state. Since
+ * the method is called for each ModuleFactory separately and transaction
+ * is committed automatically, returned modules MUST be valid and commitable
+ * without any manual intervention.
+ *
+ * @param dependencyResolverFactory factory for getting dependency resolvers for each module.
+ * @param bundleContext Reference to OSGi bundleContext that can be used to
+ * acquire OSGi services, startup configuration and other
+ * OSGi related information.
+ *
+ * @return set of default modules. Null is not allowed.
+ */
+ public Set<? extends Module> getDefaultModules(DependencyResolverFactory dependencyResolverFactory,
+ BundleContext bundleContext);
+
}