commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From José Antonio Pérez Testa <>
Subject Re: Strange behaviour with xmlrules
Date Wed, 18 Jun 2003 14:07:11 GMT
I think that the problem is in the xml structure and the fact that the 
same token 'baz' creates the object and calls the method.
I'm doing a very similar processing whith the following rules:

  <object-create-rule pattern="foo" classname="MyFoo"/>

  <pattern value="foo/bar">
    <object-create-rule classname="MyBaz"/>
    <call-method-rule pattern="baz" methodname="setContent" paramcount="0"/>
    <set-next-method methodname="addBaz"/>

If there is only one 'baz' in each 'bar' this should work!

Horn, Lutz wrote:

>Hi all,
>I've got problems understanding the behaviour of a certain
>case of xmlrules.
>I want to digest a XML file with the following structure:
>  <bar>
>    <baz>interesting content here</baz>
>  </bar>
>  <bar>
>    <baz>some more content I want</baz>
>  </bar>
>From this I want to:
>0. Creat a MyFoo container,
>1. get all foo/bar/baz elements,
>2. create a MyBaz bean for each such element,
>3. fill it's field "content" from the character content of the the element
>   using the bean's setContent() method,
>4. and store the bean in the MyFoo instance using a method called addBaz().
>The digester rules XML file I use is:
>  <object-create-rule pattern="foo" classname="MyFoo"/>
>  <pattern value="foo/bar/baz">
>    <object-create-rule classname="MyBaz"/>
>    <call-method-rule methodname="setContent" paramcount="0"/>
>    <set-next-method methodname="addBaz"/>
>  </pattern>
>Unfortunatley this doesn't work. What happens is that 
>0. The MyFoo container is created,
>1. a foo/bar/baz element is encountered and
>2. a new MyBaz instance is created which is
>3. immediately added to MyFoo using the addBaz() method *after* which
>4. the method setContent() of the MyBaz instance is called.
>This leads to MyFoo containing only MyBaz instances with the content
>field null.
>My solution so far is to swap the <call-method-rule> and the
><set-next-rule> which results in the setContent() method of the MyBaz
>instance being called *before* the addBaz() method of MyFoo is called.
>Is this a bug or a feature or did I miss something?
>To unsubscribe, e-mail:
>For additional commands, e-mail:

View raw message