diff options
| author | Andrew Branson <andrew.branson@cern.ch> | 2013-12-09 17:34:51 +0100 |
|---|---|---|
| committer | Andrew Branson <andrew.branson@cern.ch> | 2013-12-09 17:34:51 +0100 |
| commit | c6e9aa47819f5681b187668753ae4a5e53f4e2bc (patch) | |
| tree | bd239126b00dfdea25d83a72c744a594afb06ecb | |
| parent | 37bb1907aca2a3246a7b5d759df79b7fd97c276f (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.
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;
}
}
|
