1 16 package org.springframework.webflow.engine.impl; 17 18 import java.util.Map ; 19 20 import org.springframework.util.Assert; 21 import org.springframework.webflow.core.collection.AttributeMap; 22 import org.springframework.webflow.core.collection.CollectionUtils; 23 import org.springframework.webflow.core.collection.LocalAttributeMap; 24 import org.springframework.webflow.definition.FlowDefinition; 25 import org.springframework.webflow.engine.Flow; 26 import org.springframework.webflow.execution.FlowExecution; 27 import org.springframework.webflow.execution.FlowExecutionFactory; 28 import org.springframework.webflow.execution.FlowExecutionListener; 29 import org.springframework.webflow.execution.factory.FlowExecutionListenerLoader; 30 import org.springframework.webflow.execution.factory.StaticFlowExecutionListenerLoader; 31 32 38 public class FlowExecutionImplFactory implements FlowExecutionFactory { 39 40 44 private FlowExecutionListenerLoader executionListenerLoader = StaticFlowExecutionListenerLoader.EMPTY_INSTANCE; 45 46 50 private AttributeMap executionAttributes = CollectionUtils.EMPTY_ATTRIBUTE_MAP; 51 52 57 public AttributeMap getExecutionAttributes() { 58 return executionAttributes; 59 } 60 61 66 public void setExecutionAttributes(AttributeMap executionAttributes) { 67 Assert.notNull(executionAttributes, "The execution attributes map is required"); 68 this.executionAttributes = executionAttributes; 69 } 70 71 79 public void setExecutionAttributesMap(Map executionAttributes) { 80 Assert.notNull(executionAttributes, "The execution attributes map is required"); 81 this.executionAttributes = new LocalAttributeMap(executionAttributes); 82 } 83 84 89 public FlowExecutionListenerLoader getExecutionListenerLoader() { 90 return executionListenerLoader; 91 } 92 93 98 public void setExecutionListenerLoader(FlowExecutionListenerLoader listenerLoader) { 99 Assert.notNull(listenerLoader, "The listener loader is required"); 100 this.executionListenerLoader = listenerLoader; 101 } 102 103 public FlowExecution createFlowExecution(FlowDefinition flowDefinition) { 104 Assert.isInstanceOf(Flow.class, flowDefinition, "Flow definition is of wrong type: "); 105 FlowExecutionListener[] listeners = executionListenerLoader.getListeners(flowDefinition); 106 return new FlowExecutionImpl((Flow)flowDefinition, listeners, executionAttributes); 107 } 108 } | Popular Tags |