i've committed a fix for this. if you get the chance, give it a try.

thanks for the unit tests. it turned out to be to do with recognition of recursive elements rather than anything to do with the NameMapper implementations so i might have had difficulties replicate it otherwise.

- robert

On Sunday, December 15, 2002, at 11:13 PM, Tim Anderson wrote:

Go for it. I didn't include the license out of laziness ;)

-----Original Message-----
From: robert burrell donkin
[mailto:[EMAIL PROTECTED]]
Sent: Monday, December 16, 2002 3:34 AM
To: Jakarta Commons Developers List
Subject: Re: [betwixt][BUG?] Destreaming custom collections using
Hyphenated/DecapitalizeNameMapper?


thanks.

those unit tests demonstrate the problem fine. fancy donating them to the
apache software foundation (saves me writing equivalent ones)?

(you didn't include the apache license at the top of each so i thought it
best to check...)

- robert

On Saturday, December 14, 2002, at 10:31 AM, Tim Anderson wrote:

Attached is a junit test case which reproduces the problem.

Regards,

Tim

-----Original Message-----
From: Tim Anderson [mailto:[EMAIL PROTECTED]]
Sent: Saturday, December 14, 2002 7:50 PM
To: [EMAIL PROTECTED]
Subject: [betwixt][BUG?] Destreaming custom collections using
Hyphenated/DecapitalizeNameMapper?


Hi people,
    I am trying to destream some XML using betwixt into a
class structure
which looks like:

public class Foos {
    // manages a collection of Foo
    public void addFoo(Foo foo) { ... }
    public Iterator getFoos() { .... }
}

public class Foo {
    // ...
    public void setValue(String value) { ... }
    public String getValue() { ...}
}

Using the DefaultNameMapper, this streams as:

<Foos>
  <foo value="a"/>
  <foo value="b"/>
</Foos>

and destreams fine. However with the
Hyphenated/DecapitalizeNameMappers,
it doesn't destream correctly - the addFoo() method is not invoked.
Streamed it looks like:
<foos>
<foo value="a"/>
<foo value="b"/>
</foos>

Looking at the debug trace, the following messages from XMLIntrospector
appear:
....
Processing child
ElementDescriptor[qname=foos,pname=foos,class=interface
java.util.Iterator,singular=class Foo,updater=MethodUpdater
[method=public
void Foos.addFoo(Foo)]]

Creating generic rule for recursive elements
^^^^^^^^^^^^ problem starts here^^^^^^^^^^^^

Created bean create rule
Descriptor=ElementDescriptor[qname=foos,pname=foos,class=interface
java.util.Iterator,singular=class Foo,updater=MethodUpdater
[method=public
void Foos.addFoo(org.apache.commons.sql.type.Foo)]]
Class=class Foo Path prefix=*/foos
Ignoring duplicate digester rule for path: */foos rule:
BeanCreateRule [path
prefix=*/foos
descriptor=ElementDescriptor[qname=foos,pname=foos,class=interface
java.util.Iterator, ....

I'm configuring the introspector using:

        introspector.setAttributesForPrimitives(true);
        introspector.setWrapCollectionsInElement(false);
        introspector.setElementNameMapper(new
DecapitalizeNameMapper());
Any ideas/workarounds?

Thanks,

Tim


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

   --
To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED].
org>
For additional commands, e-mail:
<mailto:[EMAIL PROTECTED].
org>

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


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED].
org>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED].
org>


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

Reply via email to