All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.moon.mapping.processing.EnvUtils Maven / Gradle / Ivy

package com.moon.mapping.processing;

import javax.annotation.processing.Filer;
import javax.annotation.processing.Messager;
import javax.annotation.processing.ProcessingEnvironment;
import javax.lang.model.util.Elements;
import javax.lang.model.util.Types;
import javax.tools.JavaFileObject;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;
import java.util.function.Consumer;
import java.util.function.Supplier;

/**
 * @author moonsky
 */
final class EnvUtils {

    private static ProcessingEnvironment ENV;

    private EnvUtils() { }

    static void initialize(ProcessingEnvironment environment) { ENV = environment; }

    public static ProcessingEnvironment getEnv() { return ENV; }

    public static Types getTypes() { return getEnv().getTypeUtils(); }

    public static Elements getUtils() { return getEnv().getElementUtils(); }

    public static Messager getMessager() { return getEnv().getMessager(); }

    public static void newJavaFile(Filer filer, String name, Consumer consumer) throws IOException {
        JavaFileObject javaFile = filer.createSourceFile(name);
        try (Writer jw = javaFile.openWriter(); PrintWriter writer = new PrintWriter(jw)) {
            consumer.accept(writer);
        }
    }

    public static void newJavaFile(Filer filer, String name, ThrowingSupplier supplier) throws IOException {
        newJavaFile(filer, name, writer -> {
            writer.write(supplier.get());
            writer.flush();
        });
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy