Skip to content

Commit

Permalink
Actually allow numeric indices for sides like api doc claims. Fixes #165
Browse files Browse the repository at this point in the history
.
  • Loading branch information
fnuecke committed Jul 24, 2022
1 parent 0f40e53 commit 569288c
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/main/java/li/cil/oc2/common/bus/RPCDeviceBusAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import li.cil.oc2.api.bus.DeviceBusController;
import li.cil.oc2.api.bus.device.Device;
import li.cil.oc2.api.bus.device.rpc.*;
import li.cil.oc2.api.util.Side;
import li.cil.oc2.common.Constants;
import li.cil.oc2.common.bus.device.rpc.RPCDeviceList;
import li.cil.oc2.common.bus.device.rpc.RPCMethodParameterTypeAdapters;
Expand Down Expand Up @@ -67,6 +68,7 @@ public RPCDeviceBusAdapter(final SerialDevice serialDevice, final int maxMessage
.registerTypeAdapter(RPCDeviceWithIdentifier.class, new RPCDeviceWithIdentifierJsonSerializer())
.registerTypeHierarchyAdapter(RPCMethod.class, new RPCMethodJsonSerializer())
.registerTypeAdapter(EmptyMethodGroup.class, new EmptyRPCMethodGroupSerializer())
.registerTypeAdapter(Side.class, new SideJsonDeserializer())
.create();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/* SPDX-License-Identifier: MIT */

package li.cil.oc2.common.serialization.gson;

import com.google.gson.*;
import com.google.gson.internal.bind.TypeAdapters;
import com.google.gson.reflect.TypeToken;
import li.cil.oc2.api.util.Side;

import java.lang.reflect.Type;

public final class SideJsonDeserializer implements JsonDeserializer<Side> {
@Override
public Side deserialize(final JsonElement json, final Type typeOfT, final JsonDeserializationContext context) throws JsonParseException {
if (json.isJsonPrimitive()) {
final JsonPrimitive jsonPrimitive = json.getAsJsonPrimitive();
if (jsonPrimitive.isNumber()) {
return Side.values()[jsonPrimitive.getAsNumber().intValue()];
}
}

return (Side) TypeAdapters.ENUM_FACTORY.create(null, TypeToken.get(typeOfT)).fromJsonTree(json);
}
}

0 comments on commit 569288c

Please sign in to comment.