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(

Reply via email to