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