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