package com.fasterxml.jackson.core.json; import java.io.ByteArrayInputStream; import java.io.StringReader; import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; import com.fasterxml.jackson.core.SerializableString; import com.fasterxml.jackson.core.io.SerializedString; public class TestNextXxx extends com.fasterxml.jackson.test.BaseTest { // [JACKSON-653] public void testIsNextTokenName() throws Exception { _testIsNextTokenName1(false); _testIsNextTokenName1(true); _testIsNextTokenName2(false); _testIsNextTokenName2(true); } private void _testIsNextTokenName1(boolean useStream) throws Exception { final String DOC = "{\"name\":123,\"name2\":14,\"x\":\"name\"}"; JsonFactory jf = new JsonFactory(); JsonParser jp = useStream ? jf.createJsonParser(new ByteArrayInputStream(DOC.getBytes("UTF-8"))) : jf.createJsonParser(new StringReader(DOC)); SerializedString NAME = new SerializedString("name"); assertFalse(jp.nextFieldName(NAME)); assertToken(JsonToken.START_OBJECT, jp.getCurrentToken()); assertTrue(jp.nextFieldName(NAME)); assertToken(JsonToken.FIELD_NAME, jp.getCurrentToken()); assertEquals(NAME.getValue(), jp.getCurrentName()); assertEquals(NAME.getValue(), jp.getText()); assertFalse(jp.nextFieldName(NAME)); assertToken(JsonToken.VALUE_NUMBER_INT, jp.getCurrentToken()); assertEquals(123, jp.getIntValue()); assertFalse(jp.nextFieldName(NAME)); assertToken(JsonToken.FIELD_NAME, jp.getCurrentToken()); assertEquals("name2", jp.getCurrentName()); assertToken(JsonToken.VALUE_NUMBER_INT, jp.nextToken()); assertFalse(jp.nextFieldName(NAME)); assertToken(JsonToken.FIELD_NAME, jp.getCurrentToken()); assertEquals("x", jp.getCurrentName()); assertFalse(jp.nextFieldName(NAME)); assertToken(JsonToken.VALUE_STRING, jp.getCurrentToken()); assertFalse(jp.nextFieldName(NAME)); assertToken(JsonToken.END_OBJECT, jp.getCurrentToken()); assertFalse(jp.nextFieldName(NAME)); assertNull(jp.getCurrentToken()); jp.close(); } private void _testIsNextTokenName2(boolean useStream) throws Exception { final String DOC = "{\"name\":123,\"name2\":14,\"x\":\"name\"}"; JsonFactory jf = new JsonFactory(); JsonParser jp = useStream ? jf.createJsonParser(new ByteArrayInputStream(DOC.getBytes("UTF-8"))) : jf.createJsonParser(new StringReader(DOC)); SerializableString NAME = new SerializedString("name"); assertFalse(jp.nextFieldName(NAME)); assertToken(JsonToken.START_OBJECT, jp.getCurrentToken()); assertTrue(jp.nextFieldName(NAME)); assertToken(JsonToken.FIELD_NAME, jp.getCurrentToken()); assertEquals(NAME.getValue(), jp.getCurrentName()); assertEquals(NAME.getValue(), jp.getText()); assertFalse(jp.nextFieldName(NAME)); assertToken(JsonToken.VALUE_NUMBER_INT, jp.getCurrentToken()); assertEquals(123, jp.getIntValue()); assertFalse(jp.nextFieldName(NAME)); assertToken(JsonToken.FIELD_NAME, jp.getCurrentToken()); assertEquals("name2", jp.getCurrentName()); assertToken(JsonToken.VALUE_NUMBER_INT, jp.nextToken()); assertFalse(jp.nextFieldName(NAME)); assertToken(JsonToken.FIELD_NAME, jp.getCurrentToken()); assertEquals("x", jp.getCurrentName()); assertFalse(jp.nextFieldName(NAME)); assertToken(JsonToken.VALUE_STRING, jp.getCurrentToken()); assertFalse(jp.nextFieldName(NAME)); assertToken(JsonToken.END_OBJECT, jp.getCurrentToken()); assertFalse(jp.nextFieldName(NAME)); assertNull(jp.getCurrentToken()); jp.close(); } }