You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by st...@apache.org on 2018/08/15 14:00:21 UTC
[2/9] incubator-taverna-language git commit: Parse step outputs from
the yaml file
Parse step outputs from the yaml file
- The yaml parser used didn't support output inputs parsing
Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/commit/06de6305
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/06de6305
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/06de6305
Branch: refs/heads/master
Commit: 06de630547cce035e46d124bab8662f58839adff
Parents: 50b2cae
Author: Majdi Haouech <m....@criteo.com>
Authored: Wed Aug 8 02:05:47 2018 +0200
Committer: Majdi Haouech <m....@criteo.com>
Committed: Wed Aug 8 02:05:47 2018 +0200
----------------------------------------------------------------------
.../apache/taverna/scufl2/cwl/YAMLHelper.java | 31 ++++++++++++++++++++
1 file changed, 31 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/06de6305/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/YAMLHelper.java
----------------------------------------------------------------------
diff --git a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/YAMLHelper.java b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/YAMLHelper.java
index f745386..76652ea 100644
--- a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/YAMLHelper.java
+++ b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/YAMLHelper.java
@@ -125,9 +125,12 @@ public class YAMLHelper {
Process run = ProcessFactory.createProcess(runNode);
run.parse(); // Recursively parse nested process
Set<InputPort> inputs = processStepInput(stepNode.get(INPUTS));
+ Set<OutputPort> outputs = processStepOutput(stepNode.get(OUTPUTS));
step.setId(id);
step.setRun(run);
step.setInputs(inputs);
+ step.setOutputs(outputs);
+
result.add(step);
}
} else if(steps.isObject()) {
@@ -145,8 +148,10 @@ public class YAMLHelper {
step.setRun(run);
}
Set<InputPort> inputs = processStepInput(value.get(INPUTS));
+ Set<OutputPort> outputs = processStepOutput(value.get(OUTPUTS));
step.setId(id);
step.setInputs(inputs);
+ step.setOutputs(outputs);
result.add(step);
}
@@ -183,6 +188,32 @@ public class YAMLHelper {
return result;
}
+ private Set<OutputPort> processStepOutput(JsonNode outputs) {
+ Set<OutputPort> result = new HashSet<>();
+ if(outputs == null) {
+ return result;
+ }
+ if (outputs.isArray()) {
+
+ for (JsonNode output : outputs) {
+ String id = output.get(ID).asText();
+
+ result.add(new OutputPort(id));
+ }
+ } else if (outputs.isObject()) {
+ Iterator<Entry<String, JsonNode>> iterator = outputs.fields();
+ while (iterator.hasNext()) {
+ Entry<String, JsonNode> entry = iterator.next();
+
+ String id = entry.getKey();
+
+ result.add(new OutputPort(id));
+ }
+ }
+
+ return result;
+ }
+
/**
* This method will go through CWL tool input or out puts and figure outs
* their IDs and the respective depths