[XDoclet-JIRA] Commented: (XJD-72) 1.5 parser - Declared interfaces of an inerface are not added

"Scott Sayles (JIRA)" <[email protected]> Thu, 11 May 2006 11:38:55 -0500 (CDT)
Newsgroups gmane.comp.java.xdoclet.devel
Message-ID <113893371.1147365535810.JavaMail.j2ee@atlassian01.managed.contegix.com>
    [ http://opensource.atlassian.com/projects/xdoclet/browse/XJD-72?page=comments#action_17605 ] 

Scott Sayles commented on XJD-72:
---------------------------------


Just thouht it might be nice to see a before and after of the generated parser code:

-------- (BEFORE) -------------
  final public void ExtendsList(boolean isInterface) throws ParseException {
   boolean extendsMoreThanOne = false;
   SourceClass sourceClass = currentClass();
   String name = null;
    jj_consume_token(EXTENDS);
    name = ClassOrInterfaceType();
    label_4:
    while (true) {
      switch (jj_nt.kind) {
      case COMMA:
        ;
        break;
      default:
        break label_4;
      }
      jj_consume_token(COMMA);
      name = ClassOrInterfaceType();
                                       extendsMoreThanOne = true;
    }
      if (extendsMoreThanOne && !isInterface) {if (true) throw new ParseException("A class cannot extend more than one other class");}
    //System.err.println("setSuperclass name=" + (name != null ? name : "java.lang.Object"));
    sourceClass.setSuperclass(name != null ? name : "java.lang.Object");
  }



-------- (AFTER) -------------
  final public void ExtendsList(boolean isInterface) throws ParseException {
   boolean extendsMoreThanOne = false;
   SourceClass sourceClass = currentClass();
   String name = null;
    jj_consume_token(EXTENDS);
    name = ClassOrInterfaceType();
    if (isInterface) sourceClass.addInterface(name);
    label_4:
    while (true) {
      switch (jj_nt.kind) {
      case COMMA:
        ;
        break;
      default:
        break label_4;
      }
      jj_consume_token(COMMA);
      name = ClassOrInterfaceType();
      extendsMoreThanOne = true;
      if (isInterface) sourceClass.addInterface(name);
    }
      if (extendsMoreThanOne && !isInterface) {if (true) throw new ParseException("A class cannot extend more than one other class");}
    //System.err.println("setSuperclass name=" + (name != null ? name : "java.lang.Object"));
    if (!isInterface) sourceClass.setSuperclass(name != null ? name : "java.lang.Object");
  }

> 1.5 parser - Declared interfaces of an inerface are not added
> -------------------------------------------------------------
>
>          Key: XJD-72
>          URL: http://opensource.atlassian.com/projects/xdoclet/browse/XJD-72
>      Project: XJavaDoc
>         Type: Bug

>   Components: Parser
>     Versions: 1.5
>     Reporter: Scott Sayles
>     Assignee: xdoclet-devel (Use for new issues)
>  Attachments: patch.diff
>
> Original Estimate: 1 hour
>         Remaining: 1 hour
>
> With a source class that is an interface that extends other interfaces, for example....
> public interface Dog extends Animal, FurryThing {}
> The xjavadoc AbstractClass representation of this should return Animal and FurryThing when asking it for it's declared interfaces.  While this worked in the java1.2 parser, this does not with the 1.5 parser.
> Within the 1.5 parser (Java1.5x.jjt), the generated method ExtendsList(boolean) only sets the super interface for the current class regardless of whether or not it's an interface or a concrete class.
> I've created a patch that updates Java1.5x.jjt so that it will destinguish between an interface and a concrete class and only set super class on the concrete, and call sourceClass.addInterface(name) if it is an interface (for all declared extending interfaces).  I'm not very familiar with the javacc parser stuff so please excuse the naivety of the fix.  However, what is there seems to work and all unit tests pass.  I'll add the patch soon after entering this.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://opensource.atlassian.com/projects/xdoclet/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira



-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642