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 }