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 /src/main/java | |
| 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.
Diffstat (limited to 'src/main/java')
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;
}
}
|
