package org.jbpm.graph.def; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; import org.jbpm.db.AbstractDbTestCase; public class SuperStateDbTest extends AbstractDbTestCase { public void testGetNodesWithSuperState() { ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>" + " <node name='phase zero'/>" + " <super-state name='phase one'>" + " <node name='ignition' />" + " <node name='explosion' />" + " <super-state name='cleanup'>" + " <node name='take brush' />" + " <node name='sweep floor' />" + " <node name='blow dry' />" + " </super-state>" + " <node name='repare' />" + " </super-state>" + "</process-definition>"); processDefinition = saveAndReload(processDefinition); Set expectedNodeNames = new HashSet(); expectedNodeNames.add("phase zero"); expectedNodeNames.add("phase one"); assertEquals(expectedNodeNames, getNodeNames(processDefinition.getNodes())); SuperState phaseOne = (SuperState) processDefinition.getNode("phase one"); expectedNodeNames.clear(); expectedNodeNames.add("ignition"); expectedNodeNames.add("explosion"); expectedNodeNames.add("cleanup"); expectedNodeNames.add("repare"); assertEquals(expectedNodeNames, getNodeNames(phaseOne.getNodes())); SuperState cleanup = (SuperState) phaseOne.getNode("cleanup"); expectedNodeNames.clear(); expectedNodeNames.add("take brush"); expectedNodeNames.add("sweep floor"); expectedNodeNames.add("blow dry"); assertEquals(expectedNodeNames, getNodeNames(cleanup.getNodes())); } private static Set getNodeNames(List nodes) { Set nodeNames = new HashSet(); for (Iterator iter = nodes.iterator(); iter.hasNext();) { Node node = (Node) iter.next(); nodeNames.add(node.getName()); } return nodeNames; } }