JavaFiler.java
/*
* SPDX-FileCopyrightText: 2025 kaumei.io
* SPDX-License-Identifier: Apache-2.0
*/
package io.kaumei.jdbc.anno.ctx;
import com.palantir.javapoet.JavaFile;
import com.palantir.javapoet.TypeSpec;
import io.kaumei.jdbc.anno.Processor;
import javax.annotation.processing.Filer;
import javax.lang.model.element.TypeElement;
import java.io.IOException;
import static java.util.Objects.requireNonNull;
public final class JavaFiler {
// ----- service
private final JavaMessenger logger;
private final Filer filer;
public JavaFiler(Context ctx, Filer filer) {
this.logger = requireNonNull(ctx.logger);
this.filer = requireNonNull(filer);
}
// ------------------------------------------------------------------------
public void writeJava(TypeElement elem, String packageName, TypeSpec typeSpec) {
JavaFile javaFile = JavaFile.builder(packageName, typeSpec)
.addFileComment(Processor.FILE_COMMENT)
.indent(" ")
.build();
try {
javaFile.writeTo(this.filer);
} catch (IOException e) { // sanity-check
this.logger.error(elem, "Failed to write generated file: " + javaFile.toJavaFileObject().getName()); // sanity-check
}
}
}