Change nesting method name, Add a test
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 @@
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 @@
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);
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 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 @@
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