diff --git a/libjf-config-core-v2/src/main/java/io/gitlab/jfronny/libjf/config/api/v2/EntryInfo.java b/libjf-config-core-v2/src/main/java/io/gitlab/jfronny/libjf/config/api/v2/EntryInfo.java index 58f4847..bdd6ba2 100644 --- a/libjf-config-core-v2/src/main/java/io/gitlab/jfronny/libjf/config/api/v2/EntryInfo.java +++ b/libjf-config-core-v2/src/main/java/io/gitlab/jfronny/libjf/config/api/v2/EntryInfo.java @@ -7,9 +7,13 @@ import io.gitlab.jfronny.commons.serialize.databind.api.TypeToken; import io.gitlab.jfronny.libjf.LibJf; import io.gitlab.jfronny.libjf.config.api.v2.type.Type; import io.gitlab.jfronny.libjf.config.impl.dsl.DslEntryInfo; +import io.gitlab.jfronny.libjf.config.impl.entrypoint.JfConfigSafe; import org.jetbrains.annotations.ApiStatus; import java.lang.reflect.Field; +import java.util.Arrays; +import java.util.Objects; +import java.util.stream.Collectors; public interface EntryInfo { static EntryInfo ofField(Field field) { @@ -84,11 +88,19 @@ public interface EntryInfo { } default > void serializeOneTo(T value, String translationPrefix, Writer writer) throws TEx, MalformedDataException { + String commentText; + if ((commentText = JfConfigSafe.TRANSLATION_SUPPLIER.apply(translationPrefix + getName() + ".tooltip")) != null) { + writer.comment(commentText); + } + if (getValueType().isEnum()) { + writer.comment("Valid: [" + Arrays.stream(getValueType().asEnum().options()).map(Objects::toString).collect(Collectors.joining(", ")) + "]"); + } + writer.name(getName()); LibJf.MAPPER.getAdapter(getTypeToken()).serialize(value, writer); } default TypeToken getTypeToken() { - return (TypeToken) getValueType().asToken(); + return (TypeToken) Objects.requireNonNullElse(getValueType().asToken(), TypeToken.get(String.class)); } /** diff --git a/libjf-config-core-v2/src/main/java/io/gitlab/jfronny/libjf/config/impl/dsl/DslEntryInfo.java b/libjf-config-core-v2/src/main/java/io/gitlab/jfronny/libjf/config/impl/dsl/DslEntryInfo.java index 6130c64..f024b35 100644 --- a/libjf-config-core-v2/src/main/java/io/gitlab/jfronny/libjf/config/impl/dsl/DslEntryInfo.java +++ b/libjf-config-core-v2/src/main/java/io/gitlab/jfronny/libjf/config/impl/dsl/DslEntryInfo.java @@ -185,23 +185,10 @@ public class DslEntryInfo implements EntryInfo { @Override public > void writeTo(Writer writer, String translationPrefix) throws TEx, IllegalAccessException { - serializeOneTo(getValue(), translationPrefix, writer); - } - - @Override - public > void serializeOneTo(T value, String translationPrefix, Writer writer) throws TEx { - String commentText; - if ((commentText = JfConfigSafe.TRANSLATION_SUPPLIER.apply(translationPrefix + getName() + ".tooltip")) != null) { - writer.comment(commentText); - } - if (type.isEnum()) { - writer.comment("Valid: [" + Arrays.stream(((Type.TEnum)type).options()).map(Objects::toString).collect(Collectors.joining(", ")) + "]"); - } - writer.name(name); try { - LibJf.MAPPER.getAdapter((TypeToken) Objects.requireNonNullElse(type.asToken(), TypeToken.get(String.class))).serialize(value, writer); + serializeOneTo(getValue(), translationPrefix, writer); } catch (MalformedDataException e) { - LibJf.LOGGER.error("Could not write " + name, e); + LibJf.LOGGER.error("Could not write " + getName(), e); } }