From 24314dc1699c7e73048fa24e33729f1aa1ec0e86 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Fri, 6 Jul 2012 11:00:24 +0200 Subject: Modules serialize with Castor. Just about to remove the parsing. CastorXMLUtility is now a static member of gateway. Domain specific instances can be used by domain applications, but the maps do not interfere with the kernel. --- .../com/c2kernel/lifecycle/instance/JobPusher.java | 4 +- .../instance/predefined/AddC2KObject.java | 3 +- .../predefined/AddStepsFromDescription.java | 3 +- .../predefined/CreateItemFromDescription.java | 11 +- .../instance/predefined/ReplaceDomainWorkflow.java | 3 +- .../predefined/entitycreation/Aggregation.java | 25 ++-- .../entitycreation/AggregationMember.java | 29 +++++ .../predefined/entitycreation/CreateNewAgent.java | 11 +- .../predefined/entitycreation/CreateNewItem.java | 4 +- .../predefined/entitycreation/Dependency.java | 39 +++++- .../entitycreation/DependencyMember.java | 23 ++++ .../predefined/entitycreation/NewAgent.java | 42 +++++-- .../predefined/entitycreation/NewItem.java | 133 +++++++++++++-------- .../predefined/entitycreation/Outcome.java | 18 +++ .../predefined/entitycreation/Property.java | 26 ---- 15 files changed, 249 insertions(+), 125 deletions(-) create mode 100644 src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Outcome.java delete mode 100644 src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Property.java (limited to 'src/main/java/com/c2kernel/lifecycle') diff --git a/src/main/java/com/c2kernel/lifecycle/instance/JobPusher.java b/src/main/java/com/c2kernel/lifecycle/instance/JobPusher.java index 5b8be63..27af6b4 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/JobPusher.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/JobPusher.java @@ -10,7 +10,7 @@ import com.c2kernel.entity.agent.JobArrayList; import com.c2kernel.lifecycle.instance.stateMachine.Transitions; import com.c2kernel.lookup.AgentPath; import com.c2kernel.lookup.RolePath; -import com.c2kernel.utils.CastorXMLUtility; +import com.c2kernel.process.Gateway; import com.c2kernel.utils.Logger; final class JobPusher extends Thread { @@ -46,7 +46,7 @@ final class JobPusher extends Thread { element.remove(); } Logger.msg(7, "Activity.pushJobsToAgents() - User will receive " + jobList.list.size() + " jobs"); - String stringJobs = CastorXMLUtility.marshall(jobList); + String stringJobs = Gateway.getMarshaller().marshall(jobList); // push it to the agent org.omg.CORBA.Object agentIOR = nextAgent.getIOR(); Agent thisAgent = AgentHelper.narrow(agentIOR); diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddC2KObject.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddC2KObject.java index b61187c..df0c62f 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddC2KObject.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddC2KObject.java @@ -18,7 +18,6 @@ import com.c2kernel.entity.C2KLocalObject; import com.c2kernel.lookup.AgentPath; import com.c2kernel.lookup.EntityPath; import com.c2kernel.process.Gateway; -import com.c2kernel.utils.CastorXMLUtility; import com.c2kernel.utils.Logger; /************************************************************************** @@ -56,7 +55,7 @@ public class AddC2KObject extends PredefinedStep Logger.msg(5, "AddC2KObject::request() - data:" + getDataList(requestData)[0]); - C2KLocalObject obj = (C2KLocalObject)CastorXMLUtility.unmarshall(getDataList(requestData)[0]); + C2KLocalObject obj = (C2KLocalObject)Gateway.getMarshaller().unmarshall(getDataList(requestData)[0]); Gateway.getStorage().put(entityPath.getSysKey(), obj, null ); sendEventStoreOutcome(transitionID, requestData, agent); } diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddStepsFromDescription.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddStepsFromDescription.java index 8f88602..5a23424 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddStepsFromDescription.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddStepsFromDescription.java @@ -10,7 +10,6 @@ import com.c2kernel.lifecycle.instance.CompositeActivity; import com.c2kernel.lifecycle.instance.Workflow; import com.c2kernel.lookup.AgentPath; import com.c2kernel.process.Gateway; -import com.c2kernel.utils.CastorXMLUtility; import com.c2kernel.utils.Logger; public class AddStepsFromDescription extends PredefinedStep @@ -35,7 +34,7 @@ public class AddStepsFromDescription extends PredefinedStep Logger.msg(8, "AddStepsFromDescription::request() - data:" + getDataList(requestData)[0]); lifeCycle.getChildGraphModel().removeVertex(lifeCycle.search("workflow/domain")); - CompositeActivityDef actDef = (CompositeActivityDef) CastorXMLUtility.unmarshall(getDataList(requestData)[0]); + CompositeActivityDef actDef = (CompositeActivityDef) Gateway.getMarshaller().unmarshall(getDataList(requestData)[0]); CompositeActivity domain = (CompositeActivity)actDef.instantiate(); lifeCycle.initChild(domain, true, new GraphPoint(150, 100)); domain.setName("domain"); diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java index 8c55f3a..71495c0 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java @@ -37,7 +37,6 @@ import com.c2kernel.property.Property; import com.c2kernel.property.PropertyArrayList; import com.c2kernel.property.PropertyDescriptionList; import com.c2kernel.property.PropertyUtility; -import com.c2kernel.utils.CastorXMLUtility; import com.c2kernel.utils.LocalObjectLoader; import com.c2kernel.utils.Logger; @@ -63,6 +62,7 @@ public class CreateItemFromDescription extends PredefinedStep String domPath = input[1]; CompositeActivityDef wfDef; String wfDefName = null; + String wfDefVer = null; if (input.length > 2) // override wf wfDefName = input[2]; @@ -90,13 +90,14 @@ public class CreateItemFromDescription extends PredefinedStep Collection thisCol = (Collection)storage.get(myPath.getSysKey(), ClusterStorage.COLLECTION+"/"+collName, null); if (thisCol instanceof CollectionDescription) { CollectionDescription thisDesc = (CollectionDescription)thisCol; - collections.add(CastorXMLUtility.marshall(thisDesc.newInstance())); + collections.add(Gateway.getMarshaller().marshall(thisDesc.newInstance())); } else if (thisCol.getName().equalsIgnoreCase("workflow") && wfDefName == null) { ArrayList members = thisCol.getMembers().list; // get the first member from the wf collection CollectionMember wfMember = members.get(0); wfDefName = wfMember.resolveEntity().getName(); + wfDefVer = (String)wfMember.getProperties().get("Version"); } } @@ -105,7 +106,7 @@ public class CreateItemFromDescription extends PredefinedStep throw new InvalidDataException("No workflow given or defined", ""); try { - wfDef = (CompositeActivityDef)LocalObjectLoader.getActDef(wfDefName, "last"); + wfDef = (CompositeActivityDef)LocalObjectLoader.getActDef(wfDefName, wfDefVer); } catch (ObjectNotFoundException ex) { throw new InvalidDataException("Workflow def '"+wfDefName+"' item not found", ""); } catch (ClassCastException ex) { @@ -150,8 +151,8 @@ public class CreateItemFromDescription extends PredefinedStep newItem.initialise( agent.getSysKey(), - CastorXMLUtility.marshall(props), - CastorXMLUtility.marshall(wfDef.instantiate())); + Gateway.getMarshaller().marshall(props), + Gateway.getMarshaller().marshall(wfDef.instantiate())); // add collections if (collections.size() > 0) { diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/ReplaceDomainWorkflow.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/ReplaceDomainWorkflow.java index a249d51..8d8d2c6 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/ReplaceDomainWorkflow.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/ReplaceDomainWorkflow.java @@ -9,7 +9,6 @@ import com.c2kernel.lifecycle.instance.CompositeActivity; import com.c2kernel.lifecycle.instance.Workflow; import com.c2kernel.lookup.AgentPath; import com.c2kernel.process.Gateway; -import com.c2kernel.utils.CastorXMLUtility; import com.c2kernel.utils.Logger; public class ReplaceDomainWorkflow extends PredefinedStep @@ -34,7 +33,7 @@ public class ReplaceDomainWorkflow extends PredefinedStep Logger.msg(8, "ReplaceDomainWorkflow::request() - data:" + getDataList(requestData)[0]); lifeCycle.getChildGraphModel().removeVertex(lifeCycle.search("workflow/domain")); - CompositeActivity domain = (CompositeActivity) CastorXMLUtility.unmarshall(getDataList(requestData)[0]); + CompositeActivity domain = (CompositeActivity) Gateway.getMarshaller().unmarshall(getDataList(requestData)[0]); lifeCycle.initChild(domain, true, new GraphPoint(150, 100)); Gateway.getStorage().put(getItemEntityPath().getSysKey(), lifeCycle, null); Logger.msg(1, "ReplaceDomainWorkflow::request() - DONE."); 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 b99e898..88d9249 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,6 +2,9 @@ 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; @@ -9,17 +12,15 @@ import com.c2kernel.lookup.DomainPath; import com.c2kernel.property.PropertyDescription; import com.c2kernel.property.PropertyDescriptionList; import com.c2kernel.property.PropertyUtility; -import com.c2kernel.utils.CastorHashMap; public class Aggregation implements java.io.Serializable { public boolean isDescription; - public ArrayList aggregationMemberList; + public ArrayList aggregationMemberList = new ArrayList(); public String name; public Aggregation() { super(); - aggregationMemberList = new ArrayList(); } public Aggregation(String name, boolean isDescription) { @@ -28,16 +29,26 @@ public class Aggregation implements java.io.Serializable { this.isDescription = isDescription; } - public com.c2kernel.collection.Aggregation create() throws MembershipException, ObjectNotFoundException { + public Aggregation(Element agg) { + name = agg.getAttribute("name"); + isDescription = agg.getAttribute("isDescription").equals("true"); + NodeList depmemnl = agg.getElementsByTagName("AggregationMember"); + for (int k=0; k0) { PropertyDescriptionList propList = PropertyUtility.getPropertyDescriptionOutcome(new DomainPath(thisMem.itemDescriptionPath).getSysKey()); for (PropertyDescription pd : propList.list) { - props.put(pd.getName(), pd.getDefaultValue()); + thisMem.props.put(pd.getName(), pd.getDefaultValue()); if (pd.getIsClassIdentifier()) classProps.append((classProps.length()>0?",":"")).append(pd.getName()); } @@ -46,7 +57,7 @@ public class Aggregation implements java.io.Serializable { int syskey = new DomainPath(thisMem.itemPath).getSysKey(); if (syskey == -1) throw new MembershipException("Cannot find "+thisMem.itemPath+" specified for collection."); - newAgg.addMember(syskey, props, classProps.toString(), new GraphPoint(thisMem.geometry.x, thisMem.geometry.y), thisMem.geometry.width, thisMem.geometry.height); + newAgg.addMember(syskey, thisMem.props, classProps.toString(), new GraphPoint(thisMem.geometry.x, thisMem.geometry.y), thisMem.geometry.width, thisMem.geometry.height); } } return newAgg; diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/AggregationMember.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/AggregationMember.java index 29d3cf9..64215da 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/AggregationMember.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/AggregationMember.java @@ -1,11 +1,19 @@ 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; + public class AggregationMember implements java.io.Serializable { public int slotNo; public String itemDescriptionPath; public String itemPath; public Geometry geometry; + public CastorHashMap props = new CastorHashMap(); public AggregationMember() { @@ -18,4 +26,25 @@ public class AggregationMember implements java.io.Serializable { this.itemPath = itemPath; this.geometry = geometry; } + + public AggregationMember(Element memElem) { + Element geom = (Element)memElem.getElementsByTagName("Geometry").item(0); + this.slotNo = Integer.parseInt(memElem.getAttribute("slotNo")); + this.itemDescriptionPath = memElem.getAttribute("itemDescriptionPath"); + this.itemPath = memElem.getAttribute("itemPath"); + this.geometry = new Geometry(Integer.parseInt(geom.getAttribute("x")), Integer.parseInt(geom.getAttribute("y")), + Integer.parseInt(geom.getAttribute("width")), Integer.parseInt(geom.getAttribute("height"))); + NodeList cmpnl = memElem.getElementsByTagName("MemberProperty"); + for (int l=0; l dependencyMemberList; + public ArrayList dependencyMemberList = new ArrayList(); + public CastorHashMap props = new CastorHashMap(); + Element elem; public Dependency() { super(); - dependencyMemberList = new ArrayList(); } public Dependency(String itemDesc) { @@ -27,14 +33,36 @@ public class Dependency implements java.io.Serializable { this.itemDescriptionPath = itemDesc; } - /** + 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) { PropertyDescriptionList propList = PropertyUtility.getPropertyDescriptionOutcome(new DomainPath(itemDescriptionPath).getSysKey()); - CastorHashMap props = new CastorHashMap(); StringBuffer classProps = new StringBuffer(); for (PropertyDescription pd : propList.list) { props.put(pd.getName(), pd.getDefaultValue()); @@ -49,7 +77,8 @@ public class Dependency implements java.io.Serializable { int syskey = new DomainPath(thisMem.itemPath).getSysKey(); if (syskey == -1) throw new MembershipException("Cannot find "+thisMem.itemPath+" specified for collection."); - newDep.addMember(syskey); + com.c2kernel.collection.DependencyMember newDepMem = newDep.addMember(syskey); + newDepMem.getProperties().putAll(thisMem.props); } return newDep; } 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 b70619f..e20fe8b 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,18 @@ 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; + public class DependencyMember implements java.io.Serializable { public String itemPath; + public CastorHashMap props = new CastorHashMap(); public DependencyMember() { super(); @@ -15,4 +23,19 @@ 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 roles; + public ArrayList roles = new ArrayList(); + public ArrayList properties = new ArrayList(); public NewAgent() { - super(); - roles = new ArrayList(); + super(null); } public NewAgent(String name, String password) { + super(null); this.name = name; this.password = password; } - protected void create(int agentId) throws ObjectNotFoundException, ObjectCannotBeUpdated, NoSuchAlgorithmException, CannotManageException, ObjectAlreadyExistsException { + public NewAgent(Element imp) { + super(imp); + password = imp.getAttribute("password"); + NodeList rolenl = imp.getElementsByTagName("Role"); + for (int j=0; j propertyList; - - /** - * Field _aggregationList - */ - public ArrayList aggregationList; - - /** - * Field _dependencyList - */ - public ArrayList dependencyList; - + public ArrayList properties = new ArrayList(); + public ArrayList aggregationList = new ArrayList(); + public ArrayList dependencyList = new ArrayList(); + public ArrayList outcomes = new ArrayList(); + public String ns; public NewItem() { - super(); - propertyList = new ArrayList(); - aggregationList = new ArrayList(); - dependencyList = new ArrayList(); + super(null); } public NewItem(String name, String initialPath, String wf) { @@ -70,17 +58,44 @@ public class NewItem { this.workflow = wf; } - public void setProperty(String name, String value) { - for (Property prop : propertyList) { - if (prop.name.equals(name)) { - prop.value = value; - return; - } - } - propertyList.add(new Property(name, value)); - } - - protected void create(int agentId) throws ObjectCannotBeUpdated, ObjectNotFoundException, CannotManageException, ObjectAlreadyExistsException { + public NewItem(String ns, Element elem) { + super(elem); + 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