User: rinkrank
  Date: 02/03/24 14:35:51

  Modified:    core/src/xdoclet/ejb/tags RelationTagsHandler.java
  Log:
  Fixed some bugs in relations. At least on WLS it now supports all combinations of 
cardinality and directionality. I'm afraid this has broken JBoss support for CMP, but 
wasn't it broken anyway?
  
  Revision  Changes    Path
  1.22      +36 -19    xdoclet/core/src/xdoclet/ejb/tags/RelationTagsHandler.java
  
  Index: RelationTagsHandler.java
  ===================================================================
  RCS file: 
/cvsroot/xdoclet/xdoclet/core/src/xdoclet/ejb/tags/RelationTagsHandler.java,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -w -r1.21 -r1.22
  --- RelationTagsHandler.java  24 Mar 2002 17:44:13 -0000      1.21
  +++ RelationTagsHandler.java  24 Mar 2002 22:35:51 -0000      1.22
  @@ -23,7 +23,7 @@
    * @author    <a href="mailto:[EMAIL PROTECTED]";>Aslak Helles�y</a>
    * @author    Ara Abrahamian ([EMAIL PROTECTED])
    * @created   Oct 15, 2001
  - * @version   $Revision: 1.21 $
  + * @version   $Revision: 1.22 $
    */
   public class RelationTagsHandler extends EjbTagsHandler
   {
  @@ -242,25 +242,33 @@
                                }
                        }
                }
  -             // Now swap relations so that right is always many. This may result
  +             // Now swap relations so that right is always many (if there is a many 
side). This may result
                // in left being null, in case of a unidirectional relationship
  -//           Iterator relations = relationMap.entrySet().iterator();
  -//           while( relations.hasNext() ) {
  -//                   Map.Entry entry = (Map.Entry) relations.next();
  -//                   RelationHolder relationHolder = (RelationHolder) 
entry.getValue();
  -//                   if( relationHolder.isLeftMany() && 
!relationHolder.isRightMany() ) {
  -//                           // swap
  -//                           if( cat.isDebugEnabled() ) {
  -//                                   cat.debug( "Swapping left -> right in attempt 
to make 1-n be 1-n (rather than n-1)" );
  -//                           }
  -//                           XClass c = relationHolder.right;
  -//                           XMethod m = relationHolder.rightMethod;
  -//                           relationHolder.right = relationHolder.left;
  -//                           relationHolder.rightMethod = relationHolder.leftMethod;
  -//                           relationHolder.left = c;
  -//                           relationHolder.leftMethod = m;
  -//                   }
  -//                   }
  +             // Possible cases are (left-right):
  +             // 1-->1
  +             // 1<--1
  +             // 1-->N
  +             // 1<--N
  +             // M-->N
  +             // N<--M
  +             // 1<->1
  +             // 1<->N
  +             // M<->N
  +             // Impossible cases are (left-right):
  +             // N-->1
  +             // N<--1
  +             Iterator relations = relationMap.entrySet().iterator();
  +             while( relations.hasNext() ) {
  +                     Map.Entry entry = (Map.Entry) relations.next();
  +                     RelationHolder relationHolder = (RelationHolder) 
entry.getValue();
  +                     if( relationHolder.isLeftMany() && 
!relationHolder.isRightMany() ) {
  +                             // swap
  +                             if( cat.isDebugEnabled() ) {
  +                                     cat.debug( "Swapping left -> right in attempt 
to make 1-n be 1-n (rather than n-1)" );
  +                             }
  +                             relationHolder.swap();
  +                     }
  +             }
   
                // Loop over all relations
                Iterator relationNameIterator = relationMap.keySet().iterator();
  @@ -708,6 +716,15 @@
                                result = getLeftMethod().doc().tagAttributeValue( 
"ejb:relation", "name", false );
                        }
                        return result;
  +             }
  +
  +             public void swap() {
  +                     XClass c = right;
  +                     XMethod m = rightMethod;
  +                     right = left;
  +                     rightMethod = leftMethod;
  +                     left = c;
  +                     leftMethod = m;
                }
   
                public int hashCode()
  
  
  

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

Reply via email to