From 4d7af2e68be979fdb74bdbd4b1421abc2bbaa52c Mon Sep 17 00:00:00 2001 From: yushijinhun Date: Sun, 2 Dec 2018 14:54:58 +0800 Subject: [PATCH] Fix #492 Related: 4d7318737681160c1cd80385ac88bdb111f86f18 --- .../java/org/jackhuang/hmcl/game/Argument.java | 15 ++------------- .../org/jackhuang/hmcl/game/StringArgument.java | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/Argument.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/Argument.java index e0001ed96..c241ffec6 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/Argument.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/Argument.java @@ -30,7 +30,7 @@ import java.util.Map; * * @author huangyuhui */ -@JsonAdapter(Argument.Serializer.class) +@JsonAdapter(Argument.Deserializer.class) @Immutable public interface Argument extends Cloneable { @@ -43,7 +43,7 @@ public interface Argument extends Cloneable { */ List toString(Map keys, Map features); - class Serializer implements JsonDeserializer, JsonSerializer { + class Deserializer implements JsonDeserializer { @Override public Argument deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { if (json.isJsonPrimitive()) @@ -51,16 +51,5 @@ public interface Argument extends Cloneable { else return context.deserialize(json, RuledArgument.class); } - - @Override - public JsonElement serialize(Argument src, Type typeOfSrc, JsonSerializationContext context) { - if (src instanceof StringArgument) - return new JsonPrimitive(((StringArgument) src).getArgument()); - else if (src instanceof RuledArgument) - return context.serialize(src, RuledArgument.class); - else - throw new AssertionError("Unrecognized argument type: " + src); - } - } } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/StringArgument.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/StringArgument.java index f57d24524..788379b4d 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/StringArgument.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/StringArgument.java @@ -19,6 +19,13 @@ package org.jackhuang.hmcl.game; import org.jackhuang.hmcl.util.Immutable; +import com.google.gson.JsonElement; +import com.google.gson.JsonPrimitive; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; +import com.google.gson.annotations.JsonAdapter; + +import java.lang.reflect.Type; import java.util.Collections; import java.util.List; import java.util.Map; @@ -29,6 +36,7 @@ import java.util.regex.Pattern; * * @author huangyuhui */ +@JsonAdapter(StringArgument.Serializer.class) @Immutable public final class StringArgument implements Argument { @@ -58,4 +66,11 @@ public final class StringArgument implements Argument { public String toString() { return argument; } + + public class Serializer implements JsonSerializer { + @Override + public JsonElement serialize(StringArgument src, Type typeOfSrc, JsonSerializationContext context) { + return new JsonPrimitive(src.getArgument()); + } + } }