View Javadoc

1   /**
2    * 
3    */
4   package net.sf.crispy.impl;
5   
6   import java.util.ArrayList;
7   import java.util.List;
8   
9   import net.sf.crispy.InterceptorContext;
10  import net.sf.crispy.Modifier;
11  
12  /**
13   * You can link together several Modifier in a chain.
14   * 
15   * @author Linke
16   *
17   */
18  public class ModifierChain implements Modifier {
19  	
20  	private List modifiers = new ArrayList();
21  	
22  	public void addModifier(Modifier pvModifier) { modifiers.add(pvModifier); }
23  	public void removeModifier(int pvPos) { modifiers.remove(pvPos); }
24  	public int size () { return modifiers.size(); }
25  
26  	public InterceptorContext modifyBeforeInvocation(InterceptorContext pvInterceptorContext) {
27  		InterceptorContext lvContext = pvInterceptorContext;
28  		for (int i = 0; i < modifiers.size(); i++) {
29  			Modifier lvModifier = (Modifier) modifiers.get(i);
30  			lvContext = lvModifier.modifyBeforeInvocation(lvContext);
31  		}
32  		return lvContext;
33  	}
34  
35  	public InterceptorContext modifyAfterInvocation(InterceptorContext pvInterceptorContext) {
36  		InterceptorContext lvContext = pvInterceptorContext;
37  		for (int i = 0; i < modifiers.size(); i++) {
38  			Modifier lvModifier = (Modifier) modifiers.get(i);
39  			lvContext = lvModifier.modifyAfterInvocation(lvContext);
40  		}
41  		return lvContext;
42  	}
43  
44  }