User: vharcq
Date: 02/04/02 04:41:32
Modified: core/src/xdoclet/ejb/tags EjbTagsHandler.java
Log:
Tricky change in Component Inheritance
Look at CustomerBean extends PersonBean extends BaseEntityBean
that gives
CustomerHome extends PersonHome extends EJBHome
Because CustomerBean and PersonBean implements EntityBean
but BaseEntityBean does not implzement EntityBean
I think the best we can achive but there are chances I forgot something
Revision Changes Path
1.33 +38 -23 xdoclet/core/src/xdoclet/ejb/tags/EjbTagsHandler.java
Index: EjbTagsHandler.java
===================================================================
RCS file: /cvsroot/xdoclet/xdoclet/core/src/xdoclet/ejb/tags/EjbTagsHandler.java,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -w -r1.32 -r1.33
--- EjbTagsHandler.java 24 Mar 2002 17:44:13 -0000 1.32
+++ EjbTagsHandler.java 2 Apr 2002 12:41:32 -0000 1.33
@@ -29,7 +29,7 @@
/**
* @author Ara Abrahamian ([EMAIL PROTECTED])
* @created Oct 15, 2001
- * @version $Revision: 1.32 $
+ * @version $Revision: 1.33 $
*/
public class EjbTagsHandler extends XDocletTagSupport
{
@@ -776,16 +776,42 @@
//see ejb:pk/etc generate="?" in superclass
XClass superclass = clazz.superclass();
+
+ boolean super_generate;
+ if (superclass.doc().hasTag(tag_name))
+ {
String super_generate_str = getTagValue(
superclass.doc(),
tag_name,
"generate",
null,
- "true",
+ null,
false,
false
);
- boolean super_generate = TypeConversionUtil.stringToBoolean(
super_generate_str, true );
+ super_generate = TypeConversionUtil.stringToBoolean(
super_generate_str, true );
+ }
+ else
+ {
+ // Two Cases : PersonBean and BaseEntityBean
+ super_generate = false;
+ XClass[] interfaces = clazz.superclass().interfaces();
+
+ for( int i = 0; i < interfaces.length; i++ )
+ {
+ XClass intf = interfaces[i];
+
+ //if superclass is not javax.ejb.EntityBean then we
have a superclass which is itself deriving from javax.ejb.EntityBean
+ if( intf.qualifiedName().equals(
"javax.ejb.EntityBean" ) ||
+ intf.qualifiedName().equals(
"javax.ejb.SessionBean" ) ||
+ intf.qualifiedName().equals(
"javax.ejb.MessageDrivenBean" ) )
+ {
+ //it derives from javax.ejb.*Bean and no
superclass for pk/etc class is explicitly defined
+ super_generate = true;
+ }
+ }
+
+ }
//note: look for ejb:pk/etc extends in superclasses also only if
generate="false" in superclass
//so extends attribute is inherited only if superclass's pk/etc is not
to be generated
@@ -805,31 +831,20 @@
return extends_value;
else
{
- XClass[] interfaces = clazz.interfaces();
-
- for( int i = 0; i < interfaces.length; i++ )
- {
- XClass intf = interfaces[i];
-
- //if superclass is not javax.ejb.EntityBean then we
have a superclass which is itself deriving from javax.ejb.EntityBean
- if( intf.qualifiedName().equals(
"javax.ejb.EntityBean" ) ||
- intf.qualifiedName().equals(
"javax.ejb.SessionBean" ) ||
- intf.qualifiedName().equals(
"javax.ejb.MessageDrivenBean" ) )
- {
- //it derives from javax.ejb.*Bean and no
superclass for pk/etc class is explicitly defined
- return default_base_class_name;
- }
- }
-
//now try to guess
//if we are deriving from another ejb bean then derive from
that bean's pk class too
//(if generate="true" for superclass's pk/etc class)
+ // java.lang.Object (the only that have no superclass)
+ if ( superclass.superclass() == null )
+ {
+ return default_base_class_name;
+ }
//if a superclass with generate="true"
- if( super_generate == true )
+ else if( super_generate == true )
{
String class_name = getDependentClassFor( superclass,
type );
-
+ if (cat.isDebugEnabled()) cat.debug("DCF = "+class_name + "
"+superclass.superclass());
if( class_name != null )
return class_name;
else
_______________________________________________
Xdoclet-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/xdoclet-devel