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

Reply via email to