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]>

Reply via email to