Lachlan Deck wrote: > Hi there, > > given some stuff we've seen in our own code (and general better > practices for dealing with collections in general) I thought I'd suggest > the following changes for the default cayenne entity templates: > - private ivars rather than protected (if they're not already) > > - return Collections.unmodifiableList(foo) rather than returning the > actual list that's modified via addTo/removeFrom etc. > > Thoughts? Philosophies?
There's actually two schools of thoughts here: - lock down access to the collections as you propose. However, given that you cannot detect if a Collection is immutable or not (thanks to Collections' broken interface design, think of NSArray vs NSMutableArray) this is only a weak workaround. - implement custom collections that are ObjEntity aware and "do the right thing" when touched. I haven't looked at the Cayenne source for quite some time now but IIRC the code currently does the second option above ... -dirk