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