OK - will do - just found one little bug which I'll remove first... Cheers, Gavin.
-----Original Message----- From: Aslak Hellesøy [mailto:aslak.hellesoy@;netcom.no] Sent: Friday, 8 November 2002 11:45 AM To: Gavin Hughes; [EMAIL PROTECTED] Cc: Shaun Kelly Subject: RE: [Middlegen-user] Value Objects and Middlegen Hi Gavin, We really appreciate your contribution! -But contribution on email will evaporise in our hot mail boxes. Could you please repost your code/explanation as a patch on SF? http://sourceforge.net/tracker/?group_id=36044&atid=415992 Cheers, Aslak > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:middlegen-user-admin@;lists.sourceforge.net]On Behalf Of Gavin > Hughes > Sent: 8. november 2002 01:12 > To: [EMAIL PROTECTED] > Cc: Shaun Kelly > Subject: RE: [Middlegen-user] Value Objects and Middlegen > > > > We've been doing a bit more work on this here - if any of this is > useful and someone wants to include it into Middlegen then feel free > to use whichever bits you like - the code is still a bit ugly in > places I'm afraid. > > The change I mentioned in the original message generates Value objects > that only contain the CMP fields (which means they aren't that > different to data objects). > > We've done some further modifications now that include CMR fields in > the value objects as well. > > The changes are larger than the previous set, and involve the > following files : > > - nrma-entity-cmp-20.vm - CMP template file (derived from > entity-cmp-20.vm) > - NrmaEntityPlugin.java - CMP plugin (extends the CMP20 plugin) > - NrmaEntityTable - (extends Entity20Table) > - nrma-details-object.vm - template file for Details objects > > Plugin > ------ > > The Plugin class uses a few new parameters that are specified when it > is invoked in the Ant task : > > valueObjectPackage specifies the package that Value objects are to > be placed in > > detailsObjectPackage specifies the package that Details objects are > placed in > > There should be a parameter to specify the Value object base class as > well (currently its hard coded into the CMP template). > > The Plugin class specifies that NrmaEntityTable represents the table > data passed to the velocity templates - this Table class contains a > number of new methods that > let us get various names required for specifying the Value object > to be generated > in the template. > > The Plugin class generates "Details" objects that are simple wrappers > for Value objects. We use these for debugging - the toString method is > edited to print out > whatever information we think is necessary - including CMR > information, which the > XDoclet generated Value object doesn't do. These are generated in > the same directory > as the Bean classes, which isn't so good if the package specified > for them is not > the same as the bean package - haven't found a way around this > yet. They aren't used > by any of the generated code so you can ignore them if you wish. > > Value object changes to the template > ------------------------------------ > > Look at the template file for all the value object changes - XDoclet > @ejb.value-object tags are now included on all CMP and CMR fields. > > One "match" value named "all" is used for all fields - this results in > a single Value object being generated for each Bean that contains all > the fields and > relationships on the Bean. > > The pattern followed is a little different in intent to what seems to > be the standard XDoclet mechanism of defining particular Value object > trees (each with > its own "match" name) for different scenarios. > > As there is no simple way of defining these, one Value object class is > much easier to generate. In any case, I find the standard mechanism > very unwieldy > for complex trees - instead I use a "tree builder" utility to > generate particular > trees at runtime that include the desired branches - have a look > at the ValueTreeBuilder > class attached if you are interested (its not used by any of the > Middlegen related > code). > > > Example of invocation in build.xml > ---------------------------------- > > These are invoked instead of <cmp20> in the <middlegen> task : > > <nrmacmp20 > destination="${build.gen-src.dir}" > package="${packageRoot}.entities" > detailsObjectPackage="${packageRoot}.values" > valueObjectPackage="${packageRoot}.entities" > interfacepackage="${packageRoot}.entities" > jndiprefix="${jndiRoot}" > pkclass="false" > dataobject="true" > datasuffix="Details" > viewtype="local" > mergedir="${basedir}/src/middlegen" > readonly="false" > fkcmp="false" > guid="true"> > > <fileproducer > id="entity-cmp-20" > template="${basedir}/src/templates/nrma-entity-cmp-20.vm" > /> > > <jboss/> > > </nrmacmp20> > > > Hope that helps anyone wanting to generate full Value objects. > > Cheers, > Gavin. > > > -----Original Message----- > From: Eivind Waaler [mailto:eivindw@;tihlde.org] > Sent: Wednesday, 6 November 2002 6:45 PM > To: Gavin Hughes > Cc: [EMAIL PROTECTED] > Subject: RE: [Middlegen-user] Value Objects and Middlegen > > > Good work, I added a ref. to this mail thread as a feature request: > > http://sourceforge.net/tracker/index.php?func=detail&aid=634285&gr > oup_id=36044&atid=415993 > > .eivind > > On Wed, 6 Nov 2002, Gavin Hughes wrote: > > > > > We've done a quick hack to get Middlegen to generate Value objects > > instead of Data objects (or to ask XDoclet to anyway). > > > > The change is a minor modification to the entity CMP template > > (entity-cmp-20.vm in the middlegen-entitybean-plugin-2.0-b2-dev.jar > > file in lib). > > > > You can do this by modifying the original template or by copying it > > and modifying the appropriate section, then overriding the original > > template with your modified version. This is done by adding a > > <fileproducer> element within the <cmp20> element in your build.xml > > file : > > > > <fileproducer > > id="entity-cmp-20" > > template="${basedir}/src/templates/nrma-entity-cmp-20.vm" > > /> > > > > The section of the template between @ejb.bean and @ejb.finder should > > be changed to the following (use your own Value object base class in > > the "extends" attribute if you want one or just leave it empty) : > > > > #if( ${plugin.dataobject} ) > > * @ejb:value-object name="${table.beanName}" > > * extends="com.nrma.values.BaseValue" > > * match="*" > > * instantiation="eager" > > * > > #end > > > > Obviously it would be better to have a different parameter > > specifying that value objects are generated (ie. > > $(plugin.valueobject)) so that you can choose one or the other. This > > would need some changes to one of the CMP plugin classes I think - > > I've got no idea which one I'm afraid... > > > > Cheers, > > Gavin. > > > > > > -----Original Message----- > > From: Aslak Hellesøy [mailto:aslak.hellesoy@;netcom.no] > > Sent: Wednesday, 6 November 2002 7:59 AM > > To: Brian Cochran; [EMAIL PROTECTED] > > Subject: RE: [Middlegen-user] Value Objects and Middlegen > > > > > > > -----Original Message----- > > > From: [EMAIL PROTECTED] > > > [mailto:middlegen-user-admin@;lists.sourceforge.net]On Behalf Of > > > Brian Cochran > > > Sent: 5. november 2002 05:28 > > > To: '[EMAIL PROTECTED]' > > > Subject: [Middlegen-user] Value Objects and Middlegen > > > > > > > > > Hey Aslak, > > > I noticed you were one of the primary contributors on Value > > > Objects in > > > > Nonono. I have never really looked into them or tried them. -Just > > applied some patches. > > > > > XDoclet. Is that as simple as I think it is as far as integrating > > > it into middlegen? (Drop it into the template entitiy-cmp20.vm > > > template. Moreover, where could I find something about the idea > > > behind Value Objects. (i.e what do they offer, and how do you use > > > them, etc.) Thanks a bunch. > > > > > > > It would be great if you would do us the favour to add value-object > > support in middlegen. Send a diff/patch when you're done. Value > > object is badly documented, so be prepared to dig into XDoclet's > > mail archives and sources. > > > > > Thanks a bunch, > > > Brian > > > > > > > Cheers, > > Aslak > > > > > > > > ------------------------------------------------------- > > > This SF.net email is sponsored by: ApacheCon, November 18-21 in > > > Las Vegas (supported by COMDEX), the only Apache event to be fully > > > supported by the ASF. http://www.apachecon.com > > > _______________________________________________ > > > middlegen-user mailing list [EMAIL PROTECTED] > > > https://lists.sourceforge.net/lists/listinfo/middlegen-user > > > > > > > > ------------------------------------------------------- > > This sf.net email is sponsored by: See the NEW Palm Tungsten T > > handheld. Power & Color in a compact size! http://ads.sourceforge.net/cgi-bin/redirect.pl?palm0001en > _______________________________________________ > middlegen-user mailing list [EMAIL PROTECTED] > https://lists.sourceforge.net/lists/listinfo/middlegen-user > > > ------------------------------------------------------- > This sf.net email is sponsored by: See the NEW Palm > Tungsten T handheld. Power & Color in a compact size! > http://ads.sourceforge.net/cgi-bin/redirect.pl?palm0001en > _______________________________________________ > middlegen-user mailing list [EMAIL PROTECTED] > https://lists.sourceforge.net/lists/listinfo/middlegen-user > ------------------------------------------------------- This sf.net email is sponsored by: See the NEW Palm Tungsten T handheld. Power & Color in a compact size! http://ads.sourceforge.net/cgi-bin/redirect.pl?palm0001en _______________________________________________ middlegen-user mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/middlegen-user