Repository: johnzon Updated Branches: refs/heads/master 5852983bb -> 17fdff13f
JOHNZON-111 ensure to fail with a jsonexception when reading a wrong type of value with jsonreader, thanks Michele Vivoda Project: http://git-wip-us.apache.org/repos/asf/johnzon/repo Commit: http://git-wip-us.apache.org/repos/asf/johnzon/commit/17fdff13 Tree: http://git-wip-us.apache.org/repos/asf/johnzon/tree/17fdff13 Diff: http://git-wip-us.apache.org/repos/asf/johnzon/diff/17fdff13 Branch: refs/heads/master Commit: 17fdff13f3a65695ede0faab9db48ea42235ff09 Parents: 5852983 Author: rmannibucau <[email protected]> Authored: Mon Mar 27 09:13:03 2017 +0200 Committer: rmannibucau <[email protected]> Committed: Mon Mar 27 09:13:03 2017 +0200 ---------------------------------------------------------------------- .../java/org/apache/johnzon/core/JsonReaderImpl.java | 14 ++++++++++++-- .../org/apache/johnzon/core/JsonReaderImplTest.java | 11 +++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/johnzon/blob/17fdff13/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderImpl.java ---------------------------------------------------------------------- diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderImpl.java index 4ceb803..c7a3189 100644 --- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderImpl.java +++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderImpl.java @@ -107,12 +107,22 @@ public class JsonReaderImpl implements JsonReader { @Override public JsonObject readObject() { - return JsonObject.class.cast(read()); + final JsonStructure read = read(); + checkType(JsonObject.class, read); + return JsonObject.class.cast(read); } @Override public JsonArray readArray() { - return JsonArray.class.cast(read()); + final JsonStructure read = read(); + checkType(JsonArray.class, read); + return JsonArray.class.cast(read); + } + + private void checkType(final Class<?> expected, final JsonStructure read) { + if (!expected.isInstance(read)) { + throw new JsonParsingException("Expecting " + expected + " but got " + read, parser.getLocation()); + } } @Override http://git-wip-us.apache.org/repos/asf/johnzon/blob/17fdff13/johnzon-core/src/test/java/org/apache/johnzon/core/JsonReaderImplTest.java ---------------------------------------------------------------------- diff --git a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonReaderImplTest.java b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonReaderImplTest.java index 21bb463..eda5979 100644 --- a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonReaderImplTest.java +++ b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonReaderImplTest.java @@ -42,6 +42,7 @@ import javax.json.JsonReaderFactory; import javax.json.JsonString; import javax.json.JsonStructure; import javax.json.JsonValue; +import javax.json.stream.JsonParsingException; import org.junit.Test; @@ -63,6 +64,16 @@ public class JsonReaderImplTest { return Collections.EMPTY_MAP; } + @Test(expected = JsonParsingException.class) + public void badTypeObject() { + Json.createReaderFactory(getFactoryConfig()).createReader(new StringReader("[]")).readObject(); + } + + @Test(expected = JsonParsingException.class) + public void badTypeArray() { + Json.createReaderFactory(getFactoryConfig()).createReader(new StringReader("{}")).readArray(); + } + @Test public void simple() { final JsonReader reader = Json.createReaderFactory(getFactoryConfig()).createReader(
