1 16 package org.springframework.webflow.engine.support; 17 18 import java.util.HashMap ; 19 import java.util.Map ; 20 21 import org.springframework.binding.expression.EvaluationContext; 22 import org.springframework.binding.expression.Expression; 23 import org.springframework.util.Assert; 24 import org.springframework.webflow.engine.TransitionCriteria; 25 import org.springframework.webflow.execution.RequestContext; 26 27 36 public class BooleanExpressionTransitionCriteria implements TransitionCriteria { 37 38 42 private static final String RESULT_ALIAS = "result"; 43 44 47 private Expression booleanExpression; 48 49 54 public BooleanExpressionTransitionCriteria(Expression booleanExpression) { 55 Assert.notNull(booleanExpression, "The expression to test is required"); 56 this.booleanExpression = booleanExpression; 57 } 58 59 public boolean test(RequestContext context) { 60 Object result = booleanExpression.evaluate(context, getEvaluationContext(context)); 61 Assert.isInstanceOf(Boolean .class, result, "Impossible to determine result of boolean expression: "); 62 return ((Boolean )result).booleanValue(); 63 } 64 65 69 protected EvaluationContext getEvaluationContext(RequestContext context) { 70 final Map attributes = new HashMap (1, 1); 71 if (context.getLastEvent() != null) { 73 attributes.put(RESULT_ALIAS, context.getLastEvent().getId()); 74 } 75 return new EvaluationContext() { 76 public Map getAttributes() { 77 return attributes; 78 } 79 }; 80 } 81 82 public String toString() { 83 return booleanExpression.toString(); 84 } 85 } | Popular Tags |