summaryrefslogtreecommitdiff
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
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).
-rw-r--r--src/data/ValidatingJsonDeserializer.java10
-rw-r--r--src/io/TweetReader.java11
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();
}
}