1 16 package org.springframework.webflow.engine.builder; 17 18 import org.springframework.binding.convert.ConversionContext; 19 import org.springframework.binding.convert.support.AbstractConverter; 20 import org.springframework.binding.expression.Expression; 21 import org.springframework.webflow.engine.TargetStateResolver; 22 import org.springframework.webflow.engine.support.DefaultTargetStateResolver; 23 24 42 public class TextToTargetStateResolver extends AbstractConverter { 43 44 48 private static final String BEAN_PREFIX = "bean:"; 49 50 53 private FlowServiceLocator flowServiceLocator; 54 55 60 public TextToTargetStateResolver(FlowServiceLocator flowServiceLocator) { 61 this.flowServiceLocator = flowServiceLocator; 62 } 63 64 public Class [] getSourceClasses() { 65 return new Class [] { String .class }; 66 } 67 68 public Class [] getTargetClasses() { 69 return new Class [] { TargetStateResolver.class }; 70 } 71 72 protected Object doConvert(Object source, Class targetClass, ConversionContext context) throws Exception { 73 String targetStateId = (String )source; 74 if (flowServiceLocator.getExpressionParser().isDelimitedExpression(targetStateId)) { 75 Expression expression = flowServiceLocator.getExpressionParser().parseExpression(targetStateId); 76 return new DefaultTargetStateResolver(expression); 77 } 78 else if (targetStateId.startsWith(BEAN_PREFIX)) { 79 return flowServiceLocator.getTargetStateResolver(targetStateId.substring(BEAN_PREFIX.length())); 80 } 81 else { 82 return new DefaultTargetStateResolver(targetStateId); 83 } 84 } 85 } | Popular Tags |