summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2013-12-09 17:34:51 +0100
committerAndrew Branson <andrew.branson@cern.ch>2013-12-09 17:34:51 +0100
commitc6e9aa47819f5681b187668753ae4a5e53f4e2bc (patch)
treebd239126b00dfdea25d83a72c744a594afb06ecb
parent37bb1907aca2a3246a7b5d759df79b7fd97c276f (diff)
Return false from Transition.hasOutcome and hasScript if there are
property symbols but the properties are empty (e.g. activities with no schema defined). The methods must now be given activity properties.
-rw-r--r--src/main/java/com/c2kernel/entity/agent/Job.java14
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/Activity.java2
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/WfVertex.java2
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/stateMachine/Transition.java34
4 files changed, 31 insertions, 21 deletions
diff --git a/src/main/java/com/c2kernel/entity/agent/Job.java b/src/main/java/com/c2kernel/entity/agent/Job.java
index 5f9e6dc..eecbe19 100644
--- a/src/main/java/com/c2kernel/entity/agent/Job.java
+++ b/src/main/java/com/c2kernel/entity/agent/Job.java
@@ -189,7 +189,7 @@ public class Job implements C2KLocalObject
}
public String getSchemaName() throws InvalidDataException, ObjectNotFoundException {
- if (transition.hasOutcome()) {
+ if (transition.hasOutcome(actProps)) {
Schema schema = transition.getSchema(actProps);
return schema.docType;
}
@@ -197,7 +197,7 @@ public class Job implements C2KLocalObject
}
public int getSchemaVersion() throws InvalidDataException, ObjectNotFoundException {
- if (transition.hasOutcome()) {
+ if (transition.hasOutcome(actProps)) {
Schema schema = transition.getSchema(actProps);
return schema.docVersion;
}
@@ -206,18 +206,18 @@ public class Job implements C2KLocalObject
public boolean isOutcomeRequired()
{
- return transition.hasOutcome() && transition.getOutcome().isRequired();
+ return transition.hasOutcome(actProps) && transition.getOutcome().isRequired();
}
public String getScriptName() {
- if (transition.hasScript()) {
+ if (transition.hasScript(actProps)) {
return transition.getScript().getScriptName();
}
return null;
}
public int getScriptVersion() throws InvalidDataException {
- if (transition.hasScript()) {
+ if (transition.hasScript(actProps)) {
return transition.getScriptVersion(actProps);
}
return -1;
@@ -312,11 +312,11 @@ public class Job implements C2KLocalObject
}
public boolean hasOutcome() {
- return transition.hasOutcome();
+ return transition.hasOutcome(actProps);
}
public boolean hasScript() {
- return transition.hasScript();
+ return transition.hasScript(actProps);
}
public boolean isOutcomeSet() {
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/Activity.java b/src/main/java/com/c2kernel/lifecycle/instance/Activity.java
index 42ffe79..889006c 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/Activity.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/Activity.java
@@ -143,7 +143,7 @@ public class Activity extends WfVertex
Schema schema = null;
String viewName = null;
boolean storeOutcome = false;
- if (transition.hasOutcome()) {
+ if (transition.hasOutcome(getProperties())) {
schema = transition.getSchema(getProperties());
viewName = (String)getProperties().get("Viewpoint");
if (requestData != null && requestData.length()>0)
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/WfVertex.java b/src/main/java/com/c2kernel/lifecycle/instance/WfVertex.java
index de5f56f..a6e39ae 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/WfVertex.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/WfVertex.java
@@ -152,6 +152,7 @@ public abstract class WfVertex extends GraphableVertex
}
}
+ //TODO: is this right?
if (requiredInput.containsKey("item")) {
script.setInputParamValue("item", Gateway.getProxyManager().getProxy(new EntityPath(itemSysKey)));
}
@@ -178,7 +179,6 @@ public abstract class WfVertex extends GraphableVertex
throw new ScriptingEngineException("Script name is empty");
Script script;
if (version!=null) {
- Logger.debug(version.toString());
script = new Script(name, version);
}
else { // empty version: try expression
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/Transition.java b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/Transition.java
index 9922c7c..704f2bf 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/Transition.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/Transition.java
@@ -241,7 +241,7 @@ public class Transition implements Serializable {
while (propMatcher.find()) {
String propName = propMatcher.group(1);
Object propValue = props.get(propName);
- Logger.debug("Replacing Property "+propName+" as "+propValue);
+ Logger.msg(8, "Replacing Property "+propName+" as "+propValue);
String propValString = propValue==null?"":propValue.toString();
result = result.replace("${"+propName+"}", propValString);
}
@@ -254,19 +254,24 @@ public class Transition implements Serializable {
return (Boolean)props.get(enabledProp);
}
- public boolean hasOutcome() {
- return outcome!=null
- && outcome.schemaName!=null && outcome.schemaName.length()>0
- && outcome.schemaVersion!=null && outcome.schemaVersion.length()>0;
+ public boolean hasOutcome(CastorHashMap actProps) {
+ if (outcome == null || actProps == null) return false;
+ String outcomeName = resolveValue(outcome.schemaName, actProps);
+ if (outcomeName == null || outcomeName.length() == 0)
+ return false;
+ String outcomeVersion = resolveValue(outcome.schemaVersion, actProps);
+ if (outcomeVersion == null || outcomeVersion.length() == 0)
+ return false;
+ return true;
}
public Schema getSchema(CastorHashMap actProps) throws InvalidDataException, ObjectNotFoundException {
- if (hasOutcome())
+ if (hasOutcome(actProps))
try {
return LocalObjectLoader.getSchema(resolveValue(outcome.schemaName, actProps),
Integer.parseInt(resolveValue(outcome.schemaVersion, actProps)));
} catch (NumberFormatException ex) {
- throw new InvalidDataException("Bad schema version number: "+outcome.schemaVersion+" ("+resolveValue(outcome.schemaVersion, actProps), "");
+ throw new InvalidDataException("Bad schema version number: "+outcome.schemaVersion+" ("+resolveValue(outcome.schemaVersion, actProps)+")", "");
}
else
return null;
@@ -280,13 +285,18 @@ public class Transition implements Serializable {
try {
return Integer.parseInt(resolveValue(script.scriptVersion, actProps));
} catch (NumberFormatException ex) {
- throw new InvalidDataException("Bad Script version number: "+script.scriptVersion+" ("+resolveValue(script.scriptVersion, actProps));
+ throw new InvalidDataException("Bad Script version number: "+script.scriptVersion+" ("+resolveValue(script.scriptVersion, actProps)+")", "");
}
}
- public boolean hasScript() {
- return script!=null
- && script.scriptName!=null && script.scriptName.length()>0
- && script.scriptVersion!=null && script.scriptVersion.length()>0;
+ public boolean hasScript(CastorHashMap actProps) {
+ if (script == null || actProps == null) return false;
+ String scriptName = getScriptName(actProps);
+ if (scriptName == null || scriptName.length() == 0)
+ return false;
+ String scriptVersion = resolveValue(script.scriptVersion, actProps);
+ if (scriptVersion == null || scriptVersion.length() == 0)
+ return false;
+ return true;
}
}