Improve testing the nested workflow tool
- Check if nesting processor doesn't already have a bound activity
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 0823e3b..bb5bcbe 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
@@ -764,12 +764,10 @@
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.
- }
+ List<ProcessorBinding> processorBindings = processorBindingsForProcessor(processor, profile);
+ if(processorBindings.size() != 0) {
+ throw new IllegalStateException("Processor " + processor + "already has a binding")
+ }
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 179553b..f336af0 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
@@ -51,6 +51,7 @@
import org.apache.taverna.scufl2.api.profiles.Profile;
import org.junit.Before;
import org.junit.Test;
+import sun.security.krb5.Config;
public class TestScufl2Tools extends ExampleWorkflow {
@@ -81,19 +82,13 @@
assertEquals(child, nested);
- boolean found = false;
+ ProcessorBinding binding = processor.getBinding(profile);
+ Activity activity = binding.getBoundActivity();
+ Configuration configuration = activity.getConfiguration();
- 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);
+ assertEquals(activity.getType(), Scufl2Tools.NESTED_WORKFLOW);
+ String nestedWorkflowName = configuration.getJson().get("nestedWorkflow").asText();
+ assertEquals(nestedWorkflowName, child.getName());
}
@Test