User: vharcq  
  Date: 02/03/07 14:35:19

  Modified:    core/resources/xdoclet/ejb entity-value-home.j
                        entity-value.j valueobject.j
  Log:
  Thanks to Marcus Brito !
  Value Objects :
   - Support added for entity bean with a PK field instead of a PK class
   - Support for JBoss dependant value object (CMP2)
   - Some more stuffs I don't remember.  Marcus is ahead now.  Let's trust him.
  
  Revision  Changes    Path
  1.2       +10 -10    xdoclet/core/resources/xdoclet/ejb/entity-value-home.j
  
  Index: entity-value-home.j
  ===================================================================
  RCS file: /cvsroot/xdoclet/xdoclet/core/resources/xdoclet/ejb/entity-value-home.j,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -w -r1.1 -r1.2
  --- entity-value-home.j       3 Mar 2002 20:19:59 -0000       1.1
  +++ entity-value-home.j       7 Mar 2002 22:35:18 -0000       1.2
  @@ -1,8 +1,8 @@
           <XDtMethod:ifHasMethodTag tagName="ejb:value-object">
           <XDtClass:pushClass value="<XDtEjbValueObj:currentRelationBeanClass/>">
  -        <XDtEjbIntf:ifRemoteEjb>
  +             <XDtEjbIntf:ifNotLocalEjb>
            <XDtEjbHome:homeInterface type="remote"/> home = 
<XDtEjbUtilObj:utilClass/>.getHome();
  -        </XDtEjbIntf:ifRemoteEjb>
  +             </XDtEjbIntf:ifNotLocalEjb>
           <XDtEjbIntf:ifLocalEjb>
            <XDtEjbHome:homeInterface type="local"/> home = 
<XDtEjbUtilObj:utilClass/>.getLocalHome();
           </XDtEjbIntf:ifLocalEjb>
  
  
  
  1.10      +197 -152  xdoclet/core/resources/xdoclet/ejb/entity-value.j
  
  Index: entity-value.j
  ===================================================================
  RCS file: /cvsroot/xdoclet/xdoclet/core/resources/xdoclet/ejb/entity-value.j,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -w -r1.9 -r1.10
  --- entity-value.j    3 Mar 2002 20:19:59 -0000       1.9
  +++ entity-value.j    7 Mar 2002 22:35:19 -0000       1.10
  @@ -1,4 +1,8 @@
   /* Value Objects BEGIN */
  +<XDtEjbPk:ifHasPrimkeyField>/* This class HAS a primkey-field 
*/</XDtEjbPk:ifHasPrimkeyField>
  +<XDtEjbPk:ifDoesntHavePrimkeyField>/* This class has NO primkey-field 
*/</XDtEjbPk:ifDoesntHavePrimkeyField>
  +
  +
   
   <XDtComment:comment>
   This part adds methods to handle 1-n relationships to add/remove/update one
  @@ -11,9 +15,15 @@
      public void add<XDtMethod:methodTagValue tagName="ejb:value-object" 
paramName="members-name"/>(<XDtEjbValueObj:currentAggregateType/> added)
      throws javax.ejb.CreateException
      {
  -      try{
  +       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/ejb/entity-value-home.j">
  @@ -38,9 +48,15 @@
      public void remove<XDtMethod:methodTagValue tagName="ejb:value-object" 
paramName="members-name"/>(<XDtEjbValueObj:currentAggregateType/> removed)
      throws javax.ejb.RemoveException
      {
  -      try{
  +       try
  +       {
           <XDtClass:pushClass value="<XDtEjbValueObj:currentRelationBeanClass/>">
  +              <XDtEjbPk:ifHasPrimkeyField>
  +               <XDtEjbPk:pkClass/> pk = removed.<XDtEjbPk:primkeyGetter/>();
  +              </XDtEjbPk:ifHasPrimkeyField>
  +              <XDtEjbPk:ifDoesntHavePrimkeyField>
           <XDtEjbPk:pkClass/> pk = new <XDtEjbPk:pkClass/>(<XDtEjbPk:pkfieldListFrom 
name="removed"/>);
  +              </XDtEjbPk:ifDoesntHavePrimkeyField>
           </XDtClass:pushClass>
   
           <XDtMerge:merge file="xdoclet/ejb/entity-value-home.j">
  @@ -63,9 +79,15 @@
      <XDtMethod:ifHasMethodTag tagName="ejb:value-object" paramName="compose">
      public void update<XDtMethod:methodTagValue tagName="ejb:value-object" 
paramName="members-name"/>(<XDtEjbValueObj:currentAggregateType/> updated)
      {
  -      try{
  +       try
  +       {
           <XDtClass:pushClass value="<XDtEjbValueObj:currentRelationBeanClass/>">
  +              <XDtEjbPk:ifHasPrimkeyField>
  +               <XDtEjbPk:pkClass/> pk = updated.<XDtEjbPk:primkeyGetter/>();
  +              </XDtEjbPk:ifHasPrimkeyField>
  +              <XDtEjbPk:ifDoesntHavePrimkeyField>
           <XDtEjbPk:pkClass/> pk = new <XDtEjbPk:pkClass/>(<XDtEjbPk:pkfieldListFrom 
name="updated"/>);
  +              </XDtEjbPk:ifDoesntHavePrimkeyField>
           </XDtClass:pushClass>
   
           <XDtMerge:merge file="xdoclet/ejb/entity-value-home.j">
  @@ -113,19 +135,32 @@
         if( getVersion() != valueHolder.getVersion() )
            throw new IllegalStateException( "Wrong version. Had " + getVersion() + ", 
got " + valueHolder.getVersion() );
        </XDtEjbBmp:ifUseSoftLocking>
  +      if (<XDtEjbValueObj:currentValueObjectAttribute/> == null)
  +        <XDtEjbValueObj:currentValueObjectAttribute/> = new 
<XDtEjbValueObj:currentValueObjectClass/>();
   
         try
         {
         <XDtEjbPersistent:forAllPersistentFields not-pk="true" 
valueobject="<XDtEjbValueObj:currentValueObjectMatch/>">
  +             <XDtEjbPk:ifIsNotPrimkeyField>
           <XDtMethod:ifHasMethod name="<XDtMethod:setterMethod/>" 
parameters="<XDtMethod:methodType/>">
            <XDtMethod:setterMethod/>( valueHolder.<XDtMethod:getterMethod/>() );
            
this.<XDtEjbValueObj:currentValueObjectAttribute/>.<XDtMethod:setterMethod/>( 
valueHolder.<XDtMethod:getterMethod/>() );
           </XDtMethod:ifHasMethod>
  +             </XDtEjbPk:ifIsNotPrimkeyField>
         </XDtEjbPersistent:forAllPersistentFields>
  +
         <XDtEjbValueObj:forAllAggregates superclasses="true" 
valueobject="<XDtEjbValueObj:valueObjectMatch/>">
  +       // Anonymous block to allow variable declations without conflicts
  +       {
          <XDtMethod:ifDoesntHaveMethodTag tagName="ejb:value-object" paramName="type">
  +
           <XDtClass:pushClass value="<XDtEjbValueObj:currentRelationBeanClass/>">
  +             <XDtEjbPk:ifHasPrimkeyField>
  +               <XDtEjbPk:pkClass/> pk = 
valueHolder.get<XDtEjbValueObj:currentAggregateName/>().<XDtEjbPk:primkeyGetter/>();
  +             </XDtEjbPk:ifHasPrimkeyField>
  +             <XDtEjbPk:ifDoesntHavePrimkeyField>
            <XDtEjbPk:pkClass/> pk = new <XDtEjbPk:pkClass/>(<XDtEjbPk:pkfieldListFrom 
name="valueHolder.get<XDtEjbValueObj:currentAggregateName/>()"/>);
  +             </XDtEjbPk:ifDoesntHavePrimkeyField>
           </XDtClass:pushClass>
   
           <XDtMerge:merge file="xdoclet/ejb/entity-value-home.j">
  @@ -155,11 +190,20 @@
               remove<XDtMethod:methodTagValue tagName="ejb:value-object" 
paramName="members-name"/>(o);
            }
           </XDtMethod:ifHasMethodTag>
  +       }
         </XDtEjbValueObj:forAllAggregates>
         <XDtEjbValueObj:forAllComposes superclasses="false" 
valueobject="<XDtEjbValueObj:valueObjectMatch/>">
  +       // Anonymous block to allow variable declations without conflicts
  +       {
          <XDtMethod:ifDoesntHaveMethodTag tagName="ejb:value-object" paramName="type">
  +
           <XDtClass:pushClass value="<XDtEjbValueObj:currentRelationBeanClass/>">
  +              <XDtEjbPk:ifHasPrimkeyField>
  +               <XDtEjbPk:pkClass/> pk = 
valueHolder.get<XDtEjbValueObj:currentAggregateName/>().<XDtEjbPk:primkeyGetter/>();
  +              </XDtEjbPk:ifHasPrimkeyField>
  +              <XDtEjbPk:ifDoesntHavePrimkeyField>
            <XDtEjbPk:pkClass/> pk = new <XDtEjbPk:pkClass/>(<XDtEjbPk:pkfieldListFrom 
name="valueHolder.get<XDtEjbValueObj:currentAggregateName/>()"/>);
  +              </XDtEjbPk:ifDoesntHavePrimkeyField>
           </XDtClass:pushClass>
   
           <XDtMerge:merge file="xdoclet/ejb/entity-value-home.j">
  @@ -195,6 +239,7 @@
               remove<XDtMethod:methodTagValue tagName="ejb:value-object" 
paramName="members-name"/>(o);
            }
           </XDtMethod:ifHasMethodTag>
  +       }
         </XDtEjbValueObj:forAllComposes>
         }
         catch (Exception e)
  
  
  
  1.7       +226 -216  xdoclet/core/resources/xdoclet/ejb/valueobject.j
  
  Index: valueobject.j
  ===================================================================
  RCS file: /cvsroot/xdoclet/xdoclet/core/resources/xdoclet/ejb/valueobject.j,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -w -r1.6 -r1.7
  --- valueobject.j     22 Feb 2002 23:25:15 -0000      1.6
  +++ valueobject.j     7 Mar 2002 22:35:19 -0000       1.7
  @@ -7,6 +7,7 @@
   
   /**
    * Value object for <XDtEjb:ejbName/>.
  + *
   <XDtClass:classCommentTags indent="0"/> */
   public class <XDtClass:classOf><XDtEjbValueObj:valueObjectClass/></XDtClass:classOf>
      extends <XDtEjbValueObj:extendsFrom/>
  @@ -41,7 +42,16 @@
   
      public <XDtClass:classOf><XDtEjbValueObj:valueObjectClass/></XDtClass:classOf>()
      {
  +      <XDtEjbPk:ifDoesntHavePrimkeyField>
         pk = new <XDtEjbPk:pkClass/>();
  +      </XDtEjbPk:ifDoesntHavePrimkeyField>
  +
  +      // Initialize all aggregates (non-collection) to contain a not null object
  +     <XDtEjbValueObj:forAllRelations superclasses="true" 
valueobject="<XDtEjbValueObj:valueObjectMatch/>">
  +     <XDtMethod:ifDoesntHaveMethodTag tagName="ejb:value-object" paramName="type">
  +       <XDtEjbValueObj:currentAggregateName/> = new 
<XDtEjbValueObj:currentAggregateType/>();
  +     </XDtMethod:ifDoesntHaveMethodTag>
  +     </XDtEjbValueObj:forAllRelations>
      }
   
      public <XDtClass:classOf><XDtEjbValueObj:valueObjectClass/></XDtClass:classOf>( 
<XDtEjbPersistent:persistentfieldList 
valueobject="<XDtEjbValueObj:valueObjectMatch/>"/> )
  @@ -50,7 +60,12 @@
         this.<XDtMethod:propertyName/> = <XDtMethod:propertyName/>;
         <XDtMethod:propertyName/>HasBeenSet = true;
        </XDtEjbPersistent:forAllPersistentFields>
  +      <XDtEjbPk:ifHasPrimkeyField>
  +       pk = this.<XDtEjbPk:primkeyGetter/>();
  +      </XDtEjbPk:ifHasPrimkeyField>
  +      <XDtEjbPk:ifDoesntHavePrimkeyField>
         pk = new <XDtEjbPk:pkClass/>(<XDtEjbPk:pkfieldListFrom name="this"/>);
  +      </XDtEjbPk:ifDoesntHavePrimkeyField>
      }
   
      //TODO Cloneable is better than this !
  @@ -70,7 +85,13 @@
         this.<XDtEjbValueObj:currentAggregateName/>s = 
otherValue.<XDtEjbValueObj:currentAggregateName/>s;
        </XDtMethod:ifHasMethodTag>
       </XDtEjbValueObj:forAllRelations>
  +
  +     <XDtEjbPk:ifHasPrimkeyField>
  +       pk = this.<XDtEjbPk:primkeyGetter/>();
  +     </XDtEjbPk:ifHasPrimkeyField>
  +     <XDtEjbPk:ifDoesntHavePrimkeyField>
         pk = new <XDtEjbPk:pkClass/>(<XDtEjbPk:pkfieldListFrom name="this"/>);
  +     </XDtEjbPk:ifDoesntHavePrimkeyField>
      }
   
      public <XDtEjbPk:pkClass/> getPrimaryKey()
  @@ -89,9 +110,17 @@
      {
         this.<XDtMethod:propertyName/> = <XDtMethod:propertyName/>;
         <XDtMethod:propertyName/>HasBeenSet = true;
  +
  +       <XDtEjbPk:ifHasPrimkeyField>
  +             <XDtEjbPk:ifIsPrimkeyField>
  +               pk = <XDtMethod:propertyName/>;
  +             </XDtEjbPk:ifIsPrimkeyField>
  +       </XDtEjbPk:ifHasPrimkeyField>
  +       <XDtEjbPk:ifDoesntHavePrimkeyField>
         <XDtEjbPk:ifIsPkField>
         pk.<XDtMethod:setterMethod/>(<XDtMethod:propertyName/>);
         </XDtEjbPk:ifIsPkField>
  +       </XDtEjbPk:ifDoesntHavePrimkeyField>
      }
   
      public boolean <XDtMethod:propertyName/>HasBeenSet(){
  @@ -128,50 +157,26 @@
   
      public void 
add<XDtEjbValueObj:currentAggregateName/>(<XDtEjbValueObj:currentAggregateType/> added)
      {
  -      if ( this.removed<XDtEjbValueObj:currentAggregateName/>s.contains(added) )
  -      {
  -         this.removed<XDtEjbValueObj:currentAggregateName/>s.remove(added);
  -         this.<XDtEjbValueObj:currentAggregateName/>s.add(added);
  -      }
  -      else if ( ! this.<XDtEjbValueObj:currentAggregateName/>s.contains(added) )
  -      {
            this.<XDtEjbValueObj:currentAggregateName/>s.add(added);
  +       if ( ! this.added<XDtEjbValueObj:currentAggregateName/>s.contains(added))
            this.added<XDtEjbValueObj:currentAggregateName/>s.add(added);
  -         if ( this.removed<XDtEjbValueObj:currentAggregateName/>s.contains(added) )
  -            this.removed<XDtEjbValueObj:currentAggregateName/>s.remove(added);
  -      }
  -      else throw new IllegalStateException("The value object do already contain 
object to add");
      }
   
      public void 
remove<XDtEjbValueObj:currentAggregateName/>(<XDtEjbValueObj:currentAggregateType/> 
removed)
      {
  -      if ( this.<XDtEjbValueObj:currentAggregateName/>s.contains(removed) )
  -      {
            this.<XDtEjbValueObj:currentAggregateName/>s.remove(removed);
  +       this.removed<XDtEjbValueObj:currentAggregateName/>s.add(removed);
            if (this.added<XDtEjbValueObj:currentAggregateName/>s.contains(removed) )
               this.added<XDtEjbValueObj:currentAggregateName/>s.remove(removed);
  -         else if ( ! 
this.removed<XDtEjbValueObj:currentAggregateName/>s.contains(removed) )
  -            this.removed<XDtEjbValueObj:currentAggregateName/>s.add(removed);
            if (this.updated<XDtEjbValueObj:currentAggregateName/>s.contains(removed) )
               this.updated<XDtEjbValueObj:currentAggregateName/>s.remove(removed);
         }
  -      else if ( this.added<XDtEjbValueObj:currentAggregateName/>s.contains(removed) 
)
  -      {
  -         this.added<XDtEjbValueObj:currentAggregateName/>s.remove(removed);
  -      }
  -      else throw new IllegalStateException("The value object does not contain 
object to remove");
  -   }
   
      public void 
update<XDtEjbValueObj:currentAggregateName/>(<XDtEjbValueObj:currentAggregateType/> 
updated)
      {
  -      if ( this.<XDtEjbValueObj:currentAggregateName/>s.contains(updated) )
  -      {
  -         if ( ! 
this.updated<XDtEjbValueObj:currentAggregateName/>s.contains(updated)
  -              && ! 
this.added<XDtEjbValueObj:currentAggregateName/>s.contains(updated) )
  +       if ( ! this.updated<XDtEjbValueObj:currentAggregateName/>s.contains(updated))
               this.updated<XDtEjbValueObj:currentAggregateName/>s.add(updated);
         }
  -      else throw new IllegalStateException("The value object does not contain 
object to update");
  -   }
   
      public void clean<XDtEjbValueObj:currentAggregateName/>(){
         this.added<XDtEjbValueObj:currentAggregateName/>s = new java.util.ArrayList();
  @@ -221,11 +226,16 @@
       */
      protected boolean hasIdentity()
      {
  +      <XDtEjbPk:ifHasPrimkeyField>
  +       return <XDtEjbPk:primkeyField/>HasBeenSet;
  +      </XDtEjbPk:ifHasPrimkeyField>
  +      <XDtEjbPk:ifDoesntHavePrimkeyField>
         boolean ret = true;
        <XDtEjbPersistent:forAllPersistentFields superclasses="true" 
valueobject="<XDtEjbValueObj:valueObjectMatch/>" only-pk="true">
         ret = ret && <XDtMethod:propertyName/>HasBeenSet;
        </XDtEjbPersistent:forAllPersistentFields>
         return ret;
  +      </XDtEjbPk:ifDoesntHavePrimkeyField>
      }
   
      public boolean equals(Object other)
  
  
  

_______________________________________________
Xdoclet-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/xdoclet-devel

Reply via email to