From: Tomas Olvecky Date: Fri, 28 Feb 2014 10:27:13 +0000 (+0100) Subject: Remove static state and default beans from RuntimeMappingModuleFactory,SchemaServiceI... X-Git-Tag: release/beryllium~149^2~473^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=e497110108fb8b8c15ebed8d9b0ae8bbd7e78c74;p=mdsal.git Remove static state and default beans from RuntimeMappingModuleFactory,SchemaServiceImplSingletonModuleFactory. Remove static reference from factories as this breaks tests: it is useful to tear down config subsystem between tests, but there is no way to clean up static fields. Since default beans are discouraged, rework those factories to enforce instance naming so that only a single instance can be created. 01-md-sal.xml already creates both modules. Change-Id: I5efbe12b349ae82bfff12ae9a767505a66df2f90 Signed-off-by: Tomas Olvecky --- diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/config/yang/md/sal/binding/impl/RuntimeMappingModuleFactory.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/config/yang/md/sal/binding/impl/RuntimeMappingModuleFactory.java index 64e23e887c..407b41d29d 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/config/yang/md/sal/binding/impl/RuntimeMappingModuleFactory.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/config/yang/md/sal/binding/impl/RuntimeMappingModuleFactory.java @@ -7,49 +7,34 @@ */ package org.opendaylight.controller.config.yang.md.sal.binding.impl; -import java.util.Collections; -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.ModuleIdentifier; -import org.opendaylight.controller.config.spi.Module; import org.osgi.framework.BundleContext; +import static com.google.common.base.Preconditions.checkArgument; + /** -* -*/ + * + */ public class RuntimeMappingModuleFactory extends org.opendaylight.controller.config.yang.md.sal.binding.impl.AbstractRuntimeMappingModuleFactory { - private static RuntimeMappingModule SINGLETON = null; - private static ModuleIdentifier IDENTIFIER = new ModuleIdentifier(NAME, "runtime-mapping-singleton"); + public static final String SINGLETON_NAME = "runtime-mapping-singleton"; @Override - public Module createModule(String instanceName, DependencyResolver dependencyResolver, BundleContext bundleContext) { - throw new UnsupportedOperationException("Only default instance supported"); - } - - @Override - public Module createModule(String instanceName, DependencyResolver dependencyResolver, - DynamicMBeanWithInstance old, BundleContext bundleContext) throws Exception { - RuntimeMappingModule module = (RuntimeMappingModule) super.createModule(instanceName, dependencyResolver, old, - bundleContext); + public RuntimeMappingModule instantiateModule(String instanceName, DependencyResolver dependencyResolver, RuntimeMappingModule oldModule, AutoCloseable oldInstance, BundleContext bundleContext) { + checkArgument(SINGLETON_NAME.equals(instanceName),"Illegal instance name '" + instanceName + "', only allowed name is " + SINGLETON_NAME); + RuntimeMappingModule module = super.instantiateModule(instanceName, dependencyResolver, oldModule, oldInstance, bundleContext); + // FIXME bundle context should not be passed around module.setBundleContext(bundleContext); return module; } @Override - public Set getDefaultModules(DependencyResolverFactory dependencyResolverFactory, - BundleContext bundleContext) { - if (SINGLETON == null) { - DependencyResolver dependencyResolver = dependencyResolverFactory.createDependencyResolver(IDENTIFIER); - SINGLETON = new RuntimeMappingModule(IDENTIFIER, dependencyResolver); - SINGLETON.setBundleContext(bundleContext); - } - - return Collections.singleton(SINGLETON); + public RuntimeMappingModule instantiateModule(String instanceName, DependencyResolver dependencyResolver, BundleContext bundleContext) { + checkArgument(SINGLETON_NAME.equals(instanceName),"Illegal instance name '" + instanceName + "', only allowed name is " + SINGLETON_NAME); + RuntimeMappingModule module = super.instantiateModule(instanceName, dependencyResolver, bundleContext); + // FIXME bundle context should not be passed around + module.setBundleContext(bundleContext); + return module; } - } diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/config/yang/md/sal/dom/impl/SchemaServiceImplSingletonModuleFactory.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/config/yang/md/sal/dom/impl/SchemaServiceImplSingletonModuleFactory.java index 22ad3fde00..0908fe573b 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/config/yang/md/sal/dom/impl/SchemaServiceImplSingletonModuleFactory.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/config/yang/md/sal/dom/impl/SchemaServiceImplSingletonModuleFactory.java @@ -7,38 +7,31 @@ */ package org.opendaylight.controller.config.yang.md.sal.dom.impl; -import java.util.Collections; -import java.util.Set; - import org.opendaylight.controller.config.api.DependencyResolver; -import org.opendaylight.controller.config.api.DependencyResolverFactory; -import org.opendaylight.controller.config.api.ModuleIdentifier; -import org.opendaylight.controller.config.spi.Module; import org.osgi.framework.BundleContext; -/** -* -*/ +import static com.google.common.base.Preconditions.checkArgument; + public class SchemaServiceImplSingletonModuleFactory extends org.opendaylight.controller.config.yang.md.sal.dom.impl.AbstractSchemaServiceImplSingletonModuleFactory { - private static final ModuleIdentifier IDENTIFIER = new ModuleIdentifier(NAME, "yang-schema-service"); - public static SchemaServiceImplSingletonModule SINGLETON; + public static final String SINGLETON_NAME = "yang-schema-service"; @Override - public Module createModule(String instanceName, DependencyResolver dependencyResolver, BundleContext bundleContext) { - throw new UnsupportedOperationException("Only default instance supported."); + public SchemaServiceImplSingletonModule instantiateModule(String instanceName, DependencyResolver dependencyResolver, SchemaServiceImplSingletonModule oldModule, AutoCloseable oldInstance, BundleContext bundleContext) { + checkArgument(SINGLETON_NAME.equals(instanceName),"Illegal instance name '" + instanceName + "', only allowed name is " + SINGLETON_NAME); + SchemaServiceImplSingletonModule module = super.instantiateModule(instanceName, dependencyResolver, oldModule, oldInstance, bundleContext); + // FIXME bundle context should not be passed around + module.setBundleContext(bundleContext); + return module; } @Override - public Set getDefaultModules(DependencyResolverFactory dependencyResolverFactory, - BundleContext bundleContext) { - DependencyResolver dependencyResolver = dependencyResolverFactory.createDependencyResolver(IDENTIFIER); - - if (SINGLETON == null) { - SINGLETON = new SchemaServiceImplSingletonModule(IDENTIFIER, dependencyResolver); - SINGLETON.setBundleContext(bundleContext); - } - return Collections.singleton(SINGLETON); + public SchemaServiceImplSingletonModule instantiateModule(String instanceName, DependencyResolver dependencyResolver, BundleContext bundleContext) { + checkArgument(SINGLETON_NAME.equals(instanceName),"Illegal instance name '" + instanceName + "', only allowed name is " + SINGLETON_NAME); + SchemaServiceImplSingletonModule module = super.instantiateModule(instanceName, dependencyResolver, bundleContext); + // FIXME bundle context should not be passed around + module.setBundleContext(bundleContext); + return module; } }