diff options
author | Reinier Zwitserloot <reinier@tipit.to> | 2009-06-18 01:17:03 +0200 |
---|---|---|
committer | Reinier Zwitserloot <reinier@tipit.to> | 2009-06-18 01:17:03 +0200 |
commit | 6254337948180140a47c872cb046cdff7e1326c4 (patch) | |
tree | 59c859e43589130892d962ee67dd166f10b031a6 /src/lombok/javac/handlers | |
parent | eca3cd7ccc6e8c5736f5a70c3b1c095bd949689d (diff) | |
download | lombok-6254337948180140a47c872cb046cdff7e1326c4.tar.gz lombok-6254337948180140a47c872cb046cdff7e1326c4.tar.bz2 lombok-6254337948180140a47c872cb046cdff7e1326c4.zip |
Expanded the AST printers to support a target PrintStream, and expanded the @PrintAST annotation to let you supply an optional filename. Useful particularly for IDEs, which don't usually have a viewable console.
Also renamed the printers to just 'Printer', as they are already inner classes of a specifically named type (JavacASTVisitor & co).
Diffstat (limited to 'src/lombok/javac/handlers')
-rw-r--r-- | src/lombok/javac/handlers/HandlePrintAST.java | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/lombok/javac/handlers/HandlePrintAST.java b/src/lombok/javac/handlers/HandlePrintAST.java index 3a738b4f..6becb7b8 100644 --- a/src/lombok/javac/handlers/HandlePrintAST.java +++ b/src/lombok/javac/handlers/HandlePrintAST.java @@ -1,9 +1,14 @@ package lombok.javac.handlers; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.PrintStream; + import org.mangosdk.spi.ProviderFor; import com.sun.tools.javac.tree.JCTree.JCAnnotation; +import lombok.Lombok; import lombok.core.AnnotationValues; import lombok.core.PrintAST; import lombok.javac.JavacASTVisitor; @@ -13,7 +18,16 @@ import lombok.javac.JavacAST.Node; @ProviderFor(JavacAnnotationHandler.class) public class HandlePrintAST implements JavacAnnotationHandler<PrintAST> { @Override public boolean handle(AnnotationValues<PrintAST> annotation, JCAnnotation ast, Node annotationNode) { - annotationNode.up().traverse(new JavacASTVisitor.JavacASTPrinter()); + PrintStream stream = System.out; + String fileName = annotation.getInstance().outfile(); + if ( fileName.length() > 0 ) try { + stream = new PrintStream(new File(fileName)); + } catch ( FileNotFoundException e ) { + Lombok.sneakyThrow(e); + } + + annotationNode.up().traverse(new JavacASTVisitor.Printer(stream)); + return true; } } |