package org.springframework.webflow.test;
import org.springframework.binding.convert.ConversionService;
import org.springframework.binding.convert.service.DefaultConversionService;
import org.springframework.context.support.StaticApplicationContext;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.webflow.engine.builder.support.FlowBuilderServices;
import org.springframework.webflow.expression.spel.WebFlowSpringELExpressionParser;
/**
* Factory that encapsulates configuration of default flow builder services for a test environment.
* @author Keith Donald
*/
public class TestFlowBuilderServicesFactory {
private TestFlowBuilderServicesFactory() {
}
public static FlowBuilderServices getServices() {
FlowBuilderServices services = new FlowBuilderServices() {
// The SpEL parser must use the currently configured conversion service.
public void setConversionService(ConversionService conversionService) {
super.setConversionService(conversionService);
setExpressionParser(new WebFlowSpringELExpressionParser(new SpelExpressionParser(), conversionService));
}
};
services.setViewFactoryCreator(new MockViewFactoryCreator());
services.setConversionService(new DefaultConversionService());
services.setApplicationContext(createTestApplicationContext());
return services;
}
private static StaticApplicationContext createTestApplicationContext() {
StaticApplicationContext context = new StaticApplicationContext();
context.refresh();
return context;
}
}