Repository: johnzon
Updated Branches:
  refs/heads/master 05effff6e -> 08905f99e


JOHNZON-139 add skipObject and skipArray support


Project: http://git-wip-us.apache.org/repos/asf/johnzon/repo
Commit: http://git-wip-us.apache.org/repos/asf/johnzon/commit/d455deaf
Tree: http://git-wip-us.apache.org/repos/asf/johnzon/tree/d455deaf
Diff: http://git-wip-us.apache.org/repos/asf/johnzon/diff/d455deaf

Branch: refs/heads/master
Commit: d455deafbf01675b5c607a8241adfde56ea11a6f
Parents: 05effff
Author: Mark Struberg <[email protected]>
Authored: Tue Oct 17 09:02:03 2017 +0200
Committer: Mark Struberg <[email protected]>
Committed: Tue Oct 17 09:02:03 2017 +0200

----------------------------------------------------------------------
 .../johnzon/core/JohnzonJsonParserImpl.java     | 14 ++++
 .../org/apache/johnzon/core/JsonParserTest.java | 86 ++++++++++++++++++++
 2 files changed, 100 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/johnzon/blob/d455deaf/johnzon-core/src/main/java/org/apache/johnzon/core/JohnzonJsonParserImpl.java
----------------------------------------------------------------------
diff --git 
a/johnzon-core/src/main/java/org/apache/johnzon/core/JohnzonJsonParserImpl.java 
b/johnzon-core/src/main/java/org/apache/johnzon/core/JohnzonJsonParserImpl.java
index 5feb3d9..5caa5b0 100644
--- 
a/johnzon-core/src/main/java/org/apache/johnzon/core/JohnzonJsonParserImpl.java
+++ 
b/johnzon-core/src/main/java/org/apache/johnzon/core/JohnzonJsonParserImpl.java
@@ -58,4 +58,18 @@ public abstract class JohnzonJsonParserImpl implements 
JohnzonJsonParser {
         JsonReaderImpl jsonReader = new JsonReaderImpl(this, true);
         return jsonReader.readValue();
     }
+
+    @Override
+    public void skipObject() {
+        // could surely get improved.
+        // But no need for now as this method is not used that often.
+        getObject();
+    }
+
+    @Override
+    public void skipArray() {
+        // could surely get improved.
+        // But no need for now as this method is not used that often.
+        getArray();
+    }
 }

http://git-wip-us.apache.org/repos/asf/johnzon/blob/d455deaf/johnzon-core/src/test/java/org/apache/johnzon/core/JsonParserTest.java
----------------------------------------------------------------------
diff --git 
a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonParserTest.java 
b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonParserTest.java
index 6d57e26..0a6e975 100644
--- a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonParserTest.java
+++ b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonParserTest.java
@@ -270,6 +270,92 @@ public class JsonParserTest {
     }
     
     @Test
+    public void testSkipObject() {
+        final JsonParser parser = Json.createParser(new 
StringReader("{\"a\":{\"x\":1,\"y\":{\"y1\":2}}, \"b\":3}"));
+        assertNotNull(parser);
+
+        {
+            assertTrue(parser.hasNext());
+            final JsonParser.Event event = parser.next();
+            assertNotNull(event);
+            assertEquals(JsonParser.Event.START_OBJECT, event);
+        }
+        {
+            assertTrue(parser.hasNext());
+            final JsonParser.Event event = parser.next();
+            assertNotNull(event);
+            assertEquals(JsonParser.Event.KEY_NAME, event);
+            assertEquals("a", parser.getString());
+        }
+        {
+            assertTrue(parser.hasNext());
+            final JsonParser.Event event = parser.next();
+            assertNotNull(event);
+            assertEquals(JsonParser.Event.START_OBJECT, event);
+        }
+
+        parser.skipObject();
+
+        {
+            assertTrue(parser.hasNext());
+            final JsonParser.Event event = parser.next();
+            assertNotNull(event);
+            assertEquals(JsonParser.Event.KEY_NAME, event);
+            assertEquals("b", parser.getString());
+        }
+        {
+            assertTrue(parser.hasNext());
+            final JsonParser.Event event = parser.next();
+            assertNotNull(event);
+            assertEquals(Event.VALUE_NUMBER, event);
+            assertEquals(3, parser.getInt());
+        }
+    }
+
+    @Test
+    public void testSkipArray() {
+        final JsonParser parser = Json.createParser(new 
StringReader("{\"a\":[\"x\",\"y\"], \"b\":3}"));
+        assertNotNull(parser);
+
+        {
+            assertTrue(parser.hasNext());
+            final JsonParser.Event event = parser.next();
+            assertNotNull(event);
+            assertEquals(JsonParser.Event.START_OBJECT, event);
+        }
+        {
+            assertTrue(parser.hasNext());
+            final JsonParser.Event event = parser.next();
+            assertNotNull(event);
+            assertEquals(JsonParser.Event.KEY_NAME, event);
+            assertEquals("a", parser.getString());
+        }
+        {
+            assertTrue(parser.hasNext());
+            final JsonParser.Event event = parser.next();
+            assertNotNull(event);
+            assertEquals(Event.START_ARRAY, event);
+        }
+
+        parser.skipArray();
+
+        {
+            assertTrue(parser.hasNext());
+            final JsonParser.Event event = parser.next();
+            assertNotNull(event);
+            assertEquals(JsonParser.Event.KEY_NAME, event);
+            assertEquals("b", parser.getString());
+        }
+        {
+            assertTrue(parser.hasNext());
+            final JsonParser.Event event = parser.next();
+            assertNotNull(event);
+            assertEquals(Event.VALUE_NUMBER, event);
+            assertEquals(3, parser.getInt());
+        }
+    }
+
+    @Test
     public void simpleUTF16LE() {
         final JsonParser parser = 
Json.createParserFactory(null).createParser(Thread.currentThread()
                 
.getContextClassLoader().getResourceAsStream("json/simple_utf16le.json"), 
UTF_16LE);

Reply via email to