Update of /cvsroot/xdoclet/xdoclet/modules/ejb/src/xdoclet/modules/ejb/entity/resources
In directory sc8-pr-cvs1:/tmp/cvs-serv8051

Modified Files:
        entity-value.xdt 
Log Message:
Change generated CMR addSthValue() to return PK of added entity.  This is not relevant 
under aggregation
(the PK for an existing entity is passed into the add with the VO), but is essential 
in some circumstances
when using composition, because there is really no robust way to determine the PK of 
the actual record that
was added.

Index: entity-value.xdt
===================================================================
RCS file: 
/cvsroot/xdoclet/xdoclet/modules/ejb/src/xdoclet/modules/ejb/entity/resources/entity-value.xdt,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -r1.7 -r1.8
*** entity-value.xdt    18 Sep 2002 19:49:16 -0000      1.7
--- entity-value.xdt    2 Dec 2002 09:59:44 -0000       1.8
***************
*** 8,12 ****
    <XDtEjbValueObj:forAllRelations superclasses="true" 
valueobject="<XDtEjbValueObj:valueObjectMatch/>">
     <XDtMethod:ifHasMethodTag tagName="ejb:value-object" paramName="type">
!    public void add<XDtMethod:methodTagValue tagName="ejb:value-object" 
paramName="members-name"/>(<XDtEjbValueObj:currentAggregateType/> added)
     <XDtMethod:ifHasMethodTag tagName="ejb:value-object" paramName="compose">
     throws javax.ejb.CreateException
--- 8,12 ----
    <XDtEjbValueObj:forAllRelations superclasses="true" 
valueobject="<XDtEjbValueObj:valueObjectMatch/>">
     <XDtMethod:ifHasMethodTag tagName="ejb:value-object" paramName="type">
!    public <XDtClass:pushClass 
value="<XDtEjbValueObj:currentRelationBeanClass/>"><XDtEjbPk:pkClass/></XDtClass:pushClass>
 add<XDtMethod:methodTagValue tagName="ejb:value-object" 
paramName="members-name"/>(<XDtEjbValueObj:currentAggregateType/> added)
     <XDtMethod:ifHasMethodTag tagName="ejb:value-object" paramName="compose">
     throws javax.ejb.CreateException
***************
*** 16,40 ****
     </XDtMethod:ifHasMethodTag>
     {
          try
          {
                <XDtClass:pushClass value="<XDtEjbValueObj:currentRelationBeanClass/>">
                 <XDtEjbPk:ifHasPrimkeyField>
!                 <XDtEjbPk:pkClass/> pk = added.<XDtEjbPk:primkeyGetter/>();
                 </XDtEjbPk:ifHasPrimkeyField>
                 <XDtEjbPk:ifDoesntHavePrimkeyField>
!                 <XDtEjbPk:pkClass/> pk = new 
<XDtEjbPk:pkClass/>(<XDtEjbPk:pkfieldListFrom name="added"/>);
                 </XDtEjbPk:ifDoesntHavePrimkeyField>
                </XDtClass:pushClass>
! 
                <XDtMerge:merge 
file="xdoclet/modules/ejb/entity/resources/entity-value-home.xdt">
                </XDtMerge:merge>
- 
                <XDtMethod:ifHasMethodTag tagName="ejb:value-object" 
paramName="compose">
                 <XDtMethod:methodTagValue tagName="ejb:value-object" 
paramName="members"/> relation = home.create(added);
                </XDtMethod:ifHasMethodTag>
                <XDtMethod:ifHasMethodTag tagName="ejb:value-object" 
paramName="aggregate">
                 <XDtMethod:methodTagValue tagName="ejb:value-object" 
paramName="members"/> relation = home.findByPrimaryKey(pk);
                </XDtMethod:ifHasMethodTag>
!               <XDtMethod:methodName/>().add(relation);
          }
          catch (Exception e){
--- 16,49 ----
     </XDtMethod:ifHasMethodTag>
     {
+       <XDtClass:pushClass 
+value="<XDtEjbValueObj:currentRelationBeanClass/>"><XDtEjbPk:pkClass/></XDtClass:pushClass>
+ pk = null;
          try
          {
+        <XDtMethod:ifHasMethodTag tagName="ejb:value-object" paramName="aggregate">
                <XDtClass:pushClass value="<XDtEjbValueObj:currentRelationBeanClass/>">
                 <XDtEjbPk:ifHasPrimkeyField>
!                 pk = added.<XDtEjbPk:primkeyGetter/>();
                 </XDtEjbPk:ifHasPrimkeyField>
                 <XDtEjbPk:ifDoesntHavePrimkeyField>
!                 pk = new <XDtEjbPk:pkClass/>(<XDtEjbPk:pkfieldListFrom 
name="added"/>);
                 </XDtEjbPk:ifDoesntHavePrimkeyField>
                </XDtClass:pushClass>
!          </XDtMethod:ifHasMethodTag>
                <XDtMerge:merge 
file="xdoclet/modules/ejb/entity/resources/entity-value-home.xdt">
                </XDtMerge:merge>
                <XDtMethod:ifHasMethodTag tagName="ejb:value-object" 
paramName="compose">
                 <XDtMethod:methodTagValue tagName="ejb:value-object" 
paramName="members"/> relation = home.create(added);
+               <XDtClass:pushClass value="<XDtEjbValueObj:currentRelationBeanClass/>">
+                <XDtEjbPk:ifHasPrimkeyField>
+                 pk = relation.<XDtEjbPk:primkeyGetter/>();
+                </XDtEjbPk:ifHasPrimkeyField>
+                <XDtEjbPk:ifDoesntHavePrimkeyField>
+                 pk = new <XDtEjbPk:pkClass/>(<XDtEjbPk:pkfieldListFrom 
+name="relation"/>);
+                </XDtEjbPk:ifDoesntHavePrimkeyField>
+               </XDtClass:pushClass>
                </XDtMethod:ifHasMethodTag>
                <XDtMethod:ifHasMethodTag tagName="ejb:value-object" 
paramName="aggregate">
                 <XDtMethod:methodTagValue tagName="ejb:value-object" 
paramName="members"/> relation = home.findByPrimaryKey(pk);
                </XDtMethod:ifHasMethodTag>
!                <XDtMethod:methodName/>().add(relation);
          }
          catch (Exception e){
***************
*** 50,53 ****
--- 59,63 ----
                        throw new javax.ejb.EJBException(e);
          }
+       return pk;
     }
  



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Xdoclet-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/xdoclet-devel

Reply via email to