package ca.ualberta.cs.cmput301f14t14.questionapp.model.serializer; import java.lang.reflect.Type; import java.util.Date; import java.util.UUID; import ca.ualberta.cs.cmput301f14t14.questionapp.data.ICommentable; import ca.ualberta.cs.cmput301f14t14.questionapp.model.Comment; import ca.ualberta.cs.cmput301f14t14.questionapp.model.LocationHolder; import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonDeserializer; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParseException; /** * Class used by GSON to deserialize Answer objects */ public class CommentDeserializer<T extends ICommentable> implements JsonDeserializer<Comment<T>> { public Comment<T> deserialize(final JsonElement json, final Type type, final JsonDeserializationContext context) throws JsonParseException { final JsonObject jsonObject = json.getAsJsonObject(); final Comment<T> comment = new Comment<T>(); comment.setId(UUID.fromString(jsonObject.get("id").getAsString())); comment.setParent(UUID.fromString(jsonObject.get("parent").getAsString())); comment.setBody(jsonObject.get("body").getAsString()); comment.setAuthor(jsonObject.get("author").getAsString()); comment.setDate((Date) context.deserialize(jsonObject.get("date"), Date.class)); comment.setLocation((LocationHolder) context.deserialize(jsonObject.get("location"), LocationHolder.class)); return comment; } }