1 16 package org.springframework.webflow.engine.support; 17 18 import java.io.Serializable ; 19 20 import org.springframework.binding.expression.Expression; 21 import org.springframework.binding.expression.ExpressionParser; 22 import org.springframework.binding.expression.SettableExpression; 23 import org.springframework.binding.mapping.AttributeMapper; 24 import org.springframework.binding.mapping.DefaultAttributeMapper; 25 import org.springframework.binding.mapping.Mapping; 26 import org.springframework.core.style.ToStringCreator; 27 import org.springframework.util.Assert; 28 import org.springframework.webflow.core.DefaultExpressionParserFactory; 29 import org.springframework.webflow.execution.ScopeType; 30 31 56 public class ConfigurableFlowAttributeMapper extends AbstractFlowAttributeMapper implements Serializable { 57 58 62 private ExpressionParser expressionParser = DefaultExpressionParserFactory.getExpressionParser(); 63 64 67 private DefaultAttributeMapper inputMapper = new DefaultAttributeMapper(); 68 69 72 private DefaultAttributeMapper outputMapper = new DefaultAttributeMapper(); 73 74 78 public void setExpressionParser(ExpressionParser expressionParser) { 79 Assert.notNull(expressionParser, "The expression parser is required"); 80 this.expressionParser = expressionParser; 81 } 82 83 89 public ConfigurableFlowAttributeMapper addInputMapping(AttributeMapper inputMapping) { 90 inputMapper.addMapping(inputMapping); 91 return this; 92 } 93 94 99 public void addInputMappings(AttributeMapper[] inputMappings) { 100 inputMapper.addMappings(inputMappings); 101 } 102 103 109 public ConfigurableFlowAttributeMapper addOutputMapping(AttributeMapper outputMapping) { 110 outputMapper.addMapping(outputMapping); 111 return this; 112 } 113 114 119 public void addOutputMappings(AttributeMapper[] outputMappings) { 120 outputMapper.addMappings(outputMappings); 121 } 122 123 131 public ConfigurableFlowAttributeMapper addInputAttribute(String attributeName) { 132 SettableExpression attribute = expressionParser.parseSettableExpression(attributeName); 133 Expression scope = new AttributeExpression(attribute, ScopeType.FLOW); 134 addInputMapping(new Mapping(scope, attribute, null)); 135 return this; 136 } 137 138 146 public void addInputAttributes(String [] attributeNames) { 147 if (attributeNames == null) { 148 return; 149 } 150 for (int i = 0; i < attributeNames.length; i++) { 151 addInputAttribute(attributeNames[i]); 152 } 153 } 154 155 164 public ConfigurableFlowAttributeMapper addOutputAttribute(String attributeName) { 165 Expression attribute = expressionParser.parseExpression(attributeName); 166 SettableExpression scope = new AttributeExpression(attribute, ScopeType.FLOW); 167 addOutputMapping(new Mapping(attribute, scope, null)); 168 return this; 169 } 170 171 179 public void addOutputAttributes(String [] attributeNames) { 180 if (attributeNames == null) { 181 return; 182 } 183 for (int i = 0; i < attributeNames.length; i++) { 184 addOutputAttribute(attributeNames[i]); 185 } 186 } 187 188 192 public AttributeMapper[] getInputMappings() { 193 return inputMapper.getMappings(); 194 } 195 196 200 public AttributeMapper[] getOutputMappings() { 201 return outputMapper.getMappings(); 202 } 203 204 208 protected ExpressionParser getExpressionParser() { 209 return expressionParser; 210 } 211 212 protected AttributeMapper getInputMapper() { 213 return inputMapper; 214 } 215 216 protected AttributeMapper getOutputMapper() { 217 return outputMapper; 218 } 219 220 public String toString() { 221 return new ToStringCreator(this).append("inputMapper", inputMapper).append("outputMapper", outputMapper) 222 .toString(); 223 } 224 } | Popular Tags |