Change nesting method name, Add a test
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/3efbf085 Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/3efbf085 Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/3efbf085 Branch: refs/heads/master Commit: 3efbf0857f0ed3c8d7fa8b52f45bdc73af2ff747 Parents: d93452d Author: Majdi Haouech <m.haou...@criteo.com> Authored: Mon Aug 6 23:59:57 2018 +0200 Committer: Majdi Haouech <m.haou...@criteo.com> Committed: Mon Aug 6 23:59:57 2018 +0200 ---------------------------------------------------------------------- .../taverna/scufl2/api/common/Scufl2Tools.java | 8 +++++++- .../scufl2/api/common/TestScufl2Tools.java | 20 ++++++++++++++++---- 2 files changed, 23 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3efbf085/taverna-scufl2-api/src/main/java/org/apache/taverna/scufl2/api/common/Scufl2Tools.java ---------------------------------------------------------------------- diff --git a/taverna-scufl2-api/src/main/java/org/apache/taverna/scufl2/api/common/Scufl2Tools.java b/taverna-scufl2-api/src/main/java/org/apache/taverna/scufl2/api/common/Scufl2Tools.java index f7f7698..0823e3b 100644 --- a/taverna-scufl2-api/src/main/java/org/apache/taverna/scufl2/api/common/Scufl2Tools.java +++ b/taverna-scufl2-api/src/main/java/org/apache/taverna/scufl2/api/common/Scufl2Tools.java @@ -753,7 +753,7 @@ public class Scufl2Tools { return activity; } - public Configuration createNestedRelationship(Processor processor, Workflow childWorkflow, Profile profile) { + public Configuration setAsNestedWorkflow(Processor processor, Workflow childWorkflow, Profile profile) { if(processor.getParent() == null) { throw new IllegalStateException("Processor " + processor + " has no parent"); } @@ -764,6 +764,12 @@ public class Scufl2Tools { if(nestedWorkflowForProcessor(processor, profile) != null) { throw new IllegalStateException("Processor " + processor + " already has a nested workflow"); } + try { + processor.getActivity(profile); + throw new IllegalStateException("Processor " + processor + " already has a bound activity"); + } catch(IndexOutOfBoundsException e) { + // Processor should have no bound activity, which is the case here. + } Activity activity = createActivityFromProcessor(processor, profile); activity.setType(NESTED_WORKFLOW); http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3efbf085/taverna-scufl2-api/src/test/java/org/apache/taverna/scufl2/api/common/TestScufl2Tools.java ---------------------------------------------------------------------- diff --git a/taverna-scufl2-api/src/test/java/org/apache/taverna/scufl2/api/common/TestScufl2Tools.java b/taverna-scufl2-api/src/test/java/org/apache/taverna/scufl2/api/common/TestScufl2Tools.java index 24fc788..179553b 100644 --- a/taverna-scufl2-api/src/test/java/org/apache/taverna/scufl2/api/common/TestScufl2Tools.java +++ b/taverna-scufl2-api/src/test/java/org/apache/taverna/scufl2/api/common/TestScufl2Tools.java @@ -34,10 +34,8 @@ import java.util.Set; import org.apache.taverna.scufl2.api.ExampleWorkflow; import org.apache.taverna.scufl2.api.activity.Activity; -import org.apache.taverna.scufl2.api.common.Child; -import org.apache.taverna.scufl2.api.common.Scufl2Tools; -import org.apache.taverna.scufl2.api.common.WorkflowBean; import org.apache.taverna.scufl2.api.common.Visitor.VisitorWithPath; +import org.apache.taverna.scufl2.api.configurations.Configuration; import org.apache.taverna.scufl2.api.container.WorkflowBundle; import org.apache.taverna.scufl2.api.core.ControlLink; import org.apache.taverna.scufl2.api.core.Processor; @@ -78,10 +76,24 @@ public class TestScufl2Tools extends ExampleWorkflow { Profile profile = workflowBundle.getMainProfile(); Scufl2Tools tools = new Scufl2Tools(); - tools.createNestedRelationship(processor, child, profile); + tools.setAsNestedWorkflow(processor, child, profile); Workflow nested = tools.nestedWorkflowForProcessor(processor, profile); assertEquals(child, nested); + + boolean found = false; + + for(Activity activity: profile.getActivities()) { + if(activity.getType().equals(Scufl2Tools.NESTED_WORKFLOW)) { + for(Configuration config: tools.configurationsFor(activity, profile)) { + String nestedWorkflowName = config.getJson().get("nestedWorkflow").asText(); + Workflow wf = workflowBundle.getWorkflows().getByName(nestedWorkflowName); + found |= (wf != null && nestedWorkflowName.equals(child.getName())); + } + } + } + + assertTrue(found); } @Test