Search in sources :

Example 26 with Filer

use of javax.annotation.processing.Filer in project tycho by eclipse.

the class JSR269Processor method process.

@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
    if (!roundEnv.processingOver()) {
        final Filer filer = processingEnv.getFiler();
        try {
            final JavaFileObject sourceFile = filer.createSourceFile("tycho590.processed.Processor");
            Writer sourceWriter = sourceFile.openWriter();
            sourceWriter.append("package tycho590.processed;");
            sourceWriter.append(String.format("%n"));
            sourceWriter.append("public class Processor {}");
            sourceWriter.close();
        } catch (IOException ex) {
            // That will happen on round 2 because source file already exists
            System.out.println("[APT] " + ex.getMessage());
        }
    }
    return false;
}
Also used : JavaFileObject(javax.tools.JavaFileObject) IOException(java.io.IOException) Filer(javax.annotation.processing.Filer) Writer(java.io.Writer)

Example 27 with Filer

use of javax.annotation.processing.Filer in project potato by eyeem.

the class Processor method process.

@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
    ArrayList<CodeWriter> writers = new ArrayList<>();
    Filer filer = processingEnv.getFiler();
    // region for every annotation (should be just the one)
    for (TypeElement annotation : annotations) {
        // region for every class annotated with the annotation
        for (Element element : roundEnv.getElementsAnnotatedWith(annotation)) {
            log("generating for " + element.getSimpleName());
            PackageElement packageElement = getPackage(element);
            TypeElement classElement = getClass(element);
            writers.add(new CodeWriter(this, packageElement, classElement, filer));
        }
    // endregion
    }
    for (CodeWriter writer : writers) {
        writer.run();
    }
    return true;
}
Also used : TypeElement(javax.lang.model.element.TypeElement) PackageElement(javax.lang.model.element.PackageElement) Element(javax.lang.model.element.Element) TypeElement(javax.lang.model.element.TypeElement) ArrayList(java.util.ArrayList) PackageElement(javax.lang.model.element.PackageElement) Filer(javax.annotation.processing.Filer)

Aggregations

Filer (javax.annotation.processing.Filer)27 IOException (java.io.IOException)18 TypeElement (javax.lang.model.element.TypeElement)13 FileObject (javax.tools.FileObject)13 Writer (java.io.Writer)11 Element (javax.lang.model.element.Element)9 File (java.io.File)6 PackageElement (javax.lang.model.element.PackageElement)6 PrintWriter (java.io.PrintWriter)5 URI (java.net.URI)4 ExecutableElement (javax.lang.model.element.ExecutableElement)4 JavaFileObject (javax.tools.JavaFileObject)4 StringWriter (java.io.StringWriter)3 ArrayList (java.util.ArrayList)3 ProcessingEnvironment (javax.annotation.processing.ProcessingEnvironment)3 Name (javax.lang.model.element.Name)3 VariableElement (javax.lang.model.element.VariableElement)3 DeclaredType (javax.lang.model.type.DeclaredType)3 FileReader (java.io.FileReader)2 FileWriter (java.io.FileWriter)2