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;
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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) {
|
||||||
|
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user