X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fconfig%2Fconfig-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fspi%2FModuleFactory.java;h=e28608a198f2ea6346397fa86f28b2cf833d5db6;hb=4497e2212e73e13356447b9644bbdc935411949a;hp=e300523913f818ed17b20dce3baf32098aca1cb4;hpb=2c6fd09ad16f5c2968390a674865efbbe5f1fcec;p=controller.git diff --git a/opendaylight/config/config-api/src/main/java/org/opendaylight/controller/config/spi/ModuleFactory.java b/opendaylight/config/config-api/src/main/java/org/opendaylight/controller/config/spi/ModuleFactory.java index e300523913..e28608a198 100644 --- a/opendaylight/config/config-api/src/main/java/org/opendaylight/controller/config/spi/ModuleFactory.java +++ b/opendaylight/config/config-api/src/main/java/org/opendaylight/controller/config/spi/ModuleFactory.java @@ -7,14 +7,12 @@ */ 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 java.util.Set; +import org.osgi.framework.BundleContext; /** * Factory which creates {@link Module instances. An instance of this interface @@ -44,11 +42,15 @@ public interface ModuleFactory { * @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 @@ -78,28 +80,39 @@ public interface ModuleFactory { * {@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 serviceInterface); + Set> 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 getDefaultModules(DependencyResolverFactory dependencyResolverFactory); + public Set getDefaultModules(DependencyResolverFactory dependencyResolverFactory, + BundleContext bundleContext); }