Simon Kitching wrote:

On Mon, 2005-09-05 at 07:18 +0300, Mikko Nylén wrote:
Hi!,

I'm having a little problem with Digester's CallMethodRule: it doesn't call the method.

The XML file I try to parse is:

---
<configuration>
 <pages>
   <page path="/index.htm" class="test.TestPage" />
   <page path="/hello.htm" class="test.HelloPage" />
 </pages>
</configuration>
---

The Java code I'm trying to use for parsing the configuration:

---
...
Digester digester = new Digester();
digester.addObjectCreate("configuration", "test.Configuration");
digester.addObjectCreate("configuration/pages/page", "test.PageConfiguration"); digester.addSetProperties("configuration/pages/page", new String[]{"path", "class"}, new String[]{"path", "className"});
digester.addCallMethod("configuration/pages/page", "freeze");
digester.addSetNext("configuration/pages/page", "addPageConfiguration", "test.PageConfiguration");

Configuration configuration = (Configuration)digester.parse(reader);
---

The problem is that the freeze() method of instantiated PageConfiguration objects isn't ever called (which results to that the Configuration's addPageConfiguration(PageConfiguration) throws an IllegalStateException). How I should fix this? I'm using the version 1.7 of Digester.

Are you sure the problem isn't the *order* that methods get called for
element "configuration/pages/page" rather than that the freeze method
doesn't get called at all?
I suggest reading the FAQ entry titled "How do I get CallMethodRule to
fire before SetNextRule?" here:
 http://wiki.apache.org/jakarta-commons/Digester/FAQ

Regards,

Simon



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


Thanks! That FAQ entry solved the problem.

- Mikko Nylén

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

Reply via email to