fix: consistently use SerializationMode
This commit is contained in:
parent
cb1821853b
commit
f88996e8f3
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user