OK, I guess I'm the only one posting about my problem =)
Anyways, I figured out the way Castor is operating. It gets my Set..if
it is null it creates a new one and sets it. Otherwise it just adds it
to the existing set. Unfortunately I have custom processing that needs
to take place on each element that gets added (that thing called
encapsulation) Can I make castor use an addXXX method instead?
Jeremy
On Wed, 03 Mar 2004 16:31:26 -0500, "Jeremy Haile" <[EMAIL PROTECTED]>
said:
>
> To follow up more debug information: It appears that Castor IS somehow
> setting my property correctly with multiple values in the java.util.Set.
> However, my setXXX method is only being called once. Why does Castor not
> call my set method with the entire collection. My setXXX() method has
> special processing which causes my application to fail if not performed.
>
> Also, my instance variables have private access. My set methods of
> course have public access.
>
> Jeremy
>
>
> On Wed, 03 Mar 2004 15:18:24 -0500, "Jeremy Haile" <[EMAIL PROTECTED]>
> said:
> >
> > By the way, I am using 0.9.5.3 rc2.
> >
> >
> > On Wed, 03 Mar 2004 15:11:32 -0500, "Jeremy Haile" <[EMAIL PROTECTED]>
> > said:
> > > I have several collections that are only saving the first element in a
> > > set. My field type is a java.util.Set. When castor parses the XML file,
> > > it only calls the setXXX() method one time (as it should), but passes in
> > > a java.util.Set that contains only one element. Why would castor not be
> > > processing the whole collection before calling setXXXX?????
> > >
> > >
> > > The mapping for one of the classes I'm having a problem with this with
> > > follows:
> > >
> > > <class name="ex.Organization"
> > > access="shared"
> > > auto-complete="false">
> > >
> > > <field name="name"
> > > type="java.lang.String"
> > > get-method="getName"
> > > set-method="setName">
> > > <bind-xml
> > > node="attribute" />
> > > </field>
> > >
> > > <field name="taxId"
> > > type="java.lang.String"
> > > get-method="getTaxId"
> > > set-method="setTaxId">
> > > <bind-xml
> > > node="attribute" />
> > > </field>
> > >
> > > <field name="emailAddresses"
> > > type="ex.EmailAddress"
> > > get-method="getEmailAddresses"
> > > set-method="setEmailAddresses"
> > > collection="set">
> > > <bind-xml name="email-address"
> > > node="element" />
> > > </field>
> > >
> > > <field name="phoneNumbers"
> > > type="ex.PhoneNumber"
> > > get-method="getPhoneNumbers"
> > > set-method="setPhoneNumbers"
> > > collection="set">
> > > <bind-xml name="phone-number"
> > > node="element" />
> > > </field>
> > >
> > > <field name="postalAddresses"
> > > type="ex.PostalAddress"
> > > get-method="getPostalAddresses"
> > > set-method="setPostalAddresses"
> > > collection="set">
> > > <bind-xml name="postal-address"
> > > node="element" />
> > > </field>
> > >
> > > </class>
> > >
> > >
> > > The debug output from Castor is below. You can see where my
> > > setPhoneNumbers( Set phoneNumbers ) method is called. I print out the
> > > size of the set being passed in as a parameter. You can also see Castor
> > > parse another phone number immediately after, but not call the set
> > > method.
> > >
> > > [configurator]
> > > [configurator] #startElement: organization
> > > [configurator] #characters:
> > >
> > > [configurator]
> > > [configurator] #startElement: email-address
> > > [configurator] #endElement: email-address
> > > [configurator] #characters:
> > >
> > > [configurator]
> > > [configurator] #startElement: phone-number
> > > [configurator] #endElement: phone-number
> > > [configurator] 14:58:44,181 DEBUG [Organization] Setting 1 phone
> > > numbers(s) into party.
> > > [configurator] #characters:
> > >
> > > [configurator]
> > > [configurator] #startElement: phone-number
> > > [configurator] #endElement: phone-number
> > > [configurator] #characters:
> > >
> > > [configurator]
> > > [configurator] #startElement: postal-address
> > > [configurator] #endElement: postal-address
> > > [configurator] #characters:
> > >
> > > [configurator]
> > > [configurator] #endElement: organization
> > > [configurator] #characters:
> > >
> > >
> > > Just in case you are curious, the setter method with the debug call looks
> > > like:
> > >
> > > public void setPhoneNumbers(Set phoneNumbers) {
> > > logger.debug( "Setting " + phoneNumbers.size() + " phone
> > > numbers(s) into party." );
> > > this.phoneNumbers = phoneNumbers;
> > > }
> > > --
> > > Jeremy Haile
> > > [EMAIL PROTECTED]
> > --
> > Jeremy Haile
> > [EMAIL PROTECTED]
> >
> > -----------------------------------------------------------
> > If you wish to unsubscribe from this mailing, send mail to
> > [EMAIL PROTECTED] with a subject of:
> > unsubscribe castor-dev
> >
> --
> Jeremy Haile
> [EMAIL PROTECTED]
>
> -----------------------------------------------------------
> If you wish to unsubscribe from this mailing, send mail to
> [EMAIL PROTECTED] with a subject of:
> unsubscribe castor-dev
>
--
Jeremy Haile
[EMAIL PROTECTED]
-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev