Return-Path: X-Original-To: apmail-airavata-commits-archive@www.apache.org Delivered-To: apmail-airavata-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id C5F1010E4D for ; Wed, 18 Feb 2015 22:05:03 +0000 (UTC) Received: (qmail 19163 invoked by uid 500); 18 Feb 2015 22:05:00 -0000 Delivered-To: apmail-airavata-commits-archive@airavata.apache.org Received: (qmail 19023 invoked by uid 500); 18 Feb 2015 22:05:00 -0000 Mailing-List: contact commits-help@airavata.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@airavata.apache.org Delivered-To: mailing list commits@airavata.apache.org Received: (qmail 18976 invoked by uid 99); 18 Feb 2015 22:05:00 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 18 Feb 2015 22:05:00 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id E6936E0837; Wed, 18 Feb 2015 22:04:59 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: shameera@apache.org To: commits@airavata.apache.org Date: Wed, 18 Feb 2015 22:05:06 -0000 Message-Id: <74ba9407de024b79a3cbc515fc72d448@git.apache.org> In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [08/14] 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/new-workflow-design Commit: 9445b7a10596c509cbe7950a470add94b3deb32a Parents: e3ce93e Author: shamrath Authored: Mon Feb 16 11:19:18 2015 -0500 Committer: shamrath 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 getInputPorts(); -// public void addOutputPort(OutPort outPort); + public void addOutPort(OutPort outPort); public List 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 inPorts = new ArrayList(); + private List outPorts = new ArrayList(); 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 getInputPorts() { - return null; // TODO: Auto generated method body. + return this.inPorts; + } + + @Override + public void addOutPort(OutPort outPort) { + this.outPorts.add(outPort); } @Override public List 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 outEdges; + private List outEdges = new ArrayList(); 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 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 wfNodes = new HashMap(); + private Map wfNodes = new HashMap(); public AiravataDefaultParser(String experimentId, String credentialToken) { @@ -66,7 +75,7 @@ public class AiravataDefaultParser implements WorkflowParser { return parseWorkflow(getWorkflowFromExperiment()); } - private List parseWorkflow(Workflow workflow) { + public List parseWorkflow(Workflow workflow) { List gNodes = getInputNodes(workflow); List wfInputNodes = new ArrayList(); List portContainers = new ArrayList(); @@ -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 nextPortContainerList = new ArrayList(); 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 processOutPorts(Node node, WorkflowNode wfNode) { OutPort outPort ; Edge edge; - InPort inPort; + InPort inPort = null; List portContainers = new ArrayList(); 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 inputs = new ArrayList(); + inputs.add(x); + inputs.add(y); + inputs.add(z); + experiment.setExperimentInputs(inputs); + parser.setExperiment(experiment); + List workflowInputNodes = parser.parseWorkflow(workflow); + Assert.assertNotNull(workflowInputNodes); + Assert.assertEquals(3, workflowInputNodes.size()); + + } +} \ No newline at end of file