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] > ------------------------------------------------- > >

