hi ricardo

i think i understand what you code is doing (in general terms). the idea is that you're adding your own rules to the existing xml-rules so that they can be used for parsing, right?

i've taken a look at the code in DigesterRuleParser i'm not too sure that your plan would work. the inner classes cannot simply be extracted to public scope without some refactoring.

i was wondering:

1. whether anyone would really need to subclass PatternRule - or whether a factory method would be good enough.

2. whether it's only PatternRule that really needs more public scope.

answers anyone?

- robert

On Tuesday, October 21, 2003, at 11:23 PM, Ricky Panaglucci wrote:

hello,
below is a case, where the existing PatternRule would
be usefull

ricardo

myrules.xml:
<digester-rules>
    <pattern value="*/MyObject">
      <object-create-rule classname="MyObject"/>
      <set-generic-property-rule pattern="attr"
name="name" value="value"/>
    </pattern>
</digester-rules>

myobject.xml:
<?xml version="1.0"?>
<jLab>
  <MyObject">
     <attr name="att1" value="val1"/>
     <attr name="att2" value="val2"/>
  </MyObject>
</jLab>

      Digester d=new Digester()
      DigesterRuleParser drp=new
DigesterRuleParser(d);

d.addFactoryCreate("*/set-generic-property-rule", new
SetGenericPropertyRuleFactory());
//*** would like to write
d.addRule("*/set-generic-property-rule", drp.new
PatternRule("pattern"));
      d.addRule("*/set-generic-property-rule", new
XPatternRule("pattern"));
      d.addSetNext("*/set-generic-property-rule",
"add", Rule.class.getName());

      RuleSet ruleSet = new FromXmlRuleSet(new
Files("myrules").toURL(), drp, d);
      d.addRuleSet(ruleSet);
      MyObject obj = (MyObject)d.parse(new
File("myobject.xml");


public class SetGenericPropertyRuleFactory extends AbstractObjectCreationFactory { public SetGenericPropertyRuleFactory() {

        }
        public Object createObject(Attributes
attributes) {
          String name = attributes.getValue("name");
          String value = attributes.getValue("value");
          return new GenericPropertyRule( name,
value);
        }
    }


public class GenericPropertiesRule extends Rule { //***source copied from SetPropertyRule with some

}

  public class XPatternRule {
//***source copied from PatternRule
  }

 --- robert burrell donkin
<[EMAIL PROTECTED]> wrote: > +1

i'd be happy to see the nested classed in the xmlrules made public if a need could be demonstrated.

- robert

On Monday, October 20, 2003, at 10:12 PM, Simon
Kitching wrote:

Hi Ricky,

You must be referring to
  xmlrules/DigesterRuleParser.java

I'm no expert on the xmlrules package.

However it is normal practice for classes created
solely for the purpose
of implementing function X to be declared private.

The PatternRule class appears to have been created
*not* with the
intention of providing additional services to
users of Digester, but
solely as an implementation detail of the xmlrules
functionality. As
such, private seems the appropriate scope to me.

If you feel that the functionality of the
PatternRule is useful outside
of the xmlrules package, then consideration could
be given to
"promoting" the class to public.

Note however that any class or method declared
public (or protected) is
part of the "public interface" to a package, and
must:
(a) be documented much more thoroughly than
private/package classes
(b) be backwards-compatible in future releases
(c) be deprecated before removal

So a class really should only be public if it
needs to be.


Regards,

Simon

On Tue, 2003-10-21 at 10:02, Ricky Panaglucci
wrote:
hello,
why do classes like PatternRule have private
access?

now, for adding my own rules which may use
surrounding
"pattern", i just copied the PatternRule source
[very
brown imho]

why not make them protected or public?


ricardo




________________________________________________________________________
Want to chat instantly with your online friends?
Get the FREE Yahoo!
Messenger http://mail.messenger.yahoo.co.uk



---------------------------------------------------------------------
To unsubscribe, e-mail:
[EMAIL PROTECTED]
For additional commands, e-mail:
[EMAIL PROTECTED]






---------------------------------------------------------------------
To unsubscribe, e-mail:
[EMAIL PROTECTED]
For additional commands, e-mail:
[EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail:
[EMAIL PROTECTED]
For additional commands, e-mail:
[EMAIL PROTECTED]


________________________________________________________________________ Want to chat instantly with your online friends? Get the FREE Yahoo! Messenger http://mail.messenger.yahoo.co.uk

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to