33 import javax.lang.model.type.TypeMirror; 34 import javax.lang.model.util.Elements; 35 import javax.lang.model.util.Types; 36 import javax.tools.JavaCompiler.CompilationTask; 37 import javax.tools.JavaFileObject; 38 39 import com.sun.source.tree.CompilationUnitTree; 40 import com.sun.source.tree.Tree; 41 import com.sun.tools.javac.api.BasicJavacTask; 42 import com.sun.tools.javac.processing.JavacProcessingEnvironment; 43 import com.sun.tools.javac.util.Context; 44 45 /** 46 * Provides access to functionality specific to the JDK Java Compiler, javac. 47 * 48 * @author Peter von der Ahé 49 * @author Jonathan Gibbons 50 * @since 1.6 51 */ 52 public abstract class JavacTask implements CompilationTask { 53 54 /** 55 * Returns the {@code JavacTask} for a {@code ProcessingEnvironment}. 56 * If the compiler is being invoked using a 57 * {@link javax.tools.JavaCompiler.CompilationTask CompilationTask}, 58 * then that task will be returned. 59 * @param processingEnvironment the processing environment 60 * @return the {@code JavacTask} for a {@code ProcessingEnvironment} 61 * @since 1.8 62 */ 63 public static JavacTask instance(ProcessingEnvironment processingEnvironment) { 64 if (!processingEnvironment.getClass().getName().equals( 65 "com.sun.tools.javac.processing.JavacProcessingEnvironment")) 66 throw new IllegalArgumentException(); 67 Context c = ((JavacProcessingEnvironment) processingEnvironment).getContext(); 68 JavacTask t = c.get(JavacTask.class); 69 return (t != null) ? t : new BasicJavacTask(c, true); 70 } 71 72 /** | 33 import javax.lang.model.type.TypeMirror; 34 import javax.lang.model.util.Elements; 35 import javax.lang.model.util.Types; 36 import javax.tools.JavaCompiler.CompilationTask; 37 import javax.tools.JavaFileObject; 38 39 import com.sun.source.tree.CompilationUnitTree; 40 import com.sun.source.tree.Tree; 41 import com.sun.tools.javac.api.BasicJavacTask; 42 import com.sun.tools.javac.processing.JavacProcessingEnvironment; 43 import com.sun.tools.javac.util.Context; 44 45 /** 46 * Provides access to functionality specific to the JDK Java Compiler, javac. 47 * 48 * @author Peter von der Ahé 49 * @author Jonathan Gibbons 50 * @since 1.6 51 */ 52 public abstract class JavacTask implements CompilationTask { 53 /** 54 * Constructor for subclasses to call. 55 */ 56 public JavacTask() {} 57 58 /** 59 * Returns the {@code JavacTask} for a {@code ProcessingEnvironment}. 60 * If the compiler is being invoked using a 61 * {@link javax.tools.JavaCompiler.CompilationTask CompilationTask}, 62 * then that task will be returned. 63 * @param processingEnvironment the processing environment 64 * @return the {@code JavacTask} for a {@code ProcessingEnvironment} 65 * @since 1.8 66 */ 67 public static JavacTask instance(ProcessingEnvironment processingEnvironment) { 68 if (!processingEnvironment.getClass().getName().equals( 69 "com.sun.tools.javac.processing.JavacProcessingEnvironment")) 70 throw new IllegalArgumentException(); 71 Context c = ((JavacProcessingEnvironment) processingEnvironment).getContext(); 72 JavacTask t = c.get(JavacTask.class); 73 return (t != null) ? t : new BasicJavacTask(c, true); 74 } 75 76 /** |