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

Print this page
rev 377 : 6872011: Update printing processor to support JSR 308
Reviewed-by: jjg


  31 import static javax.lang.model.element.ElementKind.*;
  32 import static javax.lang.model.element.NestingKind.*;
  33 import javax.lang.model.type.*;
  34 import javax.lang.model.util.*;
  35 
  36 import java.io.PrintWriter;
  37 import java.io.Writer;
  38 import java.util.*;
  39 
  40 /**
  41  * A processor which prints out elements.  Used to implement the
  42  * -Xprint option; the included visitor class is used to implement
  43  * Elements.printElements.
  44  *
  45  * <p><b>This is NOT part of any API supported by Sun Microsystems.
  46  * If you write code that depends on this, you do so at your own risk.
  47  * This code and its internal interfaces are subject to change or
  48  * deletion without notice.</b>
  49  */
  50 @SupportedAnnotationTypes("*")
  51 @SupportedSourceVersion(SourceVersion.RELEASE_6)

  52 public class PrintingProcessor extends AbstractProcessor {
  53     PrintWriter writer;
  54 
  55     public PrintingProcessor() {
  56         super();
  57         writer = new PrintWriter(System.out);
  58     }
  59 
  60     public void setWriter(Writer w) {
  61         writer = new PrintWriter(w);
  62     }
  63 
  64     @Override
  65     public boolean process(Set<? extends TypeElement> tes,
  66                            RoundEnvironment renv) {
  67 
  68         for(Element element : renv.getRootElements()) {
  69             print(element);
  70         }
  71 


 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) {
 390                 writer.print(annotationMirror);
 391                 writer.print(" ");
 392             }
 393         }
 394 
 395         private void printAnnotations(Element e) {
 396             List<? extends AnnotationMirror> annots = e.getAnnotationMirrors();




  31 import static javax.lang.model.element.ElementKind.*;
  32 import static javax.lang.model.element.NestingKind.*;
  33 import javax.lang.model.type.*;
  34 import javax.lang.model.util.*;
  35 
  36 import java.io.PrintWriter;
  37 import java.io.Writer;
  38 import java.util.*;
  39 
  40 /**
  41  * A processor which prints out elements.  Used to implement the
  42  * -Xprint option; the included visitor class is used to implement
  43  * Elements.printElements.
  44  *
  45  * <p><b>This is NOT part of any API supported by Sun Microsystems.
  46  * If you write code that depends on this, you do so at your own risk.
  47  * This code and its internal interfaces are subject to change or
  48  * deletion without notice.</b>
  49  */
  50 @SupportedAnnotationTypes("*")
  51 // TODO: Change to version 7 based visitors when available
  52 @SupportedSourceVersion(SourceVersion.RELEASE_7)
  53 public class PrintingProcessor extends AbstractProcessor {
  54     PrintWriter writer;
  55 
  56     public PrintingProcessor() {
  57         super();
  58         writer = new PrintWriter(System.out);
  59     }
  60 
  61     public void setWriter(Writer w) {
  62         writer = new PrintWriter(w);
  63     }
  64 
  65     @Override
  66     public boolean process(Set<? extends TypeElement> tes,
  67                            RoundEnvironment renv) {
  68 
  69         for(Element element : renv.getRootElements()) {
  70             print(element);
  71         }
  72 


 358                 }
 359                 break;
 360 
 361             }
 362 
 363             for(Modifier m: modifiers) {
 364                 writer.print(m.toString() + " ");
 365             }
 366         }
 367 
 368         private void printFormalTypeParameters(Parameterizable e,
 369                                                boolean pad) {
 370             List<? extends TypeParameterElement> typeParams = e.getTypeParameters();
 371             if (typeParams.size() > 0) {
 372                 writer.print("<");
 373 
 374                 boolean first = true;
 375                 for(TypeParameterElement tpe: typeParams) {
 376                     if (!first)
 377                         writer.print(", ");
 378                     printAnnotationsInline(tpe);
 379                     writer.print(tpe.toString());
 380                     first = false;
 381                 }
 382 
 383                 writer.print(">");
 384                 if (pad)
 385                     writer.print(" ");
 386             }
 387         }
 388 
 389         private void printAnnotationsInline(Element e) {
 390             List<? extends AnnotationMirror> annots = e.getAnnotationMirrors();
 391             for(AnnotationMirror annotationMirror : annots) {
 392                 writer.print(annotationMirror);
 393                 writer.print(" ");
 394             }
 395         }
 396 
 397         private void printAnnotations(Element e) {
 398             List<? extends AnnotationMirror> annots = e.getAnnotationMirrors();