It seems that the ejb value objects are somewhat incomplete. Therefore, I have taken it upon myself to do some work on them. There are a few flaws that I see in the value objects now.
1) No synchronization. It is likely that under some situations it would be nice to be able to turn on synchronization. 2) Returning bare collections. We should return unmodifiable collections to force less error prone code. 3) Synchronized collections should be an option, once again, to reduce the dangers of multi threaded code. 4) Should implement Cloneable. 5) Implement Comparable? 6) Should not use arrays to pass around relationship data, the construction and deconstruction of arrays is inefficient, especially for large numbers of arrays. 7) Should not allow outside access to setAdded*s(), and other bookkeeping collections. As a result, I made the following changes. 1) implemented Comparable. 2) Added an "ordering" class level option. a) ordering = "strict", ordering/equality/hashCode is only dependant on the primary key of the object. Object implements Comparable if and only if all primary key fields are Comparable. b) ordering = "permissive". equality/hashCode based on all fields, but not relationships. c) default is "permissive" 3) Added "synchronization" class level option. a) synchronizaton = "none": same as before. a) synchronization = "partial": all [Collection|Set]s become Collections.synchronized[Collection|Set](); a) synchronization = "full": Same as "partial", but all methods synchronized as well. 4) All returned [Collection|Set]s are Collections.unmodifiable[Collection|Set](...). 5) Added get*Collection() method that returns unmodifiable [Collection|Set] of the relations. In the future, we may wish to remove a few of the more dangerous methods. Also, the EJB (CMP) template should automatically create properly named get*Value() and set*Value(*Value input) methods without requiring the addition of them into the Bean class, if it is abstract. Have an option to make the ejbCreate(*Value input) and ejbPostCreate(*Value input) method as well, if bean class is abstract. What do you all think? Any suggestions? -Tyler This e-mail message is intended only for the named recipient(s) above. It may contain confidential information. If you are not the intended recipient you are hereby notified that any dissemination, distribution or copying of this e-mail and any attachment(s) is strictly prohibited. If you have received this e-mail in error, please immediately notify the sender by replying to this e-mail and delete the message and any attachment(s) from your system. Thank you.