package org.springframework.webflow.engine.model.registry; import java.util.Collections; import java.util.LinkedList; import junit.framework.TestCase; import org.springframework.core.io.Resource; import org.springframework.webflow.engine.model.AbstractStateModel; import org.springframework.webflow.engine.model.EndStateModel; import org.springframework.webflow.engine.model.FlowModel; import org.springframework.webflow.engine.model.builder.DefaultFlowModelHolder; import org.springframework.webflow.engine.model.builder.FlowModelBuilder; import org.springframework.webflow.engine.model.builder.FlowModelBuilderException; public class DefaultFlowModelHolderTests extends TestCase { private DefaultFlowModelHolder holder; private FlowModelBuilder builder; protected void setUp() { builder = new SimpleFlowBuilder(); holder = new DefaultFlowModelHolder(builder); } public void testGetFlowDefinition() { FlowModel flow = holder.getFlowModel(); assertNull(flow.getStartStateId()); assertEquals("end", flow.getStates().get(0).getId()); } public void testGetFlowDefinitionWithChangesRefreshed() { FlowModel flow = holder.getFlowModel(); holder.refresh(); flow = holder.getFlowModel(); assertNull(flow.getStartStateId()); assertEquals("end", flow.getStates().get(0).getId()); } public class SimpleFlowBuilder implements FlowModelBuilder { public FlowModel getFlowModel() throws FlowModelBuilderException { FlowModel flow = new FlowModel(); flow.setStates(new LinkedList<AbstractStateModel>(Collections.singletonList(new EndStateModel("end")))); return flow; } public void build() throws FlowModelBuilderException { // no-op } public void mergeParent() throws FlowModelBuilderException { // no-op } public void dispose() throws FlowModelBuilderException { // no-op } public void init() throws FlowModelBuilderException { // no-op } public Resource getFlowModelResource() { return null; } public boolean hasFlowModelResourceChanged() { return false; } } }