summaryrefslogtreecommitdiff
path: root/src/data/ValidatingJsonDeserializer.java
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2014-05-10 11:08:23 +0200
committerPeter Wu <peter@lekensteyn.nl>2014-05-10 11:08:23 +0200
commit8565b77c20b8b238bbe7f7fd4916ef1de50fe16c (patch)
treef9a8f65bcc558e9714166050bcb5318cefa6be06 /src/data/ValidatingJsonDeserializer.java
parent670fc2a89d65d9855d50a62f87c1cc061b280215 (diff)
downloadDatafiller-8565b77c20b8b238bbe7f7fd4916ef1de50fe16c.tar.gz
Check for errors if a validation error occurred
This gives more helpful messages when the primitive does not match (object or array instead of string).
Diffstat (limited to 'src/data/ValidatingJsonDeserializer.java')
-rw-r--r--src/data/ValidatingJsonDeserializer.java10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/data/ValidatingJsonDeserializer.java b/src/data/ValidatingJsonDeserializer.java
index 431622b..d5a8dbc 100644
--- a/src/data/ValidatingJsonDeserializer.java
+++ b/src/data/ValidatingJsonDeserializer.java
@@ -1,14 +1,12 @@
package data;
import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
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;
-import com.google.gson.JsonPrimitive;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -26,7 +24,13 @@ public class ValidatingJsonDeserializer<T> implements JsonDeserializer<T> {
@Override
public T deserialize(JsonElement je, Type type,
JsonDeserializationContext jdc) throws JsonParseException {
- T obj = new Gson().fromJson(je, type);
+ T obj;
+ try {
+ obj = new Gson().fromJson(je, type);
+ } catch (JsonParseException jpe) {
+ DebuggingJsonDeserializer.tryValidate(je.toString(), (Class) type);
+ throw new JsonParseException("Debugger could not find a bug", jpe);
+ }
checkObject("", je, obj.getClass());
return obj;
}