From 79bdf4aa01fb9ca991de032733919923a19192c8 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Sun, 27 Oct 2013 21:06:45 +0100 Subject: 3.0-SNAPSHOT Do Integer.parseInt(propObj.toString()) to tolerate String or Integer version properties. --- src/main/java/com/c2kernel/graph/model/GraphableVertex.java | 9 +++++++++ src/main/java/com/c2kernel/lifecycle/ActivitySlotDef.java | 10 +--------- src/main/java/com/c2kernel/lifecycle/instance/Activity.java | 4 ++-- src/main/java/com/c2kernel/lifecycle/instance/OrSplit.java | 2 +- src/main/java/com/c2kernel/lifecycle/instance/XOrSplit.java | 2 +- .../instance/predefined/CreateItemFromDescription.java | 7 ++++++- .../lifecycle/instance/predefined/entitycreation/Outcome.java | 4 ++-- src/main/java/com/c2kernel/process/module/Module.java | 2 +- src/main/java/com/c2kernel/scripting/Script.java | 10 +++++----- src/main/java/com/c2kernel/utils/LocalObjectLoader.java | 2 +- 10 files changed, 29 insertions(+), 23 deletions(-) (limited to 'src/main/java/com/c2kernel') diff --git a/src/main/java/com/c2kernel/graph/model/GraphableVertex.java b/src/main/java/com/c2kernel/graph/model/GraphableVertex.java index 7c9adef..77be7a8 100644 --- a/src/main/java/com/c2kernel/graph/model/GraphableVertex.java +++ b/src/main/java/com/c2kernel/graph/model/GraphableVertex.java @@ -5,6 +5,7 @@ package com.c2kernel.graph.model; */ +import com.c2kernel.common.InvalidDataException; import com.c2kernel.utils.CastorHashMap; import com.c2kernel.utils.KeyValuePair; public abstract class GraphableVertex extends Vertex @@ -25,6 +26,14 @@ public abstract class GraphableVertex extends Vertex { return mProperties; } + protected int getVersionNumberProperty(String propName) throws InvalidDataException { + Object val = getProperties().get(propName); + try { + return Integer.parseInt(val.toString()); + } catch (NumberFormatException ex) { + throw new InvalidDataException("Invalid version number for property '"+propName+"': "+val.toString(), ""); + } + } public KeyValuePair[] getKeyValuePairs() { return mProperties.getKeyValuePairs(); diff --git a/src/main/java/com/c2kernel/lifecycle/ActivitySlotDef.java b/src/main/java/com/c2kernel/lifecycle/ActivitySlotDef.java index 9a3819b..514dc72 100644 --- a/src/main/java/com/c2kernel/lifecycle/ActivitySlotDef.java +++ b/src/main/java/com/c2kernel/lifecycle/ActivitySlotDef.java @@ -44,7 +44,7 @@ public class ActivitySlotDef extends WfVertexDef public ActivityDef getTheActivityDef() throws ObjectNotFoundException, InvalidDataException { - ActivityDef actDef = LocalObjectLoader.getActDef(getActivityDef(), getActVersion()); + ActivityDef actDef = LocalObjectLoader.getActDef(getActivityDef(), getVersionNumberProperty("Version")); if (actDef instanceof CompositeActivityDef) mIsComposite = true; return actDef; @@ -142,14 +142,6 @@ public class ActivitySlotDef extends WfVertexDef { return (String) getProperties().get("Name"); } - public int getActVersion() throws InvalidDataException - { - Object verObj = getProperties().get("Version"); - if (verObj instanceof Integer) - return (Integer)verObj; - else - throw new InvalidDataException("Version string was not an integer", ""); - } @Override public WfVertex instantiate() throws ObjectNotFoundException, InvalidDataException { diff --git a/src/main/java/com/c2kernel/lifecycle/instance/Activity.java b/src/main/java/com/c2kernel/lifecycle/instance/Activity.java index a386194..a83eadd 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/Activity.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/Activity.java @@ -82,7 +82,7 @@ public class Activity extends WfVertex public StateMachine getStateMachine() throws InvalidDataException { if (machine == null) { String name = (String)getProperties().get("StateMachineName"); - Integer version = (Integer)getProperties().get("StateMachineVersion"); + int version = getVersionNumberProperty("StateMachineVersion"); try { machine = LocalObjectLoader.getStateMachine(name, version); } catch (ObjectNotFoundException ex) { @@ -104,7 +104,7 @@ public class Activity extends WfVertex } return machine; } - + /** return the current State of the State machine (Used in Serialisation) */ public int getState() throws InvalidDataException { diff --git a/src/main/java/com/c2kernel/lifecycle/instance/OrSplit.java b/src/main/java/com/c2kernel/lifecycle/instance/OrSplit.java index 89f5ad2..357e86a 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/OrSplit.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/OrSplit.java @@ -24,7 +24,7 @@ public class OrSplit extends Split { String nexts; String scriptName = (String) getProperties().get("RoutingScriptName"); - Integer scriptVersion = (Integer) getProperties().get("RoutingScriptVersion"); + int scriptVersion = getVersionNumberProperty("RoutingScriptVersion"); try { nexts = this.evaluateScript(scriptName, scriptVersion, itemSysKey).toString(); } catch (ScriptingEngineException e) { diff --git a/src/main/java/com/c2kernel/lifecycle/instance/XOrSplit.java b/src/main/java/com/c2kernel/lifecycle/instance/XOrSplit.java index a74a939..f8c314d 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/XOrSplit.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/XOrSplit.java @@ -33,7 +33,7 @@ public class XOrSplit extends Split ArrayList nextsToFollow = new ArrayList(); String nexts; String scriptName = (String) getProperties().get("RoutingScriptName"); - int scriptVersion = (Integer) getProperties().get("RoutingScriptVersion"); + int scriptVersion = getVersionNumberProperty("RoutingScriptVersion"); try { nexts = this.evaluateScript(scriptName, scriptVersion, itemSysKey).toString(); } catch (ScriptingEngineException e) { 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 2e3d652..10e54d1 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java @@ -93,7 +93,12 @@ public class CreateItemFromDescription extends PredefinedStep // get the first member from the wf collection CollectionMember wfMember = members.get(0); wfDefName = wfMember.resolveEntity().getName(); - wfDefVer = (Integer)wfMember.getProperties().get("Version"); + Object wfVerObj = wfMember.getProperties().get("Version"); + try { + wfDefVer = Integer.parseInt(wfVerObj.toString()); + } catch (NumberFormatException ex) { + throw new InvalidDataException("Invalid workflow version number: "+wfVerObj.toString(), ""); + } } } diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Outcome.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Outcome.java index a8431de..9ab5793 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Outcome.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Outcome.java @@ -10,10 +10,10 @@ public class Outcome { public Outcome() { } - public Outcome(String schema, String version, String viewname, String path) { + public Outcome(String schema, int version, String viewname, String path) { super(); this.schema = schema; - this.version = Integer.parseInt(version); + this.version = version; this.viewname = viewname; this.path = path; } diff --git a/src/main/java/com/c2kernel/process/module/Module.java b/src/main/java/com/c2kernel/process/module/Module.java index a932361..d0a017c 100644 --- a/src/main/java/com/c2kernel/process/module/Module.java +++ b/src/main/java/com/c2kernel/process/module/Module.java @@ -67,7 +67,7 @@ public class Module { } moduleItem.dependencyList.add(children); // Add moduleXML - Outcome moduleOutcome = new Outcome("Module", "0", "last", null); + Outcome moduleOutcome = new Outcome("Module", 0, "last", null); moduleOutcome.data = moduleXML; moduleItem.outcomes.add(moduleOutcome); imports.list.add(moduleItem); diff --git a/src/main/java/com/c2kernel/scripting/Script.java b/src/main/java/com/c2kernel/scripting/Script.java index 1a755ea..9166e2e 100644 --- a/src/main/java/com/c2kernel/scripting/Script.java +++ b/src/main/java/com/c2kernel/scripting/Script.java @@ -43,7 +43,7 @@ public class Script { String mScript = ""; String mName; - String mVersion; + Integer mVersion; HashMap mInputParams = new HashMap(); HashMap mAllInputParams = new HashMap(); HashMap mOutputParams = new HashMap(); @@ -79,7 +79,7 @@ public class Script public Script(String scriptName, int scriptVersion) throws ScriptingEngineException { mName = scriptName; - mVersion = String.valueOf(scriptVersion); + mVersion = scriptVersion; if (!scriptName.equals("")) loadScript(mName, mVersion); } @@ -92,7 +92,7 @@ public class Script { mName = ""; setScriptEngine(lang); - mVersion = ""; + mVersion = null; addOutput(null, returnType); mScript = expr; } @@ -121,7 +121,7 @@ public class Script public Script(ItemProxy object, AgentProxy subject, Job job) throws ScriptingEngineException { - this(job.getActPropString("ScriptName"), job.getActPropString("ScriptVersion") == null ? -1 : Integer.parseInt(job.getActPropString("ScriptVersion"))); + this(job.getActPropString("ScriptName"), job.getActPropString("ScriptVersion") == null ? null : Integer.parseInt(job.getActPropString("ScriptVersion").toString())); // set environment - this needs to be well documented for script developers if (!mInputParams.containsKey("item")) addInputParam("item", ItemProxy.class); @@ -183,7 +183,7 @@ public class Script engine.setContext(context); } - private void loadScript(String scriptName, String scriptVersion) throws ScriptingEngineException + private void loadScript(String scriptName, int scriptVersion) throws ScriptingEngineException { try { diff --git a/src/main/java/com/c2kernel/utils/LocalObjectLoader.java b/src/main/java/com/c2kernel/utils/LocalObjectLoader.java index c17db40..aef7b96 100644 --- a/src/main/java/com/c2kernel/utils/LocalObjectLoader.java +++ b/src/main/java/com/c2kernel/utils/LocalObjectLoader.java @@ -24,7 +24,7 @@ public class LocalObjectLoader { return (ItemProxy)Gateway.getProxyManager().getProxy(defPath); } - static public String getScript(String scriptName, String scriptVersion) throws ObjectNotFoundException { + static public String getScript(String scriptName, int scriptVersion) throws ObjectNotFoundException { Logger.msg(5, "Loading script "+scriptName+" v"+scriptVersion); try { ItemProxy script = loadLocalObjectDef("/desc/Script/", scriptName); -- cgit v1.2.3