Ok, I figured it out.
<rules>
<definition objectClassName="net.pnh.base.Group">
<enforcer
priority="5">net.pnh.rule.GroupRuleEnforcer</enforcer>
<enforcer
priority="9">net.pnh.rule.GroupRuleEnforcer2</enforcer>
<definition/>
<definition objectClassName="net.pnh.base.Individual">
<enforcer
priority="1">net.pnh.rule.IndividualRuleEnforcer</enforcer>
<enforcer
priority="4">net.pnh.rule.IndividualRuleEnforcer2</enforcer>
<definition/>
....
</rules>
I needed to have an EnforcerElement object and add each element to a
list in the EnforcerDefinition class. Furthermore, the name attribute
in the definition tags was changed to "objectClassName" match the setter
in the EnforcerDefinition Class.
I needed three classes:
1. EnforcerDefinitions
methods: set(EnforcerDefinition edef);
2. EnforcerDefinition
methods: addEnforcerElement(EnforcerElement elem)
setObjectClassName(String val)
3. EnforcerElement
methods: setPriority(int val);
setClassName(String val)
Here is the digester setting:
digester.addObjectCreate("rules/definition",
biz.isman.rule.engine.EnforcerDefinition.class);
digester.addSetProperties("rules/definition");
// parse through enforcer elements
digester.addObjectCreate("rules/definition/enforcer",
biz.isman.rule.engine.EnforcerElement.class);
digester.addSetProperties("rules/definition/enforcer");
digester.addCallMethod("rules/definition/enforcer",
"setClassName", 0);
// insert the new EnforcerElement in the EnforcerDefinition
digester.addSetNext("rules/definition/enforcer",
"addEnforcerElement");
// put the new EnforcerDefinition somewhere for later use.
digester.addSetNext("rules/definition", "set");
-----Original Message-----
From: Toni Charlot [mailto:[EMAIL PROTECTED]]
Sent: Monday, January 13, 2003 4:01 PM
To: [EMAIL PROTECTED]
Subject: Unmarshalling using the Digester
Can anyone figure out what I'm doing wrong here? Oh, please?
001 digester.addObjectCreate("rules/definition/enforcerClassName",
002
biz.isman.rule.engine.EnforcerDefinition.class);
003
004 //
005 digester.addCallMethod("rules/definition/enforcer",
"setEnforcerClassName", 0);
006 digester.addSetProperty("rules/definition", "name",
"setObjectClassName");
007 digester.addSetProperties("rules/definition/enforcer");
008 //
009 digester.addSetNext("rules/definition/enforcer",
"addDefinition");
Here is the file I'm trying unmarshall:
<rules>
<definition name="net.pnh.base.Group">
<enforcer
priority="5">net.pnh.rule.GroupRuleEnforcer</enforcer>
<enforcer
priority="9">net.pnh.rule.GroupRuleEnforcer2</enforcer>
<definition/>
<definition name="net.pnh.base.Individual">
<enforcer
priority="1">net.pnh.rule.IndividualRuleEnforcer</enforcer>
<enforcer
priority="4">net.pnh.rule.IndividualRuleEnforcer2</enforcer>
<definition/>
....
</rules>
I would like to end up with a list of definitions objects where
Definition1: name="net.pnh.base.Group";
enforcer="net.pnh.rule.GroupRuleEnforcer"; priority="5"
Definition2: name="net.pnh.base.Group";
enforcer="net.pnh.rule.GroupRuleEnforcer2"; priority="9" ..
Thank you.
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>