1 16 package org.springframework.webflow.engine.support; 17 18 import java.util.Arrays ; 19 import java.util.Iterator ; 20 import java.util.LinkedList ; 21 import java.util.List ; 22 23 import org.springframework.core.style.ToStringCreator; 24 import org.springframework.webflow.engine.AnnotatedAction; 25 import org.springframework.webflow.engine.TransitionCriteria; 26 import org.springframework.webflow.engine.WildcardTransitionCriteria; 27 import org.springframework.webflow.execution.RequestContext; 28 29 36 public class TransitionCriteriaChain implements TransitionCriteria { 37 38 41 private List criteriaChain = new LinkedList (); 42 43 47 public TransitionCriteriaChain() { 48 } 49 50 54 public TransitionCriteriaChain(TransitionCriteria[] criteria) { 55 criteriaChain.addAll(Arrays.asList(criteria)); 56 } 57 58 64 public TransitionCriteriaChain add(TransitionCriteria criteria) { 65 this.criteriaChain.add(criteria); 66 return this; 67 } 68 69 public boolean test(RequestContext context) { 70 Iterator it = criteriaChain.iterator(); 71 while (it.hasNext()) { 72 TransitionCriteria criteria = (TransitionCriteria)it.next(); 73 if (!criteria.test(context)) { 74 return false; 75 } 76 } 77 return true; 78 } 79 80 public String toString() { 81 return new ToStringCreator(this).append("criteriaChain", criteriaChain).toString(); 82 } 83 84 86 90 public static TransitionCriteria criteriaChainFor(AnnotatedAction[] actions) { 91 if (actions == null || actions.length == 0) { 92 return WildcardTransitionCriteria.INSTANCE; 93 } 94 TransitionCriteriaChain chain = new TransitionCriteriaChain(); 95 for (int i = 0; i < actions.length; i++) { 96 chain.add(new ActionTransitionCriteria(actions[i])); 97 } 98 return chain; 99 } 100 } | Popular Tags |