From b53164978a9a264fbe26679c07e32731a4d495f9 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Fri, 6 Jul 2012 15:50:45 +0200 Subject: Remove XML parsing from module processing, use Castor unmarshalling instead. Create module item with collection of imported Items and module XML registered as an outcome. --- .../predefined/entitycreation/Aggregation.java | 14 --- .../entitycreation/AggregationMember.java | 17 --- .../predefined/entitycreation/Dependency.java | 26 +--- .../entitycreation/DependencyMember.java | 12 -- .../predefined/entitycreation/NewAgent.java | 26 +--- .../predefined/entitycreation/NewItem.java | 56 ++------- .../predefined/entitycreation/Outcome.java | 11 +- .../java/com/c2kernel/process/module/Module.java | 140 +++++---------------- .../com/c2kernel/process/module/ModuleImport.java | 8 +- .../com/c2kernel/process/module/ModuleManager.java | 12 +- .../c2kernel/process/module/ModuleResource.java | 20 +-- 11 files changed, 83 insertions(+), 259 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Aggregation.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Aggregation.java index 88d9249..40e0604 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Aggregation.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Aggregation.java @@ -2,9 +2,6 @@ package com.c2kernel.lifecycle.instance.predefined.entitycreation; import java.util.ArrayList; -import org.w3c.dom.Element; -import org.w3c.dom.NodeList; - import com.c2kernel.collection.MembershipException; import com.c2kernel.common.ObjectNotFoundException; import com.c2kernel.graph.model.GraphPoint; @@ -29,17 +26,6 @@ public class Aggregation implements java.io.Serializable { this.isDescription = isDescription; } - public Aggregation(Element agg) { - name = agg.getAttribute("name"); - isDescription = agg.getAttribute("isDescription").equals("true"); - NodeList depmemnl = agg.getElementsByTagName("AggregationMember"); - for (int k=0; k dependencyMemberList = new ArrayList(); public CastorHashMap props = new CastorHashMap(); - Element elem; public Dependency() { super(); } - public Dependency(String itemDesc) { + public Dependency(String name) { this(); - this.itemDescriptionPath = itemDesc; + this.name = name; } - public Dependency(Element dep) { - elem = dep; - name = dep.getAttribute("name"); - isDescription = dep.getAttribute("isDescription").equals("true"); - NodeList cpnl = dep.getElementsByTagName("CollectionProperty"); - for (int k=0; k0) { + Logger.debug(itemDescriptionPath); PropertyDescriptionList propList = PropertyUtility.getPropertyDescriptionOutcome(new DomainPath(itemDescriptionPath).getSysKey()); StringBuffer classProps = new StringBuffer(); for (PropertyDescription pd : propList.list) { diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/DependencyMember.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/DependencyMember.java index e20fe8b..573cdc8 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/DependencyMember.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/DependencyMember.java @@ -1,10 +1,6 @@ package com.c2kernel.lifecycle.instance.predefined.entitycreation; -import org.w3c.dom.Element; -import org.w3c.dom.NodeList; -import org.w3c.dom.Text; - import com.c2kernel.utils.CastorHashMap; import com.c2kernel.utils.KeyValuePair; @@ -23,14 +19,6 @@ public class DependencyMember implements java.io.Serializable { } - public DependencyMember(Element elem) { - itemPath = elem.getAttribute("itemPath"); - NodeList cmpnl = elem.getElementsByTagName("MemberProperty"); - for (int l=0; l properties = new ArrayList(); public NewAgent() { - super(null); } public NewAgent(String name, String password) { - super(null); this.name = name; this.password = password; } - public NewAgent(Element imp) { - super(imp); - password = imp.getAttribute("password"); - NodeList rolenl = imp.getElementsByTagName("Role"); - for (int j=0; j aggregationList = new ArrayList(); public ArrayList dependencyList = new ArrayList(); public ArrayList outcomes = new ArrayList(); - public String ns; + private String ns; public NewItem() { - super(null); } public NewItem(String name, String initialPath, String wf) { @@ -58,41 +51,13 @@ public class NewItem extends ModuleImport { this.workflow = wf; } - public NewItem(String ns, Element elem) { - super(elem); + public void setNamespace(String ns) { this.ns = ns; - workflow = elem.getAttribute("workflow"); - if (elem.hasAttribute("initialPath")) - initialPath = elem.getAttribute("initialPath"); - else - initialPath = "/desc/"+ns; - NodeList pnl = elem.getElementsByTagName("Property"); - for (int j=0; j config = new ArrayList(); public ArrayList scripts = new ArrayList(); - private static DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); - private DocumentBuilder parser; - private Document moduleDOM; + public NewItem moduleItem; - static { - dbf.setValidating(false); - dbf.setNamespaceAware(false); - } - public Module() { super(); } - public Module(String moduleXML) throws ModuleException { - try { - parser = dbf.newDocumentBuilder(); - moduleDOM = parser.parse(new InputSource(new StringReader(moduleXML))); - } catch (Exception e) { - Logger.error(e); - throw new ModuleException("Could not process modules. XML Parser exception"); - } - - Element root = (Element)moduleDOM.getElementsByTagName("CristalModule").item(0); - - // Get module metadata - ns = root.getAttribute("ns"); - name = root.getAttribute("name"); - - Element infoElem = (Element)moduleDOM.getElementsByTagName("Info").item(0); - info = new ModuleInfo(); - info.desc = ((Text)infoElem.getElementsByTagName("Description").item(0).getFirstChild()).getData(); - info.version = ((Text)infoElem.getElementsByTagName("Version").item(0).getFirstChild()).getData(); - NodeList nl = infoElem.getElementsByTagName("Dependency"); - for (int i=0; i0) { - resURL = ((Text)nl.item(0).getFirstChild()).getData(); - Resource.addModuleBaseURL(ns, resURL); - } - - // Get config properties - nl = root.getElementsByTagName("Config"); - for (int i=0; i0) { - Element impElem = (Element)nl.item(0); - nl = impElem.getChildNodes(); - for (int i=0; i modules = new ArrayList(); + HashMap modulesXML = new HashMap(); Properties props = new Properties(); boolean isServer; @@ -29,10 +32,11 @@ public class ModuleManager { while(moduleEnum.hasMoreElements()) { URL newModuleURL = moduleEnum.nextElement(); try { - //Module newModule = (Module)Gateway.getMarshaller().unmarshall(FileStringUtility.url2String(newModuleURL)); - //Resource.addModuleBaseURL(newModule.ns, newModule.resURL); - Module newModule = new Module(FileStringUtility.url2String(newModuleURL)); + String moduleXML = FileStringUtility.url2String(newModuleURL); + Module newModule = (Module)Gateway.getMarshaller().unmarshall(moduleXML); + Resource.addModuleBaseURL(newModule.ns, newModule.resURL); modules.add(newModule); + modulesXML.put(newModule.ns, moduleXML); 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()); @@ -96,7 +100,7 @@ public class ModuleManager { Logger.debug(3, "Registering modules"); for (Module thisMod : modules) { Logger.msg("Registering module "+thisMod.getName()); - thisMod.importAll(serverEntity); + thisMod.importAll(serverEntity, modulesXML.get(thisMod.ns)); Logger.msg("Module "+thisMod.getName()+" registered"); } } diff --git a/src/main/java/com/c2kernel/process/module/ModuleResource.java b/src/main/java/com/c2kernel/process/module/ModuleResource.java index f355f6f..274e522 100644 --- a/src/main/java/com/c2kernel/process/module/ModuleResource.java +++ b/src/main/java/com/c2kernel/process/module/ModuleResource.java @@ -1,21 +1,23 @@ package com.c2kernel.process.module; -import org.w3c.dom.Element; -import org.w3c.dom.Text; - public class ModuleResource extends ModuleImport { public String resourceType; public String resourceLocation; public ModuleResource() { - super(null); } - public ModuleResource(Element elem) { - super(elem); - resourceType = elem.getAttribute("type"); - resourceLocation = ((Text)elem.getFirstChild()).getData(); + @Override + public String getPath(String ns) { + StringBuffer path = new StringBuffer(); + if (resourceType.equals("CA") || resourceType.equals("EA")) + path.append("/desc/ActivityDesc/"); + if (resourceType.equals("SC")) + path.append("/desc/Script/"); + if (resourceType.equals("OD")) + path.append("/desc/OutcomeDesc/"); + path.append("system/").append(ns==null?"kernel":ns); + return path.toString(); } - } \ No newline at end of file -- cgit v1.2.3