fix: consistently use SerializationMode
All checks were successful
ci/woodpecker/push/docs Pipeline was successful
ci/woodpecker/push/jfmod Pipeline was successful

This commit is contained in:
Johannes Frohnmeyer 2024-04-19 07:43:09 +02:00
parent cb1821853b
commit f88996e8f3
Signed by: Johannes
GPG Key ID: E76429612C2929F4
3 changed files with 26 additions and 5 deletions

View File

@ -5,12 +5,13 @@ import io.gitlab.jfronny.commons.serialize.SerializeWriter;
import io.gitlab.jfronny.commons.serialize.json.JsonWriter; import io.gitlab.jfronny.commons.serialize.json.JsonWriter;
public class SerializationMode { public class SerializationMode {
public static <TEx extends Exception, Reader extends SerializeReader<TEx, Reader>> void asConfig(Reader reader) { public static <TEx extends Exception, Reader extends SerializeReader<TEx, Reader>> Reader asConfig(Reader reader) {
reader.setLenient(true) reader.setLenient(true)
.setSerializeSpecialFloatingPointValues(true); .setSerializeSpecialFloatingPointValues(true);
return reader;
} }
public static <TEx extends Exception, Writer extends SerializeWriter<TEx, Writer>> void asConfig(Writer writer) { public static <TEx extends Exception, Writer extends SerializeWriter<TEx, Writer>> Writer asConfig(Writer writer) {
writer.setLenient(true) writer.setLenient(true)
.setSerializeSpecialFloatingPointValues(true) .setSerializeSpecialFloatingPointValues(true)
.setSerializeNulls(true); .setSerializeNulls(true);
@ -20,5 +21,6 @@ public class SerializationMode {
.setOmitQuotes(true) .setOmitQuotes(true)
.setCommentUnexpectedNames(true); .setCommentUnexpectedNames(true);
} }
return writer;
} }
} }

View File

@ -1,12 +1,16 @@
package io.gitlab.jfronny.libjf.config.impl.ui.tiny; package io.gitlab.jfronny.libjf.config.impl.ui.tiny;
import io.gitlab.jfronny.commons.Serializer; import io.gitlab.jfronny.commons.Serializer;
import io.gitlab.jfronny.commons.serialize.Transport;
import io.gitlab.jfronny.commons.serialize.databind.api.TypeToken;
import io.gitlab.jfronny.commons.serialize.json.JsonReader;
import io.gitlab.jfronny.libjf.LibJf; import io.gitlab.jfronny.libjf.LibJf;
import io.gitlab.jfronny.libjf.config.api.v2.ConfigInstance; import io.gitlab.jfronny.libjf.config.api.v2.ConfigInstance;
import io.gitlab.jfronny.libjf.config.api.v2.EntryInfo; import io.gitlab.jfronny.libjf.config.api.v2.EntryInfo;
import io.gitlab.jfronny.libjf.config.api.v2.dsl.CategoryBuilder; import io.gitlab.jfronny.libjf.config.api.v2.dsl.CategoryBuilder;
import io.gitlab.jfronny.libjf.config.api.v2.type.Type; import io.gitlab.jfronny.libjf.config.api.v2.type.Type;
import io.gitlab.jfronny.libjf.config.api.v2.ui.ConfigScreenFactory; import io.gitlab.jfronny.libjf.config.api.v2.ui.ConfigScreenFactory;
import io.gitlab.jfronny.libjf.serialize.SerializationMode;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.resource.language.I18n; import net.minecraft.client.resource.language.I18n;
@ -29,7 +33,7 @@ public class TinyConfigScreenFactory implements ConfigScreenFactory<Screen, Tiny
final String jsonified; final String jsonified;
try { try {
var value = entry.getValue(); var value = entry.getValue();
jsonified = LibJf.JSON_TRANSPORT.write(writer -> LibJf.MAPPER.serialize(value, writer)); jsonified = LibJf.JSON_TRANSPORT.write(writer -> LibJf.MAPPER.serialize(value, SerializationMode.asConfig(writer)));
} catch (IllegalAccessException | IOException e) { } catch (IllegalAccessException | IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@ -41,6 +45,11 @@ public class TinyConfigScreenFactory implements ConfigScreenFactory<Screen, Tiny
jsonified, jsonified,
json -> { json -> {
try { try {
entry.setValue(LibJf.JSON_TRANSPORT.read(
json,
(Transport.Returnable<JsonReader, ? extends Object, IOException>) reader -> LibJf.MAPPER
.getAdapter(TypeToken.get(type.asClass()))
.deserialize(SerializationMode.asConfig(reader))));
entry.setValue(Serializer.getInstance().deserialize(json, type.asClass())); entry.setValue(Serializer.getInstance().deserialize(json, type.asClass()));
config.write(); config.write();
} catch (Throwable e) { } catch (Throwable e) {

View File

@ -2,13 +2,18 @@ package io.gitlab.jfronny.libjf.config.impl.ui.tiny.entry;
import io.gitlab.jfronny.commons.Serializer; import io.gitlab.jfronny.commons.Serializer;
import io.gitlab.jfronny.commons.ref.R; import io.gitlab.jfronny.commons.ref.R;
import io.gitlab.jfronny.commons.serialize.Transport;
import io.gitlab.jfronny.commons.serialize.databind.api.TypeToken;
import io.gitlab.jfronny.commons.serialize.json.JsonReader;
import io.gitlab.jfronny.commons.throwable.Try; import io.gitlab.jfronny.commons.throwable.Try;
import io.gitlab.jfronny.libjf.LibJf; import io.gitlab.jfronny.libjf.LibJf;
import io.gitlab.jfronny.libjf.config.api.v2.ConfigCategory; import io.gitlab.jfronny.libjf.config.api.v2.ConfigCategory;
import io.gitlab.jfronny.libjf.config.api.v2.EntryInfo; import io.gitlab.jfronny.libjf.config.api.v2.EntryInfo;
import io.gitlab.jfronny.libjf.config.api.v2.JfConfig;
import io.gitlab.jfronny.libjf.config.api.v2.type.Type; import io.gitlab.jfronny.libjf.config.api.v2.type.Type;
import io.gitlab.jfronny.libjf.config.impl.ConfigCore; import io.gitlab.jfronny.libjf.config.impl.ConfigCore;
import io.gitlab.jfronny.libjf.config.impl.ui.tiny.EditorScreen; import io.gitlab.jfronny.libjf.config.impl.ui.tiny.EditorScreen;
import io.gitlab.jfronny.libjf.serialize.SerializationMode;
import net.fabricmc.api.EnvType; import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment; import net.fabricmc.api.Environment;
import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.gui.widget.ButtonWidget;
@ -19,6 +24,7 @@ import net.minecraft.text.Text;
import net.minecraft.util.Formatting; import net.minecraft.util.Formatting;
import net.minecraft.util.Language; import net.minecraft.util.Language;
import java.io.IOException;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.function.Function; import java.util.function.Function;
@ -171,7 +177,7 @@ public class EntryInfoWidgetBuilder {
final String jsonified; final String jsonified;
if (state.tempValue == null) { if (state.tempValue == null) {
try { try {
jsonified = Serializer.getInstance().serialize(state.cachedValue); jsonified = LibJf.JSON_TRANSPORT.write(writer -> LibJf.MAPPER.serialize(state.cachedValue, SerializationMode.asConfig(writer)));
} catch (Throwable e) { } catch (Throwable e) {
LibJf.LOGGER.error("Could not stringify element", e); LibJf.LOGGER.error("Could not stringify element", e);
SystemToast.add( SystemToast.add(
@ -193,7 +199,11 @@ public class EntryInfoWidgetBuilder {
jsonified, jsonified,
json -> { json -> {
try { try {
state.updateCache(Serializer.getInstance().deserialize(json, info.getValueType().asClass())); state.updateCache(LibJf.JSON_TRANSPORT.read(
json,
(Transport.Returnable<JsonReader, ? extends T, IOException>) reader -> LibJf.MAPPER
.getAdapter((TypeToken<T>) TypeToken.get(info.getValueType().asClass()))
.deserialize(SerializationMode.asConfig(reader))));
state.tempValue = null; state.tempValue = null;
} catch (Throwable e) { } catch (Throwable e) {
LibJf.LOGGER.error("Could not write element", e); LibJf.LOGGER.error("Could not write element", e);