[
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
_______________________________________________
xdoclet-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xdoclet-devel