Jason-

I looked through some of the in-code comments last night, so I can
attempt to answer your question.  I think the fundamental issue here
is Castor is based on SAX parsing which is event based, and as such
when parsing XML from (for example) an ArrayList, each element is
treated completely independently of all the others.  So when it is
time to add an object to an ArrayList it is easiest for the framework
to simply call get to retrieve the current list and add to it.  This
requires minimal knowledge of the state of the list, and avoids Castor
having to keep extra objects in memory while it "builds" the ArrayList
object.  I'm not saying this is the best way to go, but that's the
impression I get from reading some of the comments.  I think all the
Collections API classes are handled this way.  An alternative is if
you supply an add method, i.e. addFoo( Foo foo ), I think Castor can
use that to add to a list rather than getting the list (you might have
to specify it as the set-method in the mapping file).

Sorry I can't provide a more satisfactory answer.  Let us know if you
have further questions.

Stephen


On 3/8/06, Jason Wood <[EMAIL PROTECTED]> wrote:
> How can calling get instead of set be a 1.5 feature? The generics are
> 1.5 but how come Castor is not using the set methods? Why call get over
> and over again to add elements to the collection? This does not make
> sense and makes adding the attribute set-method useless.
>
> -----Original Message-----
> From: Bill Leng [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, March 08, 2006 2:55 PM
> To: [email protected]
> Subject: Re: [castor-user] set-method
>
> that is jdk1.5 feature and castor does not use jdk1.5 yet, I guess.
>
> Jason Wood wrote:
> > Wondering what's the purpose of set-method attribute if the framework
> > calls getNames() to set the names member variable?
> >
> >
> >
> > So if I have ...
> >
> >
> >
> > Class myClass {
> >
> >   private ArrayList names;
> >
> >
> >
> >   public void setNames(ArrayList<String> names) {}
> >
> >   public ArrayList<String> getNames() {}
> >
> > }
> >
> >
> >
> >
> >
> > How come Castor calls getNames() for each name it needs to add? Why
> not
> > Create and ArrayList<String> and call setName()?
> >
> >
> >
> > J
> >
> >
> >
> >
> >
>
> -------------------------------------------------
> If you wish to unsubscribe from this list, please
> send an empty message to the following address:
>
> [EMAIL PROTECTED]
> -------------------------------------------------
>
>
> -------------------------------------------------
> If you wish to unsubscribe from this list, please
> send an empty message to the following address:
>
> [EMAIL PROTECTED]
> -------------------------------------------------
>
>

Reply via email to