View Javadoc

1   /*
2    * Created on 3 janv. 2005
3    *
4    * TODO To change the template for this generated file go to
5    * Window - Preferences - Java - Code Style - Code Templates
6    */
7   package genie.core;
8   
9   
10  import org.apache.commons.chain.impl.ContextBase;
11  import org.apache.commons.digester.CallMethodRule;
12  import org.apache.commons.digester.CallParamRule;
13  import org.apache.commons.digester.Digester;
14  import org.apache.commons.digester.ObjectCreateRule;
15  import org.apache.commons.digester.Rules;
16  
17  /***
18   * 
19   *
20   * @author T. Kia Ntoni
21   * 
22   * 3 janv. 2005 
23   * ConfigRuleSet @version 
24   */
25  public class ContextRuleSet extends AbstractRuleSet {
26  
27      /***
28       * 
29       */
30      public ContextRuleSet() {
31          super();
32          // TODO Auto-generated constructor stub
33      }
34  
35      /* (non-Javadoc)
36       * @see org.apache.commons.digester.RuleSet#addRuleInstances(org.apache.commons.digester.Digester)
37       */
38      public void addRuleInstances(Digester digester) {
39          // --------------- COMMONS ---------------------------
40          super.addRuleInstances(digester);
41          Rules rules = digester.getRules();
42          // --------- ROOT CONTEXT ASSUMED BY PARENT MANAGER ------------
43          /*
44           * To enforce precedence and due to the specific method call
45           * (putEntry intead of traversalPut), defining the ruleset for all root context 
46           * (ie genie[/'*'/[project/'*'/[task/'*'/[task-def]]]]/context )
47           * is delegated to the class providing the ruleset for the related manager,
48           * genie, project, task or task-def manager.
49           */        
50          // --------------- NESTED CONTEXT ONLY ---------------------------        
51          // CREATE NESTED CONTEXT
52          rules.add("!*/context", new ObjectCreateRule("className", ContextBase.class));
53          // ADD NESTED TO PARENT CONTEXT        
54          rules.add("!*/context/context", new CallMethodRule(1 , "put", 2, contextItemParams));        
55          rules.add("!*/context/context", new CallParamRule(0, "id"));        
56          rules.add("!*/context/context", new CallParamRule(1, true));
57          // ADD ENTRY TO NESTED CONTEXT
58          rules.add("!*/context/entry", new CallMethodRule("put", 2, contextItemParams));
59          rules.add("!*/context/entry", new CallParamRule( 0, "key"));
60          rules.add("!*/context/entry", new CallParamRule(1));
61          // ADD RULES TO DIGESTER
62          //digester.add(rules);
63      }
64  
65  }