From f7b1f94a4f29b03f6af43867799589636b7d9473 Mon Sep 17 00:00:00 2001 From: Jonah Bauer Date: Mon, 15 Nov 2021 18:29:25 +0100 Subject: [PATCH] added parse method to messages --- .../wizard/common/messages/client/ClientMessage.java | 7 ++++++- .../wizard/common/messages/observer/ObserverMessage.java | 7 ++++++- .../wizard/common/messages/player/PlayerMessage.java | 7 ++++++- .../wizard/common/messages/server/ServerMessage.java | 7 ++++++- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/wizard-common/src/main/java/eu/jonahbauer/wizard/common/messages/client/ClientMessage.java b/wizard-common/src/main/java/eu/jonahbauer/wizard/common/messages/client/ClientMessage.java index ea8c352..b11da20 100644 --- a/wizard-common/src/main/java/eu/jonahbauer/wizard/common/messages/client/ClientMessage.java +++ b/wizard-common/src/main/java/eu/jonahbauer/wizard/common/messages/client/ClientMessage.java @@ -2,17 +2,22 @@ package eu.jonahbauer.wizard.common.messages.client; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.google.gson.JsonParseException; import eu.jonahbauer.wizard.common.messages.observer.ObserverMessage; import eu.jonahbauer.wizard.common.util.SealedClassTypeAdapterFactory; import lombok.EqualsAndHashCode; @EqualsAndHashCode public abstract sealed class ClientMessage permits CreateSessionMessage, InteractionMessage, JoinSessionMessage, LeaveSessionMessage, ReadyMessage, RejoinMessage { - public static final Gson GSON = new GsonBuilder() + private static final Gson GSON = new GsonBuilder() .registerTypeAdapterFactory(SealedClassTypeAdapterFactory.of(ClientMessage.class, "Message")) .registerTypeAdapterFactory(SealedClassTypeAdapterFactory.of(ObserverMessage.class, "Message")) .create(); + public static ClientMessage parse(String json) throws JsonParseException { + return GSON.fromJson(json, ClientMessage.class); + } + @Override public String toString() { return GSON.toJson(this, ClientMessage.class); diff --git a/wizard-common/src/main/java/eu/jonahbauer/wizard/common/messages/observer/ObserverMessage.java b/wizard-common/src/main/java/eu/jonahbauer/wizard/common/messages/observer/ObserverMessage.java index 7d656a2..3f95694 100644 --- a/wizard-common/src/main/java/eu/jonahbauer/wizard/common/messages/observer/ObserverMessage.java +++ b/wizard-common/src/main/java/eu/jonahbauer/wizard/common/messages/observer/ObserverMessage.java @@ -2,15 +2,20 @@ package eu.jonahbauer.wizard.common.messages.observer; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.google.gson.JsonParseException; import eu.jonahbauer.wizard.common.util.SealedClassTypeAdapterFactory; import lombok.EqualsAndHashCode; @EqualsAndHashCode public abstract sealed class ObserverMessage permits CardMessage, HandMessage, PredictionMessage, ScoreMessage, StateMessage, TrickMessage, TrumpMessage, UserInputMessage { - public static final Gson GSON = new GsonBuilder() + private static final Gson GSON = new GsonBuilder() .registerTypeAdapterFactory(SealedClassTypeAdapterFactory.of(ObserverMessage.class, "Message")) .create(); + public static ObserverMessage parse(String json) throws JsonParseException { + return GSON.fromJson(json, ObserverMessage.class); + } + @Override public String toString() { return GSON.toJson(this, ObserverMessage.class); diff --git a/wizard-common/src/main/java/eu/jonahbauer/wizard/common/messages/player/PlayerMessage.java b/wizard-common/src/main/java/eu/jonahbauer/wizard/common/messages/player/PlayerMessage.java index 47ba4bc..3067a4e 100644 --- a/wizard-common/src/main/java/eu/jonahbauer/wizard/common/messages/player/PlayerMessage.java +++ b/wizard-common/src/main/java/eu/jonahbauer/wizard/common/messages/player/PlayerMessage.java @@ -2,15 +2,20 @@ package eu.jonahbauer.wizard.common.messages.player; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.google.gson.JsonParseException; import eu.jonahbauer.wizard.common.util.SealedClassTypeAdapterFactory; import lombok.EqualsAndHashCode; @EqualsAndHashCode public abstract sealed class PlayerMessage permits JuggleMessage, PickTrumpMessage, PlayCardMessage, PredictMessage { - public static final Gson GSON = new GsonBuilder() + private static final Gson GSON = new GsonBuilder() .registerTypeAdapterFactory(SealedClassTypeAdapterFactory.of(PlayerMessage.class, "Message")) .create(); + public static PlayerMessage parse(String json) throws JsonParseException { + return GSON.fromJson(json, PlayerMessage.class); + } + @Override public String toString() { return GSON.toJson(this); diff --git a/wizard-common/src/main/java/eu/jonahbauer/wizard/common/messages/server/ServerMessage.java b/wizard-common/src/main/java/eu/jonahbauer/wizard/common/messages/server/ServerMessage.java index d38f53a..54846e4 100644 --- a/wizard-common/src/main/java/eu/jonahbauer/wizard/common/messages/server/ServerMessage.java +++ b/wizard-common/src/main/java/eu/jonahbauer/wizard/common/messages/server/ServerMessage.java @@ -2,17 +2,22 @@ package eu.jonahbauer.wizard.common.messages.server; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.google.gson.JsonParseException; import eu.jonahbauer.wizard.common.messages.observer.ObserverMessage; import eu.jonahbauer.wizard.common.util.SealedClassTypeAdapterFactory; import lombok.EqualsAndHashCode; @EqualsAndHashCode public abstract sealed class ServerMessage permits AckMessage, GameMessage, KickVotedMessage, KickedMessage, NackMessage, PlayerLeftMessage, PlayerModifiedMessage, SessionJoinedMessage, SessionListMessage, SessionModifiedMessage, SessionRemovedMessage, StartingGameMessage { - public static final Gson GSON = new GsonBuilder() + private static final Gson GSON = new GsonBuilder() .registerTypeAdapterFactory(SealedClassTypeAdapterFactory.of(ServerMessage.class, "Message")) .registerTypeAdapterFactory(SealedClassTypeAdapterFactory.of(ObserverMessage.class, "Message")) .create(); + public static ServerMessage parse(String json) throws JsonParseException { + return GSON.fromJson(json, ServerMessage.class); + } + @Override public String toString() { return GSON.toJson(this, ServerMessage.class);