From 17fa7af792786fb9ed5d6ba509931fc05d62f03f Mon Sep 17 00:00:00 2001 From: Magnus Ulf Date: Sat, 16 May 2015 22:58:46 +0200 Subject: [PATCH] Proper JsonPrimitive cloning --- src/com/massivecraft/massivecore/store/GsonCloner.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/com/massivecraft/massivecore/store/GsonCloner.java b/src/com/massivecraft/massivecore/store/GsonCloner.java index de4bb8b8..7791cc16 100644 --- a/src/com/massivecraft/massivecore/store/GsonCloner.java +++ b/src/com/massivecraft/massivecore/store/GsonCloner.java @@ -7,6 +7,7 @@ import com.massivecraft.massivecore.xlib.gson.JsonArray; import com.massivecraft.massivecore.xlib.gson.JsonElement; import com.massivecraft.massivecore.xlib.gson.JsonNull; import com.massivecraft.massivecore.xlib.gson.JsonObject; +import com.massivecraft.massivecore.xlib.gson.JsonPrimitive; public class GsonCloner { @@ -21,9 +22,12 @@ public class GsonCloner // JsonPrimitive if (element.isJsonPrimitive()) { - // TODO: This is actually not safe since JsonPrimitive is mutable. - // However there is no easy way to clone a JsonPrimitive and I thought they were mutable anyways. - return element; + JsonPrimitive primitive = element.getAsJsonPrimitive(); + if (primitive.isBoolean()) return new JsonPrimitive(primitive.getAsBoolean()); + if (primitive.isString()) return new JsonPrimitive(primitive.getAsString()); + if (primitive.isNumber()) return new JsonPrimitive(primitive.getAsNumber()); + + throw new UnsupportedOperationException("The json primitive: " + primitive + " was not a boolean, number or string"); } // JsonObject