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;
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)
.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)
.setSerializeSpecialFloatingPointValues(true)
.setSerializeNulls(true);
@ -20,5 +21,6 @@ public class SerializationMode {
.setOmitQuotes(true)
.setCommentUnexpectedNames(true);
}
return writer;
}
}

View File

@ -1,12 +1,16 @@
package io.gitlab.jfronny.libjf.config.impl.ui.tiny;
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.config.api.v2.ConfigInstance;
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.type.Type;
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.gui.screen.Screen;
import net.minecraft.client.resource.language.I18n;
@ -29,7 +33,7 @@ public class TinyConfigScreenFactory implements ConfigScreenFactory<Screen, Tiny
final String jsonified;
try {
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) {
throw new RuntimeException(e);
}
@ -41,6 +45,11 @@ public class TinyConfigScreenFactory implements ConfigScreenFactory<Screen, Tiny
jsonified,
json -> {
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()));
config.write();
} 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.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.libjf.LibJf;
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.JfConfig;
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.ui.tiny.EditorScreen;
import io.gitlab.jfronny.libjf.serialize.SerializationMode;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
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.Language;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import java.util.function.Function;
@ -171,7 +177,7 @@ public class EntryInfoWidgetBuilder {
final String jsonified;
if (state.tempValue == null) {
try {
jsonified = Serializer.getInstance().serialize(state.cachedValue);
jsonified = LibJf.JSON_TRANSPORT.write(writer -> LibJf.MAPPER.serialize(state.cachedValue, SerializationMode.asConfig(writer)));
} catch (Throwable e) {
LibJf.LOGGER.error("Could not stringify element", e);
SystemToast.add(
@ -193,7 +199,11 @@ public class EntryInfoWidgetBuilder {
jsonified,
json -> {
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;
} catch (Throwable e) {
LibJf.LOGGER.error("Could not write element", e);