Throw JsonParseException in event of binding failures like type mismatches.
This commit is contained in:
parent
c226bd4f3f
commit
016261d9cf
@ -637,7 +637,6 @@ public final class Gson {
|
|||||||
T target = (T) fromJson(reader, typeOfT);
|
T target = (T) fromJson(reader, typeOfT);
|
||||||
return target;
|
return target;
|
||||||
} catch (IllegalStateException e) {
|
} catch (IllegalStateException e) {
|
||||||
// TODO(inder): Figure out whether it is indeed right to rethrow this as JsonSyntaxException
|
|
||||||
throw new JsonSyntaxException(e);
|
throw new JsonSyntaxException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -732,6 +731,8 @@ public final class Gson {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
throw new JsonSyntaxException(e);
|
throw new JsonSyntaxException(e);
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
throw new JsonSyntaxException(e);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
// TODO(inder): Figure out whether it is indeed right to rethrow this as JsonSyntaxException
|
// TODO(inder): Figure out whether it is indeed right to rethrow this as JsonSyntaxException
|
||||||
throw new JsonSyntaxException(e);
|
throw new JsonSyntaxException(e);
|
||||||
|
@ -18,8 +18,11 @@ package com.google.gson.functional;
|
|||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.GsonBuilder;
|
import com.google.gson.GsonBuilder;
|
||||||
import com.google.gson.JsonStreamParser;
|
import com.google.gson.JsonStreamParser;
|
||||||
|
import com.google.gson.JsonSyntaxException;
|
||||||
import com.google.gson.common.TestTypes.BagOfPrimitives;
|
import com.google.gson.common.TestTypes.BagOfPrimitives;
|
||||||
|
|
||||||
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
import java.util.Map;
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
import java.io.CharArrayReader;
|
import java.io.CharArrayReader;
|
||||||
@ -113,4 +116,20 @@ public class ReadersWritersTest extends TestCase {
|
|||||||
assertEquals("two", actualTwo.stringValue);
|
assertEquals("two", actualTwo.stringValue);
|
||||||
assertFalse(parser.hasNext());
|
assertFalse(parser.hasNext());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testTypeMismatchThrowsJsonSyntaxExceptionForStrings() {
|
||||||
|
try {
|
||||||
|
gson.fromJson("true", new TypeToken<Map<String, String>>() {}.getType());
|
||||||
|
fail();
|
||||||
|
} catch (JsonSyntaxException expected) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testTypeMismatchThrowsJsonSyntaxExceptionForReaders() {
|
||||||
|
try {
|
||||||
|
gson.fromJson(new StringReader("true"), new TypeToken<Map<String, String>>() {}.getType());
|
||||||
|
fail();
|
||||||
|
} catch (JsonSyntaxException expected) {
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user