Skip to content

Commit

Permalink
add method overload
Browse files Browse the repository at this point in the history
  • Loading branch information
ghzdude committed Jan 29, 2025
1 parent 4539cd1 commit 7386716
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 16 deletions.
18 changes: 4 additions & 14 deletions src/main/java/gregtech/api/mui/serialize/DrawableSerializer.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,13 @@

import com.cleanroommc.modularui.api.drawable.IDrawable;
import com.cleanroommc.modularui.api.drawable.IKey;
import com.google.gson.JsonArray;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.google.gson.JsonSerializationContext;

import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;

public class DrawableSerializer implements JsonHandler<IDrawable> {

Expand All @@ -24,11 +22,8 @@ public IDrawable deserialize(JsonElement json, JsonDeserializationContext contex
if (parsed.has("key") && parsed.has("tooltip")) {
IKey key = context.deserialize(parsed.get("key"), IKey.class);

List<IDrawable> list = new ArrayList<>();
for (JsonElement jsonElement : parsed.getAsJsonArray("tooltip")) {
list.add(context.deserialize(jsonElement, IDrawable.class));
}
return HoverableKey.of(key).addLines(list);
IDrawable[] list = deserializeArray(parsed.getAsJsonArray("tooltip"), context, IDrawable[]::new);
return HoverableKey.of(key).addLines(Arrays.asList(list));
} else {
return context.deserialize(parsed, IKey.class);
}
Expand All @@ -40,12 +35,7 @@ public JsonElement serialize(IDrawable src, JsonSerializationContext context) {
JsonObject object = new JsonObject();
if (src instanceof HoverableKey hoverable) {
object.add("key", context.serialize(hoverable.getKey(), IKey.class));
JsonArray array = new JsonArray();
for (IDrawable tooltipLine : hoverable.getTooltipLines()) {
array.add(context.serialize(tooltipLine, IDrawable.class));
}
object.add("tooltip", array);
return object;
object.add("tooltip", serializeArray(hoverable.getTooltipLines(), context));
}
return object;
}
Expand Down
7 changes: 5 additions & 2 deletions src/main/java/gregtech/api/mui/serialize/JsonHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import org.apache.commons.lang3.ArrayUtils;

import java.lang.reflect.Type;
import java.util.Arrays;
Expand All @@ -34,8 +33,12 @@ default T deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext
T deserialize(JsonElement json, JsonDeserializationContext context) throws JsonParseException;

default <R> JsonArray serializeArray(R[] objects, JsonSerializationContext context) {
return serializeArray(Arrays.asList(objects), context);
}

default <R> JsonArray serializeArray(Iterable<R> objects, JsonSerializationContext context) {
JsonArray array = new JsonArray();
if (ArrayUtils.isEmpty(objects)) return array;
if (objects == null) return array;
Type arrayType = objects.getClass().getComponentType();
for (R t : objects) {
JsonElement element = context.serialize(t, arrayType);
Expand Down

0 comments on commit 7386716

Please sign in to comment.