From f20547a9f617a971d7dfa64a5a4564cd2f013170 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Thu, 14 Jun 2012 11:35:25 +0200 Subject: Created ModuleException --- src/main/java/com/c2kernel/process/ModuleManager.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/main/java/com/c2kernel/process/ModuleManager.java') diff --git a/src/main/java/com/c2kernel/process/ModuleManager.java b/src/main/java/com/c2kernel/process/ModuleManager.java index e7be9e8..b336681 100644 --- a/src/main/java/com/c2kernel/process/ModuleManager.java +++ b/src/main/java/com/c2kernel/process/ModuleManager.java @@ -1,5 +1,6 @@ package com.c2kernel.process; +import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.Enumeration; @@ -16,23 +17,30 @@ public class ModuleManager { Properties props = new Properties(); boolean isServer; - public ModuleManager(Enumeration moduleEnum, boolean isServer) { + public ModuleManager(Enumeration moduleEnum, boolean isServer) throws ModuleException{ this.isServer = isServer; ArrayList loadedModules = new ArrayList(); + ArrayList moduleNs = new ArrayList(); while(moduleEnum.hasMoreElements()) { URL newModuleURL = moduleEnum.nextElement(); try { Module newModule = new Module(FileStringUtility.url2String(newModuleURL)); modules.add(newModule); - loadedModules.add(newModule.getName()); + if (loadedModules.contains(newModule.getName())) throw new ModuleException("Module name clash: "+newModule.getName()); + if (moduleNs.contains(newModule.getNs())) throw new ModuleException("Module namespace clash: "+newModule.getNs()); + Logger.debug(4, "Module found: "+newModule.getNs()+" - "+newModule.getName()); + loadedModules.add(newModule.getName()); moduleNs.add(newModule.getNs()); Properties modProp = isServer?newModule.getServerProperties():newModule.getClientProperties(); for (Enumeration e = modProp.propertyNames(); e.hasMoreElements();) { String propName = (String)e.nextElement(); props.put(propName, modProp.get(propName)); } - } catch (Exception e) { + } catch (ModuleException e) { Logger.error("Could not load module description from "+newModuleURL); + throw e; + } catch (IOException e) { Logger.error(e); + throw new ModuleException("Could not load module.xml from "+newModuleURL); } } @@ -74,7 +82,7 @@ public class ModuleManager { ItemProxy serverEntity = (ItemProxy)Gateway.getProxyManager().getProxy(new DomainPath("/servers/"+Gateway.getProperty("ItemServer.name"))); Logger.debug(3, "Registering modules"); for (Module thisMod : modules) { - Logger.debug(4, "Registering module "+thisMod.getName()); + Logger.msg("Registering module "+thisMod.getName()); thisMod.importAll(serverEntity); Logger.msg("Module "+thisMod.getName()+" registered"); } -- cgit v1.2.3