135135
136136// TODO: superclass inheritance for JAXB XmlAccessorType
137137
138+ //BH 2020.01.16 -- 3.2.7-v4 replaces extends java.awt.Component and javax.swing.JComponent
138139//BH 2020.01.12 -- 3.2.7-v3 fixes JAXB annotation marshalling for 3.2.7
139140//BH 2020.01.11 -- 3.2.7-v3 corrects and rewrites synthetic bridge creation with much cleaner heap usage
140141//BH 2020.01.09 -- 3.2.7-v2 introduces @j2sAlias as a way of adding a custom method name, as in exports.
@@ -2004,7 +2005,8 @@ private boolean addClassOrInterface(ASTNode node, ITypeBinding binding, List<?>
20042005 this$0Name0 = this$0Name ;
20052006 this$0Name = null ;
20062007 finalShortClassName = getFinalJ2SClassName (
2007- (isLambda ? getMyJavaClassNameLambda (true ) : getUnreplacedJavaClassNameQualified (binding )), FINAL_P );
2008+ (isLambda ? getMyJavaClassNameLambda (true ) : getUnreplacedJavaClassNameQualified (binding )),
2009+ FINAL_P );
20082010 if (finalShortClassName .startsWith ("P$." )) {
20092011 // java.lang.x will return x, not P$.x
20102012 finalShortClassName = finalShortClassName .substring (3 );
@@ -2143,14 +2145,24 @@ private boolean addClassOrInterface(ASTNode node, ITypeBinding binding, List<?>
21432145 } else {
21442146 hasDependents = true ;
21452147 String superclassName = getUnreplacedJavaClassNameQualified (superclass );
2146- if (superclassName == null || superclassName .length () == 0 || "java.lang.Object" .equals (superclassName )) {
2148+ switch (superclassName == null ? "" : superclassName ) {
2149+ case "" :
2150+ case "java.lang.Object" :
21472151 buffer .append ("null" );
2148- } else {
2152+ break ;
2153+ case "java.awt.Component" :
2154+ buffer .append ("'java.awt.Label'" );
2155+ break ;
2156+ case "javax.swing.JComponent" :
2157+ buffer .append ("'javax.swing.JLabel'" );
2158+ break ;
2159+ default :
21492160 if (isAnonymous ) {
21502161 buffer .append (getFinalJ2SClassNameQualifier (null , superclass , superclassName , FINAL_ESCAPE ));
21512162 } else {
21522163 buffer .append (getFinalInnerClassList (superclass , superclassName ));
21532164 }
2165+ break ;
21542166 }
21552167 }
21562168
@@ -2183,7 +2195,8 @@ private boolean addClassOrInterface(ASTNode node, ITypeBinding binding, List<?>
21832195 int pt = buffer .length ();
21842196 while (!b .isTopLevel ()) {
21852197 b = b .getDeclaringClass ();
2186- buffer .insert (pt , "'" + getFinalJ2SClassName (getUnreplacedJavaClassNameQualified (b ), FINAL_RAW ) + "'," );
2198+ buffer .insert (pt ,
2199+ "'" + getFinalJ2SClassName (getUnreplacedJavaClassNameQualified (b ), FINAL_RAW ) + "'," );
21872200 }
21882201 }
21892202 buffer .append ("'" );
@@ -2527,7 +2540,7 @@ private void processAnnotationTypeMemberDeclaration(AnnotationTypeMemberDeclarat
25272540 String retName = (ret .isPrimitive () ? ret .getName () : j2sNonPrimitiveName (ret , true ));
25282541 buffer .append ("a.push(['" + name + "','" + retName + (isArray ? "[]" : "" ) + "'," );
25292542 if (def == null ) {
2530- if (ret .isPrimitive ()) {
2543+ if (! isArray && ret .isPrimitive ()) {
25312544 switch (ret .getName ()) {
25322545 case "char" :
25332546 buffer .append ("'\0 '" );
@@ -2546,7 +2559,7 @@ private void processAnnotationTypeMemberDeclaration(AnnotationTypeMemberDeclarat
25462559 // buffer.append("\"" + mbinding.getAnnotations() + "\"");
25472560 //}
25482561 }
2549- } else if (ret .isAnnotation ()){
2562+ } else if (! isArray && ret .isAnnotation ()){
25502563 buffer .append ("'@" + getFinalJ2SClassName (getUnreplacedJavaClassNameQualified (def .resolveTypeBinding ()), FINAL_RAW ) + "'" );
25512564 } else {
25522565 def .accept (this );
0 commit comments