I'm attempting to write a small parser as part of another larger
application. I'd like to do something like the following:
public class Parser {
...
ClassA s = new ClassA();
Digester d;
d.push(s);
...
d.parse(inputStream);
...
}
class ClassA {
LinkedList ClassB;
public void addClassB();
}
class ClassB {
String data1;
String data2;
String data3;
public getters and setters;
}
I'm using an xmlrules file looks like
<digester-rules>
...
<pattern value="resolver">
<object-create-rule classname="ClassB" />
<set-properties-rule />
<set-next-rule methodname="addClassB" />
<pattern value="data1">
<call-method-rule methodName="setData1" paramCount="0"
/>
</pattern>
...
</pattern>
...
</digester-rules>
This all works fine as long as ClassA and ClassB are public classes.
But as soon as I try to make them inner classes of the Parser class this
fails with an IllegalAccessException (Cannot access a member of class
ClassB with modifiers "").
The Digester Developer Guide mentions something about this as a known
limitation and says to ask on the mailing list if I think I'm
experiencing the problem it mentions. So I'm asking. Is there a way
around this or am I forced to have public classes for use with the
digester?
Since I originally wrote this I've found that I could use the
FactoryCreateRule to create an object that doesn't have a no-argument
constructor, but I haven't been able to find a proper ruleset that will
allow me to do this. Any suggestions?
--
Eva Allen
Consulting Software Engineer, OCLC, Inc.
6565 Frantz Rd., Dublin, OH 43017
614.764.6009 | [EMAIL PROTECTED]
Views contained herein are my own; they do not necessarily reflect those
of my employer
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]