src/share/classes/com/sun/tools/javac/processing/PrintingProcessor.java

Print this page
rev 218 : 6460529: Provide mixin interfaces for getQualifiedName and getTypeParameters
Reviewed-by: jjg


 108             ElementKind kind = e.getKind();
 109 
 110             if (kind != STATIC_INIT &&
 111                 kind != INSTANCE_INIT) {
 112                 Element enclosing = e.getEnclosingElement();
 113 
 114                 // Don't print out the constructor of an anonymous class
 115                 if (kind == CONSTRUCTOR &&
 116                     enclosing != null &&
 117                     NestingKind.ANONYMOUS ==
 118                     // Use an anonymous class to determine anonymity!
 119                     (new SimpleElementVisitor6<NestingKind, Void>() {
 120                         @Override
 121                         public NestingKind visitType(TypeElement e, Void p) {
 122                             return e.getNestingKind();
 123                         }
 124                     }).visit(enclosing))
 125                     return this;
 126 
 127                 defaultAction(e, true);
 128                 printFormalTypeParameters(e);
 129 
 130                 switch(kind) {
 131                     case CONSTRUCTOR:
 132                     // Print out simple name of the class
 133                     writer.print(e.getEnclosingElement().getSimpleName());
 134                     break;
 135 
 136                     case METHOD:
 137                     writer.print(e.getReturnType().toString());
 138                     writer.print(" ");
 139                     writer.print(e.getSimpleName().toString());
 140                     break;
 141                 }
 142 
 143                 writer.print("(");
 144                 printParameters(e);
 145                 writer.print(")");
 146                 AnnotationValue defaultValue = e.getDefaultValue();
 147                 if (defaultValue != null)
 148                     writer.print(" default " + defaultValue);


 190                 writer.print(")");
 191             } else {
 192                 if (nestingKind == TOP_LEVEL) {
 193                     PackageElement pkg = elementUtils.getPackageOf(e);
 194                     if (!pkg.isUnnamed())
 195                         writer.print("package " + pkg.getQualifiedName() + ";\n");
 196                 }
 197 
 198                 defaultAction(e, true);
 199 
 200                 switch(kind) {
 201                 case ANNOTATION_TYPE:
 202                     writer.print("@interface");
 203                     break;
 204                 default:
 205                     writer.print(kind.toString().toLowerCase());
 206                 }
 207                 writer.print(" ");
 208                 writer.print(e.getSimpleName());
 209 
 210                 printFormalTypeParameters(e);
 211 
 212                 // Print superclass information if informative
 213                 if (kind == CLASS) {
 214                     TypeMirror supertype = e.getSuperclass();
 215                     if (supertype.getKind() != TypeKind.NONE) {
 216                         TypeElement e2 = (TypeElement)
 217                             ((DeclaredType) supertype).asElement();
 218                         if (e2.getSuperclass().getKind() != TypeKind.NONE)
 219                             writer.print(" extends " + supertype);
 220                     }
 221                 }
 222 
 223                 printInterfaces(e);
 224             }
 225             writer.println(" {");
 226             indentation++;
 227 
 228             if (kind == ENUM) {
 229                 List<Element> enclosedElements =
 230                     new ArrayList<Element>(e.getEnclosedElements());


 347 
 348             case METHOD:
 349             case FIELD:
 350                 Element enclosingElement = e.getEnclosingElement();
 351                 if (enclosingElement != null &&
 352                     enclosingElement.getKind().isInterface()) {
 353                     modifiers.remove(Modifier.PUBLIC);
 354                     modifiers.remove(Modifier.ABSTRACT); // only for methods
 355                     modifiers.remove(Modifier.STATIC);   // only for fields
 356                     modifiers.remove(Modifier.FINAL);    // only for fields
 357                 }
 358                 break;
 359 
 360             }
 361 
 362             for(Modifier m: modifiers) {
 363                 writer.print(m.toString() + " ");
 364             }
 365         }
 366 
 367         private void printFormalTypeParameters(ExecutableElement executable) {
 368             printFormalTypeParameters(executable.getTypeParameters(), true);
 369         }
 370 
 371         private void printFormalTypeParameters(TypeElement type) {
 372             printFormalTypeParameters(type.getTypeParameters(), false);
 373         }
 374 
 375         private void printFormalTypeParameters(List<? extends TypeParameterElement> typeParams,
 376                                                boolean pad) {

 377             if (typeParams.size() > 0) {
 378                 writer.print("<");
 379 
 380                 boolean first = true;
 381                 for(TypeParameterElement tpe: typeParams) {
 382                     if (!first)
 383                         writer.print(", ");
 384                     writer.print(tpe.toString());
 385                     first = false;
 386                 }
 387 
 388                 writer.print(">");
 389                 if (pad)
 390                     writer.print(" ");
 391             }
 392         }
 393 
 394         private void printAnnotationsInline(Element e) {
 395             List<? extends AnnotationMirror> annots = e.getAnnotationMirrors();
 396             for(AnnotationMirror annotationMirror : annots) {




 108             ElementKind kind = e.getKind();
 109 
 110             if (kind != STATIC_INIT &&
 111                 kind != INSTANCE_INIT) {
 112                 Element enclosing = e.getEnclosingElement();
 113 
 114                 // Don't print out the constructor of an anonymous class
 115                 if (kind == CONSTRUCTOR &&
 116                     enclosing != null &&
 117                     NestingKind.ANONYMOUS ==
 118                     // Use an anonymous class to determine anonymity!
 119                     (new SimpleElementVisitor6<NestingKind, Void>() {
 120                         @Override
 121                         public NestingKind visitType(TypeElement e, Void p) {
 122                             return e.getNestingKind();
 123                         }
 124                     }).visit(enclosing))
 125                     return this;
 126 
 127                 defaultAction(e, true);
 128                 printFormalTypeParameters(e, true);
 129 
 130                 switch(kind) {
 131                     case CONSTRUCTOR:
 132                     // Print out simple name of the class
 133                     writer.print(e.getEnclosingElement().getSimpleName());
 134                     break;
 135 
 136                     case METHOD:
 137                     writer.print(e.getReturnType().toString());
 138                     writer.print(" ");
 139                     writer.print(e.getSimpleName().toString());
 140                     break;
 141                 }
 142 
 143                 writer.print("(");
 144                 printParameters(e);
 145                 writer.print(")");
 146                 AnnotationValue defaultValue = e.getDefaultValue();
 147                 if (defaultValue != null)
 148                     writer.print(" default " + defaultValue);


 190                 writer.print(")");
 191             } else {
 192                 if (nestingKind == TOP_LEVEL) {
 193                     PackageElement pkg = elementUtils.getPackageOf(e);
 194                     if (!pkg.isUnnamed())
 195                         writer.print("package " + pkg.getQualifiedName() + ";\n");
 196                 }
 197 
 198                 defaultAction(e, true);
 199 
 200                 switch(kind) {
 201                 case ANNOTATION_TYPE:
 202                     writer.print("@interface");
 203                     break;
 204                 default:
 205                     writer.print(kind.toString().toLowerCase());
 206                 }
 207                 writer.print(" ");
 208                 writer.print(e.getSimpleName());
 209 
 210                 printFormalTypeParameters(e, false);
 211 
 212                 // Print superclass information if informative
 213                 if (kind == CLASS) {
 214                     TypeMirror supertype = e.getSuperclass();
 215                     if (supertype.getKind() != TypeKind.NONE) {
 216                         TypeElement e2 = (TypeElement)
 217                             ((DeclaredType) supertype).asElement();
 218                         if (e2.getSuperclass().getKind() != TypeKind.NONE)
 219                             writer.print(" extends " + supertype);
 220                     }
 221                 }
 222 
 223                 printInterfaces(e);
 224             }
 225             writer.println(" {");
 226             indentation++;
 227 
 228             if (kind == ENUM) {
 229                 List<Element> enclosedElements =
 230                     new ArrayList<Element>(e.getEnclosedElements());


 347 
 348             case METHOD:
 349             case FIELD:
 350                 Element enclosingElement = e.getEnclosingElement();
 351                 if (enclosingElement != null &&
 352                     enclosingElement.getKind().isInterface()) {
 353                     modifiers.remove(Modifier.PUBLIC);
 354                     modifiers.remove(Modifier.ABSTRACT); // only for methods
 355                     modifiers.remove(Modifier.STATIC);   // only for fields
 356                     modifiers.remove(Modifier.FINAL);    // only for fields
 357                 }
 358                 break;
 359 
 360             }
 361 
 362             for(Modifier m: modifiers) {
 363                 writer.print(m.toString() + " ");
 364             }
 365         }
 366 
 367         private void printFormalTypeParameters(Parameterizable e,








 368                                                boolean pad) {
 369             List<? extends TypeParameterElement> typeParams = e.getTypeParameters();
 370             if (typeParams.size() > 0) {
 371                 writer.print("<");
 372 
 373                 boolean first = true;
 374                 for(TypeParameterElement tpe: typeParams) {
 375                     if (!first)
 376                         writer.print(", ");
 377                     writer.print(tpe.toString());
 378                     first = false;
 379                 }
 380 
 381                 writer.print(">");
 382                 if (pad)
 383                     writer.print(" ");
 384             }
 385         }
 386 
 387         private void printAnnotationsInline(Element e) {
 388             List<? extends AnnotationMirror> annots = e.getAnnotationMirrors();
 389             for(AnnotationMirror annotationMirror : annots) {