LibJF/libjf-config-compiler-plugi.../src/main/java/io/gitlab/jfronny/libjf/config/plugin/ConfigClass.java

27 lines
1.2 KiB
Java

package io.gitlab.jfronny.libjf.config.plugin;
import com.squareup.javapoet.ClassName;
import com.squareup.javapoet.TypeName;
import javax.lang.model.element.TypeElement;
public record ConfigClass(
TypeElement classElement,
ClassName className,
TypeName typeName,
ClassName generatedClassName,
String[] referencedConfigs,
TypeName tweakerName
) {
public static ConfigClass of(TypeElement element, String[] referencedConfigs, TypeName tweakerName, boolean hasManifold) {
ClassName className = ClassName.get(element);
String pkg = hasManifold ? "gsoncompile.extensions." + className.packageName() + "." + className.simpleNames().getFirst() : className.packageName();
ClassName generatedClassName = ClassName.get(pkg, "JFC_" + className.simpleNames().getFirst(), className.simpleNames().subList(1, className.simpleNames().size()).toArray(String[]::new));
return new ConfigClass(element, ClassName.get(element), TypeName.get(element.asType()), generatedClassName, referencedConfigs, tweakerName);
}
public boolean hasTweaker() {
return ConfigProcessor.isUsable(tweakerName);
}
}