diff options
author | Peter Wu <peter@lekensteyn.nl> | 2014-05-10 11:08:23 +0200 |
---|---|---|
committer | Peter Wu <peter@lekensteyn.nl> | 2014-05-10 11:08:23 +0200 |
commit | 8565b77c20b8b238bbe7f7fd4916ef1de50fe16c (patch) | |
tree | f9a8f65bcc558e9714166050bcb5318cefa6be06 | |
parent | 670fc2a89d65d9855d50a62f87c1cc061b280215 (diff) | |
download | Datafiller-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).
-rw-r--r-- | src/data/ValidatingJsonDeserializer.java | 10 | ||||
-rw-r--r-- | src/io/TweetReader.java | 11 |
2 files changed, 9 insertions, 12 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; } diff --git a/src/io/TweetReader.java b/src/io/TweetReader.java index f67daf8..8968b84 100644 --- a/src/io/TweetReader.java +++ b/src/io/TweetReader.java @@ -2,9 +2,7 @@ package io; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import com.google.gson.JsonParseException; import com.google.gson.JsonSyntaxException; -import data.DebuggingJsonDeserializer; import data.Tweet; import data.ValidatingJsonDeserializer; import java.io.BufferedReader; @@ -58,12 +56,7 @@ public class TweetReader implements ITweetReader { } private void debugTweet(String line, JsonSyntaxException ex) { - try { - System.err.println("Faulty line: " + line); - DebuggingJsonDeserializer.tryValidate(line, Tweet.class); - System.err.println("No error occured, how strange?"); - } catch (JsonParseException jse) { - System.err.println("The error was: " + jse); - } + System.err.println("Faulty line: " + line); + ex.printStackTrace(); } } |