You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sh...@apache.org on 2015/03/26 18:08:02 UTC
[03/50] [abbrv] airavata git commit: Handle ouptprt of application
nodes and workflowOutputNodes
Handle ouptprt of application nodes and workflowOutputNodes
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/9445b7a1
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/9445b7a1
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/9445b7a1
Branch: refs/heads/master
Commit: 9445b7a10596c509cbe7950a470add94b3deb32a
Parents: e3ce93e
Author: shamrath <sh...@gmail.com>
Authored: Mon Feb 16 11:19:18 2015 -0500
Committer: shamrath <sh...@gmail.com>
Committed: Mon Feb 16 11:19:18 2015 -0500
----------------------------------------------------------------------
.../workflow/engine/dag/edge/DirectedEdge.java | 8 +-
.../engine/dag/nodes/ApplicationNode.java | 4 +-
.../engine/dag/nodes/ApplicationNodeImpl.java | 28 +-
.../engine/dag/nodes/WorkflowInputNode.java | 2 +
.../engine/dag/nodes/WorkflowInputNodeImpl.java | 19 +-
.../engine/dag/nodes/WorkflowOutputNode.java | 7 +-
.../dag/nodes/WorkflowOutputNodeImpl.java | 26 +-
.../workflow/engine/dag/port/InputPortIml.java | 13 +-
.../workflow/engine/dag/port/OutPortImpl.java | 21 +-
.../engine/parser/AiravataDefaultParser.java | 50 +-
.../simple/workflow/engine/WorkflowDAGTest.java | 2 +
.../parser/AiravataDefaultParserTest.java | 71 +++
.../src/test/resources/ComplexMathWorkflow.awf | 465 +++++++++++++++++++
13 files changed, 664 insertions(+), 52 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata/blob/9445b7a1/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/edge/DirectedEdge.java
----------------------------------------------------------------------
diff --git a/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/edge/DirectedEdge.java b/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/edge/DirectedEdge.java
index 4b05740..000cd06 100644
--- a/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/edge/DirectedEdge.java
+++ b/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/edge/DirectedEdge.java
@@ -11,21 +11,21 @@ public class DirectedEdge implements Edge {
@Override
public InPort getToPort() {
- return null; // TODO: Auto generated method body.
+ return inPort;
}
@Override
public void setToPort(InPort inPort) {
- // TODO: Auto generated method body.
+ this.inPort = inPort;
}
@Override
public OutPort getFromPort() {
- return null; // TODO: Auto generated method body.
+ return outPort;
}
@Override
public void setFromPort(OutPort outPort) {
- // TODO: Auto generated method body.
+ this.outPort = outPort;
}
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/9445b7a1/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/ApplicationNode.java
----------------------------------------------------------------------
diff --git a/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/ApplicationNode.java b/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/ApplicationNode.java
index cd2a955..6ab5754 100644
--- a/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/ApplicationNode.java
+++ b/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/ApplicationNode.java
@@ -30,11 +30,11 @@ public interface ApplicationNode extends WorkflowNode {
public String getApplicationId();
-// public void addInputPort(InPort inPort);
+ public void addInPort(InPort inPort);
public List<InPort> getInputPorts();
-// public void addOutputPort(OutPort outPort);
+ public void addOutPort(OutPort outPort);
public List<OutPort> getOutputPorts();
http://git-wip-us.apache.org/repos/asf/airavata/blob/9445b7a1/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/ApplicationNodeImpl.java
----------------------------------------------------------------------
diff --git a/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/ApplicationNodeImpl.java b/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/ApplicationNodeImpl.java
index 9388c43..fd7e3c7 100644
--- a/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/ApplicationNodeImpl.java
+++ b/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/ApplicationNodeImpl.java
@@ -26,6 +26,7 @@ package org.apache.ariavata.simple.workflow.engine.dag.nodes;
import org.apache.ariavata.simple.workflow.engine.dag.port.InPort;
import org.apache.ariavata.simple.workflow.engine.dag.port.OutPort;
+import java.util.ArrayList;
import java.util.List;
public class ApplicationNodeImpl implements ApplicationNode {
@@ -33,6 +34,8 @@ public class ApplicationNodeImpl implements ApplicationNode {
private final String nodeId;
private NodeState myState = NodeState.WAITING;
private String applicationId;
+ private List<InPort> inPorts = new ArrayList<InPort>();
+ private List<OutPort> outPorts = new ArrayList<OutPort>();
public ApplicationNodeImpl(String nodeId) {
this(nodeId, null);
@@ -50,7 +53,7 @@ public class ApplicationNodeImpl implements ApplicationNode {
@Override
public String getNodeName() {
- return null; // TODO: Auto generated method body.
+ return this.getNodeName();
}
@Override
@@ -71,21 +74,36 @@ public class ApplicationNodeImpl implements ApplicationNode {
@Override
public boolean isSatisfy() {
- return false; // TODO: Auto generated method body.
+ for (InPort inPort : getInputPorts()) {
+ if (!inPort.isSatisfy()) {
+ return false;
+ }
+ }
+ return true;
}
@Override
public String getApplicationId() {
- return null; // TODO: Auto generated method body.
+ return this.applicationId;
+ }
+
+ @Override
+ public void addInPort(InPort inPort) {
+ this.inPorts.add(inPort);
}
@Override
public List<InPort> getInputPorts() {
- return null; // TODO: Auto generated method body.
+ return this.inPorts;
+ }
+
+ @Override
+ public void addOutPort(OutPort outPort) {
+ this.outPorts.add(outPort);
}
@Override
public List<OutPort> getOutputPorts() {
- return null; // TODO: Auto generated method body.
+ return this.outPorts;
}
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/9445b7a1/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/WorkflowInputNode.java
----------------------------------------------------------------------
diff --git a/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/WorkflowInputNode.java b/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/WorkflowInputNode.java
index 8d24c96..b27fdea 100644
--- a/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/WorkflowInputNode.java
+++ b/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/WorkflowInputNode.java
@@ -35,4 +35,6 @@ public interface WorkflowInputNode extends WorkflowNode {
public OutPort getOutPort();
+ public void setOutPort(OutPort outPort);
+
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/9445b7a1/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/WorkflowInputNodeImpl.java
----------------------------------------------------------------------
diff --git a/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/WorkflowInputNodeImpl.java b/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/WorkflowInputNodeImpl.java
index 31bd6b0..0f6ea92 100644
--- a/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/WorkflowInputNodeImpl.java
+++ b/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/WorkflowInputNodeImpl.java
@@ -30,6 +30,8 @@ public class WorkflowInputNodeImpl implements WorkflowInputNode {
private NodeState myState = NodeState.READY;
private final String nodeId;
private String nodeName;
+ private OutPort outPort;
+ private InputDataObjectType inputDataObjectType;
public WorkflowInputNodeImpl(String nodeId) {
this(nodeId, null);
@@ -42,12 +44,12 @@ public class WorkflowInputNodeImpl implements WorkflowInputNode {
@Override
public String getNodeId() {
- return null;
+ return this.nodeId;
}
@Override
public String getNodeName() {
- return null; // TODO: Auto generated method body.
+ return this.nodeName;
}
@Override
@@ -68,22 +70,27 @@ public class WorkflowInputNodeImpl implements WorkflowInputNode {
@Override
public boolean isSatisfy() {
- return false; // TODO: Auto generated method body.
+ return inputDataObjectType.getValue() != null && !inputDataObjectType.getValue().equals("");
}
@Override
public InputDataObjectType getInputObject() {
- return null; // TODO: Auto generated method body.
+ return this.inputDataObjectType;
}
@Override
public void setInputObject(InputDataObjectType inputObject) {
- // TODO: Auto generated method body.
+ this.inputDataObjectType = inputObject;
}
@Override
public OutPort getOutPort() {
- return null; // TODO: Auto generated method body.
+ return this.outPort;
+ }
+
+ @Override
+ public void setOutPort(OutPort outPort) {
+ this.outPort = outPort;
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/9445b7a1/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/WorkflowOutputNode.java
----------------------------------------------------------------------
diff --git a/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/WorkflowOutputNode.java b/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/WorkflowOutputNode.java
index 55e1268..a1ff6d4 100644
--- a/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/WorkflowOutputNode.java
+++ b/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/WorkflowOutputNode.java
@@ -23,11 +23,16 @@ package org.apache.ariavata.simple.workflow.engine.dag.nodes;
import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
import org.apache.ariavata.simple.workflow.engine.dag.edge.Edge;
+import org.apache.ariavata.simple.workflow.engine.dag.port.InPort;
public interface WorkflowOutputNode extends WorkflowNode {
public OutputDataObjectType getOutputObject();
- public Edge getInputLink();
+ public void setOutputObject(OutputDataObjectType outputObject);
+
+ public InPort getInPort();
+
+ public void setInPort(InPort inPort);
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/9445b7a1/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/WorkflowOutputNodeImpl.java
----------------------------------------------------------------------
diff --git a/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/WorkflowOutputNodeImpl.java b/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/WorkflowOutputNodeImpl.java
index 36ab1f6..ec3a1ea 100644
--- a/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/WorkflowOutputNodeImpl.java
+++ b/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/nodes/WorkflowOutputNodeImpl.java
@@ -25,12 +25,15 @@ package org.apache.ariavata.simple.workflow.engine.dag.nodes;
import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
import org.apache.ariavata.simple.workflow.engine.dag.edge.Edge;
+import org.apache.ariavata.simple.workflow.engine.dag.port.InPort;
public class WorkflowOutputNodeImpl implements WorkflowOutputNode {
private NodeState myState = NodeState.WAITING;
private final String nodeId;
private String nodeName;
+ private OutputDataObjectType outputDataObjectType;
+ private InPort inPort;
public WorkflowOutputNodeImpl(String nodeId) {
this(nodeId, null);
@@ -43,12 +46,12 @@ public class WorkflowOutputNodeImpl implements WorkflowOutputNode {
@Override
public String getNodeId() {
- return null;
+ return this.nodeId;
}
@Override
public String getNodeName() {
- return null; // TODO: Auto generated method body.
+ return this.nodeName;
}
@Override
@@ -69,17 +72,28 @@ public class WorkflowOutputNodeImpl implements WorkflowOutputNode {
@Override
public boolean isSatisfy() {
- return false; // TODO: Auto generated method body.
+ return this.outputDataObjectType.getValue() != null && !this.outputDataObjectType.getValue().equals("");
}
@Override
public OutputDataObjectType getOutputObject() {
- return null; // TODO: Auto generated method body.
+ return this.outputDataObjectType;
}
@Override
- public Edge getInputLink() {
- return null; // TODO: Auto generated method body.
+ public void setOutputObject(OutputDataObjectType outputObject) {
+ this.outputDataObjectType = outputObject;
}
+
+ @Override
+ public InPort getInPort() {
+ return this.inPort;
+ }
+
+ @Override
+ public void setInPort(InPort inPort) {
+ this.inPort = inPort;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/9445b7a1/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/port/InputPortIml.java
----------------------------------------------------------------------
diff --git a/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/port/InputPortIml.java b/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/port/InputPortIml.java
index b33b91b..629a832 100644
--- a/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/port/InputPortIml.java
+++ b/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/port/InputPortIml.java
@@ -30,6 +30,7 @@ public class InputPortIml implements InPort {
private boolean isSatisfy = false;
private String portId;
private Edge edge;
+ private WorkflowNode node;
public InputPortIml(String portId) {
this.portId = portId;
@@ -37,12 +38,12 @@ public class InputPortIml implements InPort {
@Override
public void setInputObject(InputDataObjectType inputObject) {
- // TODO: Auto generated method body.
+ this.inputDataObjectType = inputObject;
}
@Override
public InputDataObjectType getInputObject() {
- return null; // TODO: Auto generated method body.
+ return this.inputDataObjectType;
}
@Override
@@ -57,22 +58,22 @@ public class InputPortIml implements InPort {
@Override
public boolean isSatisfy() {
- return false; // TODO: Auto generated method body.
+ return inputDataObjectType.getValue() != null && !inputDataObjectType.getValue().equals("");
}
@Override
public WorkflowNode getNode() {
- return null; // TODO: Auto generated method body.
+ return this.node;
}
@Override
public void setNode(WorkflowNode workflowNode) {
- // TODO: Auto generated method body.
+ this.node = workflowNode;
}
@Override
public String getId() {
- return null; // TODO: Auto generated method body.
+ return this.portId;
}
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/9445b7a1/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/port/OutPortImpl.java
----------------------------------------------------------------------
diff --git a/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/port/OutPortImpl.java b/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/port/OutPortImpl.java
index bc7628f..35b8c3b 100644
--- a/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/port/OutPortImpl.java
+++ b/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/dag/port/OutPortImpl.java
@@ -4,6 +4,7 @@ import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
import org.apache.ariavata.simple.workflow.engine.dag.edge.Edge;
import org.apache.ariavata.simple.workflow.engine.dag.nodes.WorkflowNode;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -12,9 +13,10 @@ import java.util.List;
public class OutPortImpl implements OutPort {
private OutputDataObjectType outputDataObjectType;
- private List<Edge> outEdges;
+ private List<Edge> outEdges = new ArrayList<Edge>();
private boolean isSatisfy = false;
private String portId;
+ private WorkflowNode node;
public OutPortImpl(String portId) {
this.portId = portId;
@@ -22,41 +24,42 @@ public class OutPortImpl implements OutPort {
@Override
public void setOutputObject(OutputDataObjectType outputObject) {
- // TODO: Auto generated method body.
+ this.outputDataObjectType = outputObject;
}
@Override
public OutputDataObjectType getOutputObject() {
- return null; // TODO: Auto generated method body.
+ return this.outputDataObjectType;
}
@Override
public List<Edge> getOutEdges() {
- return null; // TODO: Auto generated method body.
+ return this.outEdges;
}
@Override
public void addEdge(Edge edge) {
- // TODO: Auto generated method body.
+ this.outEdges.add(edge);
}
@Override
public boolean isSatisfy() {
- return false; // TODO: Auto generated method body.
+ return this.outputDataObjectType.getValue() != null
+ && !this.outputDataObjectType.getValue().equals("");
}
@Override
public WorkflowNode getNode() {
- return null; // TODO: Auto generated method body.
+ return this.node;
}
@Override
public void setNode(WorkflowNode workflowNode) {
- // TODO: Auto generated method body.
+ this.node = workflowNode;
}
@Override
public String getId() {
- return null; // TODO: Auto generated method body.
+ return portId;
}
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/9445b7a1/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/parser/AiravataDefaultParser.java
----------------------------------------------------------------------
diff --git a/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/parser/AiravataDefaultParser.java b/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/parser/AiravataDefaultParser.java
index 92e9811..d2095c8 100644
--- a/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/parser/AiravataDefaultParser.java
+++ b/modules/simple-workflow/src/main/java/org/apache/ariavata/simple/workflow/engine/parser/AiravataDefaultParser.java
@@ -3,6 +3,7 @@ package org.apache.ariavata.simple.workflow.engine.parser;
import org.airavata.appcatalog.cpi.AppCatalogException;
import org.airavata.appcatalog.cpi.WorkflowCatalog;
import org.apache.aiaravata.application.catalog.data.impl.AppCatalogFactory;
+import org.apache.aiaravata.application.catalog.data.model.WorkflowOutput;
import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
import org.apache.airavata.model.workspace.experiment.Experiment;
@@ -31,6 +32,8 @@ import org.apache.ariavata.simple.workflow.engine.dag.nodes.ApplicationNodeImpl;
import org.apache.ariavata.simple.workflow.engine.dag.nodes.WorkflowInputNode;
import org.apache.ariavata.simple.workflow.engine.dag.nodes.WorkflowInputNodeImpl;
import org.apache.ariavata.simple.workflow.engine.dag.nodes.WorkflowNode;
+import org.apache.ariavata.simple.workflow.engine.dag.nodes.WorkflowOutputNode;
+import org.apache.ariavata.simple.workflow.engine.dag.nodes.WorkflowOutputNodeImpl;
import org.apache.ariavata.simple.workflow.engine.dag.port.InPort;
import org.apache.ariavata.simple.workflow.engine.dag.port.InputPortIml;
import org.apache.ariavata.simple.workflow.engine.dag.port.OutPort;
@@ -51,8 +54,14 @@ public class AiravataDefaultParser implements WorkflowParser {
private String experimentId;
private String credentialToken ;
private Workflow workflow;
+
+ // TODO : remove this setter method
+ public void setExperiment(Experiment experiment) {
+ this.experiment = experiment;
+ }
+
private Experiment experiment;
- private Map<String, ApplicationNode> wfNodes = new HashMap<String, ApplicationNode>();
+ private Map<String, WorkflowNode> wfNodes = new HashMap<String, WorkflowNode>();
public AiravataDefaultParser(String experimentId, String credentialToken) {
@@ -66,7 +75,7 @@ public class AiravataDefaultParser implements WorkflowParser {
return parseWorkflow(getWorkflowFromExperiment());
}
- private List<WorkflowInputNode> parseWorkflow(Workflow workflow) {
+ public List<WorkflowInputNode> parseWorkflow(Workflow workflow) {
List<Node> gNodes = getInputNodes(workflow);
List<WorkflowInputNode> wfInputNodes = new ArrayList<WorkflowInputNode>();
List<PortContainer> portContainers = new ArrayList<PortContainer>();
@@ -85,7 +94,8 @@ public class AiravataDefaultParser implements WorkflowParser {
if (wfInputNode.getInputObject() == null) {
// TODO: throw an error and exit.
}
- for (DataPort dataPort : gNode.getInputPorts()) {
+ portContainers.addAll(processOutPorts(gNode, wfInputNode));
+/* for (DataPort dataPort : gNode.getOutputPorts()) {
outPort = new OutPortImpl(dataPort.getID());
for (DataEdge dataEdge : dataPort.getEdges()) {
edge = new DirectedEdge();
@@ -96,8 +106,8 @@ public class AiravataDefaultParser implements WorkflowParser {
inPort.addEdge(edge);
portContainers.add(new PortContainer(dataEdge.getToPort(), inPort));
}
- outPort.setOutputObject(getOutputDataObject(wfInputNode.getInputObject()));
- }
+// outPort.setOutputObject(getOutputDataObject(wfInputNode.getInputObject()));
+ }*/
wfInputNodes.add(wfInputNode);
}
@@ -114,7 +124,8 @@ public class AiravataDefaultParser implements WorkflowParser {
}
DataPort dataPort = null;
InPort inPort = null;
- WorkflowNode wfNode = null;
+ ApplicationNode wfApplicationNode = null;
+ WorkflowOutputNode wfOutportNode = null;
List<PortContainer> nextPortContainerList = new ArrayList<PortContainer>();
for (PortContainer portContainer : portContainerList) {
dataPort = portContainer.getDataPort();
@@ -123,17 +134,21 @@ public class AiravataDefaultParser implements WorkflowParser {
inPort.setInputObject(getInputDataObject(dataPort));
if (node instanceof WSNode) {
WSNode wsNode = (WSNode) node;
- wfNode = wfNodes.get(wsNode.getID());
- if (wfNode == null) {
- wfNode = new ApplicationNodeImpl(wsNode.getID(),
+ wfApplicationNode = (ApplicationNode) wfNodes.get(wsNode.getID());
+ if (wfApplicationNode == null) {
+ wfApplicationNode = new ApplicationNodeImpl(wsNode.getID(),
wsNode.getComponent().getApplication().getApplicationId());
- nextPortContainerList.addAll(processOutPorts(wsNode, wfNode));
+ wfNodes.put(wfApplicationNode.getNodeId(), wfApplicationNode);
+ nextPortContainerList.addAll(processOutPorts(wsNode, wfApplicationNode));
}
+ inPort.setNode(wfApplicationNode);
+ wfApplicationNode.addInPort(inPort);
+
}else if (node instanceof OutputNode) {
OutputNode oNode = (OutputNode) node;
- wfNode = new WorkflowInputNodeImpl(oNode.getID(), oNode.getName());
+ wfOutportNode = new WorkflowOutputNodeImpl(oNode.getID(), oNode.getName());
+ wfOutportNode.setInPort(inPort);
}
- inPort.setNode(wfNode);
buildModel(nextPortContainerList);
// set the workflow node to inPort
// if require check the types of inputs and output ports,
@@ -148,7 +163,7 @@ public class AiravataDefaultParser implements WorkflowParser {
private List<PortContainer> processOutPorts(Node node, WorkflowNode wfNode) {
OutPort outPort ;
Edge edge;
- InPort inPort;
+ InPort inPort = null;
List<PortContainer> portContainers = new ArrayList<PortContainer>();
for (DataPort dataPort : node.getOutputPorts()) {
outPort = new OutPortImpl(dataPort.getID());
@@ -161,6 +176,15 @@ public class AiravataDefaultParser implements WorkflowParser {
inPort.addEdge(edge);
portContainers.add(new PortContainer(dataEdge.getToPort(), inPort));
}
+ outPort.setNode(wfNode);
+ if (wfNode instanceof WorkflowInputNode) {
+ WorkflowInputNode workflowInputNode = (WorkflowInputNode) wfNode;
+ workflowInputNode.setOutPort(outPort);
+ }else if (wfNode instanceof ApplicationNode) {
+ ApplicationNode applicationNode = ((ApplicationNode) wfNode);
+ applicationNode.addOutPort(outPort);
+ applicationNode.addInPort(inPort);
+ }
}
return portContainers;
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/9445b7a1/modules/simple-workflow/src/test/java/org/apache/ariavata/simple/workflow/engine/WorkflowDAGTest.java
----------------------------------------------------------------------
diff --git a/modules/simple-workflow/src/test/java/org/apache/ariavata/simple/workflow/engine/WorkflowDAGTest.java b/modules/simple-workflow/src/test/java/org/apache/ariavata/simple/workflow/engine/WorkflowDAGTest.java
index 4e3a120..645af42 100644
--- a/modules/simple-workflow/src/test/java/org/apache/ariavata/simple/workflow/engine/WorkflowDAGTest.java
+++ b/modules/simple-workflow/src/test/java/org/apache/ariavata/simple/workflow/engine/WorkflowDAGTest.java
@@ -21,5 +21,7 @@ public class WorkflowDAGTest {
@Test
public void testWorkflowDAG() throws Exception {
+
+
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata/blob/9445b7a1/modules/simple-workflow/src/test/java/org/apache/ariavata/simple/workflow/engine/parser/AiravataDefaultParserTest.java
----------------------------------------------------------------------
diff --git a/modules/simple-workflow/src/test/java/org/apache/ariavata/simple/workflow/engine/parser/AiravataDefaultParserTest.java b/modules/simple-workflow/src/test/java/org/apache/ariavata/simple/workflow/engine/parser/AiravataDefaultParserTest.java
new file mode 100644
index 0000000..0d56aa4
--- /dev/null
+++ b/modules/simple-workflow/src/test/java/org/apache/ariavata/simple/workflow/engine/parser/AiravataDefaultParserTest.java
@@ -0,0 +1,71 @@
+package org.apache.ariavata.simple.workflow.engine.parser;
+
+import junit.framework.Assert;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
+import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
+import org.apache.airavata.model.workspace.experiment.Experiment;
+import org.apache.airavata.workflow.model.wf.Workflow;
+import org.apache.ariavata.simple.workflow.engine.dag.nodes.WorkflowInputNode;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.util.ArrayList;
+import java.util.List;
+
+public class AiravataDefaultParserTest {
+
+ @Before
+ public void setUp() throws Exception {
+
+ }
+
+ @After
+ public void tearDown() throws Exception {
+
+ }
+
+ @Test
+ public void testWorkflowParse() throws Exception {
+ File jsonWfFile = new File("modules/simple-workflow/src/test/resources/ComplexMathWorkflow.awf");
+ BufferedReader br = new BufferedReader(new FileReader(jsonWfFile));
+ StringBuffer sb = new StringBuffer();
+ String nextLine = br.readLine();
+ while (nextLine != null) {
+ sb.append(nextLine);
+ nextLine = br.readLine();
+ }
+
+ Workflow workflow = new Workflow(sb.toString());
+ AiravataDefaultParser parser = new AiravataDefaultParser("testExperimentId", "testCredentialId");
+ Experiment experiment = new Experiment();
+ InputDataObjectType x = new InputDataObjectType();
+ x.setValue("6");
+ x.setType(DataType.STRING);
+ x.setName("x");
+
+ InputDataObjectType y = new InputDataObjectType();
+ y.setValue("8");
+ y.setType(DataType.STRING);
+ y.setName("y");
+
+ InputDataObjectType z = new InputDataObjectType();
+ z.setValue("10");
+ z.setType(DataType.STRING);
+ z.setName("y_2");
+
+ List<InputDataObjectType> inputs = new ArrayList<InputDataObjectType>();
+ inputs.add(x);
+ inputs.add(y);
+ inputs.add(z);
+ experiment.setExperimentInputs(inputs);
+ parser.setExperiment(experiment);
+ List<WorkflowInputNode> workflowInputNodes = parser.parseWorkflow(workflow);
+ Assert.assertNotNull(workflowInputNodes);
+ Assert.assertEquals(3, workflowInputNodes.size());
+
+ }
+}
\ No newline at end of file