diff --git a/src/main/java/li/cil/oc2/common/Main.java b/src/main/java/li/cil/oc2/common/Main.java index 0b79ebd4..3dfb4c60 100644 --- a/src/main/java/li/cil/oc2/common/Main.java +++ b/src/main/java/li/cil/oc2/common/Main.java @@ -14,7 +14,7 @@ import li.cil.oc2.common.container.Containers; import li.cil.oc2.common.entity.Entities; import li.cil.oc2.common.item.Items; import li.cil.oc2.common.item.crafting.RecipeSerializers; -import li.cil.oc2.common.serialization.serializers.Serializers; +import li.cil.oc2.common.serialization.ceres.Serializers; import li.cil.oc2.common.tags.BlockTags; import li.cil.oc2.common.tags.ItemTags; import li.cil.oc2.common.util.RegistryUtils; diff --git a/src/main/java/li/cil/oc2/common/bus/RPCDeviceBusAdapter.java b/src/main/java/li/cil/oc2/common/bus/RPCDeviceBusAdapter.java index 143cb17c..72cc3eb0 100644 --- a/src/main/java/li/cil/oc2/common/bus/RPCDeviceBusAdapter.java +++ b/src/main/java/li/cil/oc2/common/bus/RPCDeviceBusAdapter.java @@ -11,7 +11,7 @@ import li.cil.oc2.api.bus.device.rpc.RPCParameter; import li.cil.oc2.common.Constants; import li.cil.oc2.common.bus.device.rpc.RPCDeviceList; import li.cil.oc2.common.bus.device.rpc.RPCMethodParameterTypeAdapters; -import li.cil.oc2.common.serialization.serializers.*; +import li.cil.oc2.common.serialization.gson.*; import li.cil.sedna.api.device.Steppable; import li.cil.sedna.api.device.serial.SerialDevice; diff --git a/src/main/java/li/cil/oc2/common/bus/device/rpc/RPCMethodParameterTypeAdapters.java b/src/main/java/li/cil/oc2/common/bus/device/rpc/RPCMethodParameterTypeAdapters.java index 196909b4..a40632d5 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/rpc/RPCMethodParameterTypeAdapters.java +++ b/src/main/java/li/cil/oc2/common/bus/device/rpc/RPCMethodParameterTypeAdapters.java @@ -2,8 +2,8 @@ package li.cil.oc2.common.bus.device.rpc; import com.google.gson.GsonBuilder; import li.cil.oc2.api.imc.RPCMethodParameterTypeAdapter; -import li.cil.oc2.common.serialization.serializers.DirectionJsonSerializer; -import li.cil.oc2.common.serialization.serializers.ItemStackJsonSerializer; +import li.cil.oc2.common.serialization.gson.DirectionJsonSerializer; +import li.cil.oc2.common.serialization.gson.ItemStackJsonSerializer; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/li/cil/oc2/common/serialization/serializers/JsonArraySerializer.java b/src/main/java/li/cil/oc2/common/serialization/ceres/JsonArraySerializer.java similarity index 96% rename from src/main/java/li/cil/oc2/common/serialization/serializers/JsonArraySerializer.java rename to src/main/java/li/cil/oc2/common/serialization/ceres/JsonArraySerializer.java index fea2f788..dc18ef86 100644 --- a/src/main/java/li/cil/oc2/common/serialization/serializers/JsonArraySerializer.java +++ b/src/main/java/li/cil/oc2/common/serialization/ceres/JsonArraySerializer.java @@ -1,4 +1,4 @@ -package li.cil.oc2.common.serialization.serializers; +package li.cil.oc2.common.serialization.ceres; import com.google.gson.JsonArray; import com.google.gson.JsonParser; diff --git a/src/main/java/li/cil/oc2/common/serialization/serializers/MemoryRangeListSerializer.java b/src/main/java/li/cil/oc2/common/serialization/ceres/MemoryRangeListSerializer.java similarity index 96% rename from src/main/java/li/cil/oc2/common/serialization/serializers/MemoryRangeListSerializer.java rename to src/main/java/li/cil/oc2/common/serialization/ceres/MemoryRangeListSerializer.java index 50cd0f33..377c6cc4 100644 --- a/src/main/java/li/cil/oc2/common/serialization/serializers/MemoryRangeListSerializer.java +++ b/src/main/java/li/cil/oc2/common/serialization/ceres/MemoryRangeListSerializer.java @@ -1,4 +1,4 @@ -package li.cil.oc2.common.serialization.serializers; +package li.cil.oc2.common.serialization.ceres; import li.cil.ceres.api.DeserializationVisitor; import li.cil.ceres.api.SerializationException; diff --git a/src/main/java/li/cil/oc2/common/serialization/serializers/MemoryRangeSerializer.java b/src/main/java/li/cil/oc2/common/serialization/ceres/MemoryRangeSerializer.java similarity index 94% rename from src/main/java/li/cil/oc2/common/serialization/serializers/MemoryRangeSerializer.java rename to src/main/java/li/cil/oc2/common/serialization/ceres/MemoryRangeSerializer.java index 9b16db65..c41cdee8 100644 --- a/src/main/java/li/cil/oc2/common/serialization/serializers/MemoryRangeSerializer.java +++ b/src/main/java/li/cil/oc2/common/serialization/ceres/MemoryRangeSerializer.java @@ -1,4 +1,4 @@ -package li.cil.oc2.common.serialization.serializers; +package li.cil.oc2.common.serialization.ceres; import li.cil.ceres.api.DeserializationVisitor; import li.cil.ceres.api.SerializationException; @@ -16,6 +16,7 @@ public final class MemoryRangeSerializer implements Serializer { visitor.putLong("end", range.end); } + @Nullable @Override public MemoryRange deserialize(final DeserializationVisitor visitor, final Class type, @Nullable final Object value) throws SerializationException { if (!visitor.exists("start") || !visitor.exists("end")) { diff --git a/src/main/java/li/cil/oc2/common/serialization/serializers/Serializers.java b/src/main/java/li/cil/oc2/common/serialization/ceres/Serializers.java similarity index 93% rename from src/main/java/li/cil/oc2/common/serialization/serializers/Serializers.java rename to src/main/java/li/cil/oc2/common/serialization/ceres/Serializers.java index 17e2640f..d98be93e 100644 --- a/src/main/java/li/cil/oc2/common/serialization/serializers/Serializers.java +++ b/src/main/java/li/cil/oc2/common/serialization/ceres/Serializers.java @@ -1,4 +1,4 @@ -package li.cil.oc2.common.serialization.serializers; +package li.cil.oc2.common.serialization.ceres; import com.google.gson.JsonArray; import li.cil.ceres.Ceres; diff --git a/src/main/java/li/cil/oc2/common/serialization/serializers/TextComponentSerializer.java b/src/main/java/li/cil/oc2/common/serialization/ceres/TextComponentSerializer.java similarity index 89% rename from src/main/java/li/cil/oc2/common/serialization/serializers/TextComponentSerializer.java rename to src/main/java/li/cil/oc2/common/serialization/ceres/TextComponentSerializer.java index 16588d1d..50a2ee53 100644 --- a/src/main/java/li/cil/oc2/common/serialization/serializers/TextComponentSerializer.java +++ b/src/main/java/li/cil/oc2/common/serialization/ceres/TextComponentSerializer.java @@ -1,4 +1,4 @@ -package li.cil.oc2.common.serialization.serializers; +package li.cil.oc2.common.serialization.ceres; import li.cil.ceres.api.DeserializationVisitor; import li.cil.ceres.api.SerializationException; @@ -23,6 +23,10 @@ public final class TextComponentSerializer implements Serializer { } final String json = (String) visitor.getObject("value", String.class, null); + if (json == null) { + return (Component) value; + } + return Component.Serializer.fromJson(json); } } diff --git a/src/main/java/li/cil/oc2/common/serialization/serializers/package-info.java b/src/main/java/li/cil/oc2/common/serialization/ceres/package-info.java similarity index 76% rename from src/main/java/li/cil/oc2/common/serialization/serializers/package-info.java rename to src/main/java/li/cil/oc2/common/serialization/ceres/package-info.java index fcfbcc15..fdbe0f2f 100644 --- a/src/main/java/li/cil/oc2/common/serialization/serializers/package-info.java +++ b/src/main/java/li/cil/oc2/common/serialization/ceres/package-info.java @@ -1,6 +1,6 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -package li.cil.oc2.common.serialization.serializers; +package li.cil.oc2.common.serialization.ceres; import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/src/main/java/li/cil/oc2/common/serialization/serializers/DirectionJsonSerializer.java b/src/main/java/li/cil/oc2/common/serialization/gson/DirectionJsonSerializer.java similarity index 84% rename from src/main/java/li/cil/oc2/common/serialization/serializers/DirectionJsonSerializer.java rename to src/main/java/li/cil/oc2/common/serialization/gson/DirectionJsonSerializer.java index 3ca041fc..e1809e69 100644 --- a/src/main/java/li/cil/oc2/common/serialization/serializers/DirectionJsonSerializer.java +++ b/src/main/java/li/cil/oc2/common/serialization/gson/DirectionJsonSerializer.java @@ -1,4 +1,4 @@ -package li.cil.oc2.common.serialization.serializers; +package li.cil.oc2.common.serialization.gson; import com.google.gson.*; import net.minecraft.core.Direction; @@ -32,10 +32,6 @@ public final class DirectionJsonSerializer implements JsonDeserializer { @Override public JsonElement serialize(final ItemStack src, final Type typeOfSrc, final JsonSerializationContext context) { - if (src == null || src.isEmpty()) { + if (src.isEmpty()) { return JsonNull.INSTANCE; } diff --git a/src/main/java/li/cil/oc2/common/serialization/serializers/MessageJsonDeserializer.java b/src/main/java/li/cil/oc2/common/serialization/gson/MessageJsonDeserializer.java similarity index 95% rename from src/main/java/li/cil/oc2/common/serialization/serializers/MessageJsonDeserializer.java rename to src/main/java/li/cil/oc2/common/serialization/gson/MessageJsonDeserializer.java index f91bdf36..c7458627 100644 --- a/src/main/java/li/cil/oc2/common/serialization/serializers/MessageJsonDeserializer.java +++ b/src/main/java/li/cil/oc2/common/serialization/gson/MessageJsonDeserializer.java @@ -1,4 +1,4 @@ -package li.cil.oc2.common.serialization.serializers; +package li.cil.oc2.common.serialization.gson; import com.google.gson.*; import li.cil.oc2.common.bus.RPCDeviceBusAdapter; diff --git a/src/main/java/li/cil/oc2/common/serialization/serializers/MethodInvocationJsonDeserializer.java b/src/main/java/li/cil/oc2/common/serialization/gson/MethodInvocationJsonDeserializer.java similarity index 94% rename from src/main/java/li/cil/oc2/common/serialization/serializers/MethodInvocationJsonDeserializer.java rename to src/main/java/li/cil/oc2/common/serialization/gson/MethodInvocationJsonDeserializer.java index 0d3d70f7..a8c964ad 100644 --- a/src/main/java/li/cil/oc2/common/serialization/serializers/MethodInvocationJsonDeserializer.java +++ b/src/main/java/li/cil/oc2/common/serialization/gson/MethodInvocationJsonDeserializer.java @@ -1,4 +1,4 @@ -package li.cil.oc2.common.serialization.serializers; +package li.cil.oc2.common.serialization.gson; import com.google.gson.*; import li.cil.oc2.common.bus.RPCDeviceBusAdapter; diff --git a/src/main/java/li/cil/oc2/common/serialization/serializers/RPCDeviceWithIdentifierJsonSerializer.java b/src/main/java/li/cil/oc2/common/serialization/gson/RPCDeviceWithIdentifierJsonSerializer.java similarity index 71% rename from src/main/java/li/cil/oc2/common/serialization/serializers/RPCDeviceWithIdentifierJsonSerializer.java rename to src/main/java/li/cil/oc2/common/serialization/gson/RPCDeviceWithIdentifierJsonSerializer.java index 97afc7ba..5aa816db 100644 --- a/src/main/java/li/cil/oc2/common/serialization/serializers/RPCDeviceWithIdentifierJsonSerializer.java +++ b/src/main/java/li/cil/oc2/common/serialization/gson/RPCDeviceWithIdentifierJsonSerializer.java @@ -1,6 +1,9 @@ -package li.cil.oc2.common.serialization.serializers; +package li.cil.oc2.common.serialization.gson; -import com.google.gson.*; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; import li.cil.oc2.common.bus.RPCDeviceBusAdapter; import java.lang.reflect.Type; @@ -8,13 +11,9 @@ import java.lang.reflect.Type; public final class RPCDeviceWithIdentifierJsonSerializer implements JsonSerializer { @Override public JsonElement serialize(final RPCDeviceBusAdapter.RPCDeviceWithIdentifier src, final Type typeOfSrc, final JsonSerializationContext context) { - if (src == null) { - return JsonNull.INSTANCE; - } - final JsonObject deviceJson = new JsonObject(); - deviceJson.add("deviceId", context.serialize(src.identifier)); - deviceJson.add("typeNames", context.serialize(src.device.getTypeNames())); + deviceJson.add("deviceId", context.serialize(src.identifier())); + deviceJson.add("typeNames", context.serialize(src.device().getTypeNames())); return deviceJson; } diff --git a/src/main/java/li/cil/oc2/common/serialization/serializers/RPCMethodJsonSerializer.java b/src/main/java/li/cil/oc2/common/serialization/gson/RPCMethodJsonSerializer.java similarity index 91% rename from src/main/java/li/cil/oc2/common/serialization/serializers/RPCMethodJsonSerializer.java rename to src/main/java/li/cil/oc2/common/serialization/gson/RPCMethodJsonSerializer.java index c6d521f8..5daa8bc5 100644 --- a/src/main/java/li/cil/oc2/common/serialization/serializers/RPCMethodJsonSerializer.java +++ b/src/main/java/li/cil/oc2/common/serialization/gson/RPCMethodJsonSerializer.java @@ -1,4 +1,4 @@ -package li.cil.oc2.common.serialization.serializers; +package li.cil.oc2.common.serialization.gson; import com.google.gson.*; import li.cil.oc2.api.bus.device.rpc.RPCMethod; @@ -9,10 +9,6 @@ import java.lang.reflect.Type; public final class RPCMethodJsonSerializer implements JsonSerializer { @Override public JsonElement serialize(final RPCMethod method, final Type typeOfMethod, final JsonSerializationContext context) { - if (method == null) { - return JsonNull.INSTANCE; - } - final JsonObject methodJson = new JsonObject(); methodJson.addProperty("name", method.getName()); methodJson.addProperty("returnType", method.getReturnType().getSimpleName()); diff --git a/src/main/java/li/cil/oc2/common/serialization/serializers/UnsignedByteArrayJsonSerializer.java b/src/main/java/li/cil/oc2/common/serialization/gson/UnsignedByteArrayJsonSerializer.java similarity index 66% rename from src/main/java/li/cil/oc2/common/serialization/serializers/UnsignedByteArrayJsonSerializer.java rename to src/main/java/li/cil/oc2/common/serialization/gson/UnsignedByteArrayJsonSerializer.java index b102f4b2..a11f1272 100644 --- a/src/main/java/li/cil/oc2/common/serialization/serializers/UnsignedByteArrayJsonSerializer.java +++ b/src/main/java/li/cil/oc2/common/serialization/gson/UnsignedByteArrayJsonSerializer.java @@ -1,16 +1,15 @@ -package li.cil.oc2.common.serialization.serializers; +package li.cil.oc2.common.serialization.gson; -import com.google.gson.*; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; import java.lang.reflect.Type; public final class UnsignedByteArrayJsonSerializer implements JsonSerializer { @Override public JsonElement serialize(final byte[] src, final Type typeOfSrc, final JsonSerializationContext context) { - if (src == null) { - return JsonNull.INSTANCE; - } - final JsonArray json = new JsonArray(); for (final byte b : src) { json.add(b & 0xFF); diff --git a/src/main/java/li/cil/oc2/common/serialization/gson/package-info.java b/src/main/java/li/cil/oc2/common/serialization/gson/package-info.java new file mode 100644 index 00000000..f287bc7a --- /dev/null +++ b/src/main/java/li/cil/oc2/common/serialization/gson/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package li.cil.oc2.common.serialization.gson; + +import net.minecraft.MethodsReturnNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault;