package org.springframework.webflow.config; import java.util.HashSet; import java.util.Set; import junit.framework.TestCase; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.registry.FlowDefinitionConstructionException; import org.springframework.webflow.definition.registry.FlowDefinitionLocator; import org.springframework.webflow.definition.registry.NoSuchFlowDefinitionException; import org.springframework.webflow.engine.EndState; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.StubViewFactory; import org.springframework.webflow.engine.Transition; import org.springframework.webflow.engine.ViewState; import org.springframework.webflow.engine.support.DefaultTargetStateResolver; import org.springframework.webflow.execution.FlowExecutionListener; import org.springframework.webflow.execution.FlowExecutionListenerAdapter; import org.springframework.webflow.execution.factory.StaticFlowExecutionListenerLoader; public class FlowExecutorFactoryBeanTests extends TestCase { private FlowExecutorFactoryBean factoryBean; public void setUp() { factoryBean = new FlowExecutorFactoryBean(); } public void testGetFlowExecutorNoPropertiesSet() throws Exception { try { factoryBean.afterPropertiesSet(); } catch (IllegalArgumentException e) { } } public void testGetFlowExecutorBasicConfig() throws Exception { factoryBean.setFlowDefinitionLocator(new FlowDefinitionLocator() { public FlowDefinition getFlowDefinition(String id) throws NoSuchFlowDefinitionException, FlowDefinitionConstructionException { Flow flow = new Flow(id); ViewState view = new ViewState(flow, "view", new StubViewFactory()); view.getTransitionSet().add(new Transition(new DefaultTargetStateResolver("end"))); new EndState(flow, "end"); return flow; } }); factoryBean.afterPropertiesSet(); factoryBean.getObject(); } public void testGetFlowExecutorOptionsSpecified() throws Exception { factoryBean.setFlowDefinitionLocator(new FlowDefinitionLocator() { public FlowDefinition getFlowDefinition(String id) throws NoSuchFlowDefinitionException, FlowDefinitionConstructionException { Flow flow = new Flow(id); ViewState view = new ViewState(flow, "view", new StubViewFactory()); view.getTransitionSet().add(new Transition(new DefaultTargetStateResolver("end"))); new EndState(flow, "end"); return flow; } }); Set<FlowElementAttribute> attributes = new HashSet<FlowElementAttribute>(); attributes.add(new FlowElementAttribute("foo", "bar", null)); factoryBean.setFlowExecutionAttributes(attributes); FlowExecutionListener listener = new FlowExecutionListenerAdapter() { }; factoryBean.setFlowExecutionListenerLoader(new StaticFlowExecutionListenerLoader(listener)); factoryBean.setMaxFlowExecutionSnapshots(2); factoryBean.setMaxFlowExecutions(1); factoryBean.afterPropertiesSet(); factoryBean.getObject(); } }