i know what the problem is. betwixt doesn't add updaters for methods unless a <addDefaults/> element is present. (if you can do this) adding a <addDefaults/> to your .betwixt file should be a temporary fix for the problem.
i'm not going to alter the code so that betwixt adds updaters automatically since i think that the current behaviour is correct. but i will look into adding an 'updater' (or something like that) attribute to the 'element' element which will allow the matching updater to be specified in the betwixt file.
- robert
On Tuesday, December 17, 2002, at 08:54 AM, Tim Anderson wrote:
Thanks for the prompt response and patch Robert. This has highlighted another issue - if a .betwixt file exists for the collection class, it doesn't destream.I need to specify a .betwixt file in order for my collection class' contents to be streamed in the correct order. Attached is a .betwixt file for Elements.java, and a patch for maven.xml to copy it to test-classes, to reproduce the problem. Thanks, Tim-----Original Message----- From: robert burrell donkin [mailto:[EMAIL PROTECTED]] Sent: Tuesday, December 17, 2002 9:02 AM To: Jakarta Commons Developers List Subject: Re: [betwixt][BUG?] Destreaming custom collections using Hyphenated/DecapitalizeNameMapper? 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 donatingthem to theapache software foundation (saves me writing equivalent ones)? (you didn't include the apache license at the top of each so ithought itbest 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 aclass structurewhich 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 theHyphenated/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 childElementDescriptor[qname=foos,pname=foos,class=interfacejava.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(newDecapitalizeNameMapper());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]> -- 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]>
