diff --git a/src/main/java/net/floodlightcontroller/core/module/FloodlightModuleContext.java b/src/main/java/net/floodlightcontroller/core/module/FloodlightModuleContext.java index 77b7e76c79717189a825715fff7c96d3b510d46b..2ebe41e3ca404992a379cc7ec12d4adc7461cc46 100644 --- a/src/main/java/net/floodlightcontroller/core/module/FloodlightModuleContext.java +++ b/src/main/java/net/floodlightcontroller/core/module/FloodlightModuleContext.java @@ -25,96 +25,97 @@ import java.util.Map; * @author alexreimers */ public class FloodlightModuleContext implements IFloodlightModuleContext { - protected Map<Class<? extends IFloodlightService>, IFloodlightService> serviceMap; - protected Map<Class<? extends IFloodlightModule>, Map<String, String>> configParams; - protected Collection<IFloodlightModule> moduleSet; - - /** - * Creates the ModuleContext for use with this IFloodlightProvider. - * This will be used as a module registry for all IFloodlightModule(s). - */ - public FloodlightModuleContext() { - serviceMap = - new HashMap<Class<? extends IFloodlightService>, - IFloodlightService>(); - configParams = - new HashMap<Class<? extends IFloodlightModule>, - Map<String, String>>(); - } - - /** - * Adds a IFloodlightModule for this Context. - * @param clazz the service class - * @param service The IFloodlightService to add to the registry - */ - public void addService(Class<? extends IFloodlightService> clazz, - IFloodlightService service) { - serviceMap.put(clazz, service); - } - - @SuppressWarnings("unchecked") + protected Map<Class<? extends IFloodlightService>, IFloodlightService> serviceMap; + protected Map<Class<? extends IFloodlightModule>, Map<String, String>> configParams; + protected Collection<IFloodlightModule> moduleSet; + + /** + * Creates the ModuleContext for use with this IFloodlightProvider. + * This will be used as a module registry for all IFloodlightModule(s). + */ + public FloodlightModuleContext() { + serviceMap = + new HashMap<Class<? extends IFloodlightService>, + IFloodlightService>(); + configParams = + new HashMap<Class<? extends IFloodlightModule>, + Map<String, String>>(); + } + + /** + * Adds a IFloodlightModule for this Context. + * @param clazz the service class + * @param service The IFloodlightService to add to the registry + */ + public void addService(Class<? extends IFloodlightService> clazz, + IFloodlightService service) { + serviceMap.put(clazz, service); + } + + @SuppressWarnings("unchecked") @Override - public <T extends IFloodlightService> T getServiceImpl(Class<T> service) { - IFloodlightService s = serviceMap.get(service); - return (T)s; - } - - @Override - public Collection<Class<? extends IFloodlightService>> getAllServices() { - return serviceMap.keySet(); - } - - @Override - public Collection<IFloodlightModule> getAllModules() { - return moduleSet; - } - - public void setModuleSet(Collection<IFloodlightModule> modSet) { - this.moduleSet = modSet; - } - - /** - * Gets the configuration parameter map for a module - * @param module The module to get the configuration map for, usually yourself - * @return A map containing all the configuration parameters for the module, may be empty - */ - @Override - public Map<String, String> getConfigParams(IFloodlightModule module) { - Map<String, String> retMap = configParams.get(module.getClass()); - if (retMap == null) { - // Return an empty map if none exists so the module does not - // need to null check the map - retMap = new HashMap<String, String>(); - configParams.put(module.getClass(), retMap); - } + public <T extends IFloodlightService> T getServiceImpl(Class<T> service) { + IFloodlightService s = serviceMap.get(service); + return (T)s; + } + + @Override + public Collection<Class<? extends IFloodlightService>> getAllServices() { + return serviceMap.keySet(); + } + + @Override + public Collection<IFloodlightModule> getAllModules() { + return moduleSet; + } + + public void setModuleSet(Collection<IFloodlightModule> modSet) { + this.moduleSet = modSet; + } + + @Override + public Map<String, String> getConfigParams(IFloodlightModule module) { + Class<? extends IFloodlightModule> clazz = module.getClass(); + return getConfigParams(clazz); + } + + @Override + public Map<String, String> getConfigParams(Class<? extends IFloodlightModule> clazz) { + Map<String, String> retMap = configParams.get(clazz); + if (retMap == null) { + // Return an empty map if none exists so the module does not + // need to null check the map + retMap = new HashMap<String, String>(); + configParams.put(clazz, retMap); + } - // also add any configuration parameters for superclasses, but - // only if more specific configuration does not override it - for (Class<? extends IFloodlightModule> c : configParams.keySet()) { - if (c.isInstance(module)) { - for (Map.Entry<String, String> ent : configParams.get(c).entrySet()) { - if (!retMap.containsKey(ent.getKey())) { - retMap.put(ent.getKey(), ent.getValue()); - } - } - } - } + // also add any configuration parameters for superclasses, but + // only if more specific configuration does not override it + for (Class<? extends IFloodlightModule> c : configParams.keySet()) { + if (c.isAssignableFrom(clazz)) { + for (Map.Entry<String, String> ent : configParams.get(c).entrySet()) { + if (!retMap.containsKey(ent.getKey())) { + retMap.put(ent.getKey(), ent.getValue()); + } + } + } + } - return retMap; - } - - /** - * Adds a configuration parameter for a module - * @param mod The fully qualified module name to add the parameter to - * @param key The configuration parameter key - * @param value The configuration parameter value - */ - public void addConfigParam(IFloodlightModule mod, String key, String value) { - Map<String, String> moduleParams = configParams.get(mod.getClass()); - if (moduleParams == null) { - moduleParams = new HashMap<String, String>(); - configParams.put(mod.getClass(), moduleParams); - } - moduleParams.put(key, value); - } + return retMap; + } + + /** + * Adds a configuration parameter for a module + * @param mod The fully qualified module name to add the parameter to + * @param key The configuration parameter key + * @param value The configuration parameter value + */ + public void addConfigParam(IFloodlightModule mod, String key, String value) { + Map<String, String> moduleParams = configParams.get(mod.getClass()); + if (moduleParams == null) { + moduleParams = new HashMap<String, String>(); + configParams.put(mod.getClass(), moduleParams); + } + moduleParams.put(key, value); + } } diff --git a/src/main/java/net/floodlightcontroller/core/module/IFloodlightModuleContext.java b/src/main/java/net/floodlightcontroller/core/module/IFloodlightModuleContext.java index 6288cb7898d4f792a583b7a17c22d29f6da4caf2..6dce334f8cd15c529c9aa56e55f07418e0adb705 100644 --- a/src/main/java/net/floodlightcontroller/core/module/IFloodlightModuleContext.java +++ b/src/main/java/net/floodlightcontroller/core/module/IFloodlightModuleContext.java @@ -48,4 +48,12 @@ public interface IFloodlightModuleContext { * @return A key, value map of the configuration options */ public Map<String, String> getConfigParams(IFloodlightModule module); + + /** + * Gets module specific configuration parameters. + * @param clazz The class of the module to get configuration parameters for + * @return A key, value map of the configuration options + */ + public Map<String, String> getConfigParams(Class<? extends + IFloodlightModule> clazz); }