IN PROGRESS - issue SWF-720: Multiple checkboxes to Collection mapping

http://jira.springframework.org/browse/SWF-720
This commit is contained in:
Keith Donald
2008-06-30 21:04:28 +00:00
parent 3ffdc587f6
commit 390b914d4f
10 changed files with 88 additions and 34 deletions

View File

@@ -218,7 +218,7 @@ class FlowExecutorFactoryBean implements FactoryBean, ApplicationContextAware, I
}
}
private Class fromStringToClass(String type) {
return (Class) conversionService.getConversionExecutor(String.class, Class.class).execute(type);
private Class fromStringToClass(String name) {
return conversionService.getClassByName(name);
}
}

View File

@@ -237,8 +237,7 @@ class FlowRegistryFactoryBean implements FactoryBean, InitializingBean {
}
private Class fromStringToClass(String type) {
return (Class) flowBuilderServices.getConversionService().getConversionExecutor(String.class, Class.class)
.execute(type);
return flowBuilderServices.getConversionService().getClassByName(type);
}
private FlowDefinition buildFlowDefinition(FlowBuilderInfo builderInfo) {

View File

@@ -375,7 +375,7 @@ public class FlowModelFlowBuilder extends AbstractFlowBuilder {
}
private FlowVariable parseFlowVariable(VarModel var) {
Class clazz = (Class) fromStringTo(Class.class).execute(var.getClassName());
Class clazz = toClass(var.getClassName());
VariableValueFactory valueFactory = new BeanFactoryVariableValueFactory(clazz, getFlow()
.getApplicationContext().getAutowireCapableBeanFactory());
return new FlowVariable(var.getName(), valueFactory);
@@ -499,7 +499,7 @@ public class FlowModelFlowBuilder extends AbstractFlowBuilder {
private void parseAndSetMappingConversionExecutor(AbstractMappingModel mappingModel, DefaultMapping mapping) {
if (StringUtils.hasText(mappingModel.getType())) {
Class type = (Class) fromStringTo(Class.class).execute(mappingModel.getType());
Class type = toClass(mappingModel.getType());
ConversionExecutor typeConverter = new RuntimeBindingConversionExecutor(type, getLocalContext()
.getConversionService());
mapping.setTypeConverter(typeConverter);
@@ -624,7 +624,7 @@ public class FlowModelFlowBuilder extends AbstractFlowBuilder {
}
private ViewVariable parseViewVariable(VarModel var) {
Class clazz = (Class) fromStringTo(Class.class).execute(var.getClassName());
Class clazz = toClass(var.getClassName());
VariableValueFactory valueFactory = new BeanFactoryVariableValueFactory(clazz, getFlow()
.getApplicationContext().getAutowireCapableBeanFactory());
return new ViewVariable(var.getName(), valueFactory);
@@ -718,7 +718,7 @@ public class FlowModelFlowBuilder extends AbstractFlowBuilder {
private FlowExecutionExceptionHandler parseTransitionExecutingExceptionHandler(TransitionModel transition) {
TransitionExecutingFlowExecutionExceptionHandler handler = new TransitionExecutingFlowExecutionExceptionHandler();
Class exceptionClass = (Class) fromStringTo(Class.class).execute(transition.getOnException());
Class exceptionClass = toClass(transition.getOnException());
TargetStateResolver targetStateResolver = (TargetStateResolver) fromStringTo(TargetStateResolver.class)
.execute(transition.getTo());
handler.add(exceptionClass, targetStateResolver);
@@ -820,7 +820,7 @@ public class FlowModelFlowBuilder extends AbstractFlowBuilder {
new FluentParserContext().evaluate(RequestContext.class));
Class expectedResultType = null;
if (StringUtils.hasText(evaluate.getResultType())) {
expectedResultType = (Class) fromStringTo(Class.class).execute(evaluate.getResultType());
expectedResultType = toClass(evaluate.getResultType());
}
return new ActionResultExposer(resultExpression, expectedResultType, getLocalContext()
.getConversionService());
@@ -849,7 +849,7 @@ public class FlowModelFlowBuilder extends AbstractFlowBuilder {
new FluentParserContext().evaluate(RequestContext.class));
Class expectedType = null;
if (StringUtils.hasText(set.getType())) {
expectedType = (Class) fromStringTo(Class.class).execute(set.getType());
expectedType = toClass(set.getType());
}
return new SetAction(nameExpression, valueExpression, expectedType, getLocalContext().getConversionService());
}
@@ -874,7 +874,7 @@ public class FlowModelFlowBuilder extends AbstractFlowBuilder {
private Object parseAttributeValueIfNecessary(AttributeModel attribute, String stringValue) {
if (StringUtils.hasText(attribute.getType())) {
Class targetClass = (Class) fromStringTo(Class.class).execute(attribute.getType());
Class targetClass = toClass(attribute.getType());
return fromStringTo(targetClass).execute(stringValue);
} else {
return stringValue;
@@ -909,6 +909,10 @@ public class FlowModelFlowBuilder extends AbstractFlowBuilder {
return getLocalContext().getConversionService().getConversionExecutor(String.class, targetType);
}
private Class toClass(String name) {
return getLocalContext().getConversionService().getClassByName(name);
}
private static class FlowRelativeResourceLoader implements ResourceLoader {
private Resource resource;

View File

@@ -123,6 +123,11 @@ public class FlowBuilderContextImpl implements FlowBuilderContext {
throws ConversionExecutionException {
return getFlowBuilderServices().getConversionService().getConversionExecutor(sourceClass, targetClass);
}
public Class getClassByName(String name) {
return getFlowBuilderServices().getConversionService().getClassByName(name);
}
}
}

View File

@@ -54,22 +54,12 @@ public class FlowBuilderServicesBeanDefinitionParserTests extends TestCase {
public static class TestConversionService implements ConversionService {
public Class getClassByAlias(String alias) throws ConversionExecutionException {
throw new UnsupportedOperationException("Auto-generated method stub");
}
public ConversionExecutor getConversionExecutor(Class sourceClass, Class targetClass)
throws ConversionExecutionException {
throw new UnsupportedOperationException("Auto-generated method stub");
}
public ConversionExecutor getConversionExecutorByTargetAlias(Class sourceClass, String targetAlias)
throws ConversionExecutionException {
throw new UnsupportedOperationException("Auto-generated method stub");
}
public ConversionExecutor[] getConversionExecutorsForSource(Class sourceClass)
throws ConversionExecutionException {
public Class getClassByName(String alias) throws ConversionExecutionException {
throw new UnsupportedOperationException("Auto-generated method stub");
}