• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.fasterxml.jackson.databind.util;
2 
3 import com.fasterxml.jackson.core.JsonParser;
4 import com.fasterxml.jackson.core.JsonToken;
5 import com.fasterxml.jackson.core.util.JsonParserSequence;
6 import com.fasterxml.jackson.databind.BaseMapTest;
7 import com.fasterxml.jackson.databind.ObjectMapper;
8 
9 public class JsonParserSequenceTest extends BaseMapTest {
10 
11     private final ObjectMapper MAPPER = objectMapper();
12 
13     /**
14      * Verifies fix for [core#372]
15      */
16     @SuppressWarnings("resource")
testJsonParserSequenceOverridesSkipChildren()17     public void testJsonParserSequenceOverridesSkipChildren() throws Exception
18     {
19         // Create parser from TokenBuffer containing an incomplete JSON object
20         TokenBuffer buf1 = new TokenBuffer(MAPPER, false);
21         buf1.writeStartObject();
22         buf1.writeFieldName("foo");
23         buf1.writeStartObject();
24         JsonParser parser1 = buf1.asParser();
25 
26         // Create parser from second TokenBuffer that completes the object started by the first buffer
27         TokenBuffer buf2 = new TokenBuffer(MAPPER, false);
28         buf2.writeEndObject();
29         buf2.writeEndObject();
30         JsonParser parser2 = buf2.asParser();
31 
32         // Create sequence of both parsers and verify tokens
33         JsonParser parserSequence = JsonParserSequence.createFlattened(false, parser1, parser2);
34         assertToken(JsonToken.START_OBJECT, parserSequence.nextToken());
35         assertToken(JsonToken.FIELD_NAME, parserSequence.nextToken());
36         assertToken(JsonToken.START_OBJECT, parserSequence.nextToken());
37 
38         // Skip children of current token. JsonParserSequence's overridden version should switch to the next parser
39         // in the sequence
40         parserSequence.skipChildren();
41 
42         // Verify last token
43         assertToken(JsonToken.END_OBJECT, parserSequence.nextToken());
44     }
45 }
46