Java 类com.fasterxml.jackson.core.util.JsonParserSequence 实例源码

项目:GitHub    文件:ParserSequenceTest.java   
public void testMultiLevel() throws Exception
{
    JsonParser p1 = JSON_FACTORY.createParser(ObjectReadContext.empty(), "[ 1 ] ");
    JsonParser p2 = JSON_FACTORY.createParser(ObjectReadContext.empty(), " 5");
    JsonParser p3 = JSON_FACTORY.createParser(ObjectReadContext.empty(), " { } ");
    JsonParserSequence seq1 = JsonParserSequence.createFlattened(true, p1, p2);
    JsonParserSequence seq = JsonParserSequence.createFlattened(false, seq1, p3);
    assertEquals(3, seq.containedParsersCount());

    assertToken(JsonToken.START_ARRAY, seq.nextToken());
    assertToken(JsonToken.VALUE_NUMBER_INT, seq.nextToken());
    assertToken(JsonToken.END_ARRAY, seq.nextToken());

    assertToken(JsonToken.VALUE_NUMBER_INT, seq.nextToken());

    assertToken(JsonToken.START_OBJECT, seq.nextToken());
    assertToken(JsonToken.END_OBJECT, seq.nextToken());

    assertNull(seq.nextToken());
    assertTrue(p1.isClosed());
    assertTrue(p2.isClosed());
    assertTrue(p3.isClosed());
    assertTrue(seq.isClosed());
}
项目:GitHub    文件:ParserSequenceTest.java   
public void testInitializationDisabled() throws Exception
{
    // // First, with old legacy settings

    JsonParser p1 = JSON_FACTORY.createParser(ObjectReadContext.empty(), "1 2");
    JsonParser p2 = JSON_FACTORY.createParser(ObjectReadContext.empty(), "3 true");
    assertToken(JsonToken.VALUE_NUMBER_INT, p1.nextToken());
    assertEquals(1, p1.getIntValue());
    assertToken(JsonToken.VALUE_NUMBER_INT, p2.nextToken());
    assertEquals(3, p2.getIntValue());

    // with legacy settings, will see neither '1' nor '3'

    JsonParserSequence seq = JsonParserSequence.createFlattened(false, p1, p2);
    assertToken(JsonToken.VALUE_NUMBER_INT, seq.nextToken());
    assertEquals(2, seq.getIntValue());
    assertToken(JsonToken.VALUE_TRUE, seq.nextToken());
    assertNull(seq.nextToken());
    seq.close();
}
项目:GitHub    文件:ParserSequenceTest.java   
public void testInitializationEnabled() throws Exception
{
    // // and then with new "check for current":
    JsonParser p1 = JSON_FACTORY.createParser(ObjectReadContext.empty(), "1 2");
    JsonParser p2 = JSON_FACTORY.createParser(ObjectReadContext.empty(), "3 true");
    assertToken(JsonToken.VALUE_NUMBER_INT, p1.nextToken());
    assertEquals(1, p1.getIntValue());
    assertToken(JsonToken.VALUE_NUMBER_INT, p2.nextToken());
    assertEquals(3, p2.getIntValue());

    // with new settings, both '1' and '3' will be visible

    JsonParserSequence seq = JsonParserSequence.createFlattened(true, p1, p2);
    assertToken(JsonToken.VALUE_NUMBER_INT, seq.nextToken());
    assertEquals(1, seq.getIntValue());
    assertToken(JsonToken.VALUE_NUMBER_INT, seq.nextToken());
    assertEquals(2, seq.getIntValue());
    assertToken(JsonToken.VALUE_NUMBER_INT, seq.nextToken());
    assertEquals(3, seq.getIntValue());
    assertToken(JsonToken.VALUE_TRUE, seq.nextToken());
    assertNull(seq.nextToken());
    seq.close();
}
项目:QuizUpWinner    文件:AsArrayTypeDeserializer.java   
private final Object _deserialize(JsonParser paramJsonParser, DeserializationContext paramDeserializationContext)
{
  boolean bool = paramJsonParser.isExpectedStartArrayToken();
  String str = _locateTypeId(paramJsonParser, paramDeserializationContext);
  JsonDeserializer localJsonDeserializer = _findDeserializer(paramDeserializationContext, str);
  if ((this._typeIdVisible) && (paramJsonParser.getCurrentToken() == JsonToken.START_OBJECT))
  {
    TokenBuffer localTokenBuffer = new TokenBuffer(null);
    localTokenBuffer.writeStartObject();
    localTokenBuffer.writeFieldName(this._typePropertyName);
    localTokenBuffer.writeString(str);
    JsonParserSequence localJsonParserSequence = JsonParserSequence.createFlattened(localTokenBuffer.asParser(paramJsonParser), paramJsonParser);
    paramJsonParser = localJsonParserSequence;
    localJsonParserSequence.nextToken();
  }
  Object localObject = localJsonDeserializer.deserialize(paramJsonParser, paramDeserializationContext);
  if ((bool) && (paramJsonParser.nextToken() != JsonToken.END_ARRAY))
    throw paramDeserializationContext.wrongTokenException(paramJsonParser, JsonToken.END_ARRAY, "expected closing END_ARRAY after type information and deserialized value");
  return localObject;
}
项目:QuizUpWinner    文件:AsWrapperTypeDeserializer.java   
private final Object _deserialize(JsonParser paramJsonParser, DeserializationContext paramDeserializationContext)
{
  if (paramJsonParser.getCurrentToken() != JsonToken.START_OBJECT)
    throw paramDeserializationContext.wrongTokenException(paramJsonParser, JsonToken.START_OBJECT, "need JSON Object to contain As.WRAPPER_OBJECT type information for class " + baseTypeName());
  if (paramJsonParser.nextToken() != JsonToken.FIELD_NAME)
    throw paramDeserializationContext.wrongTokenException(paramJsonParser, JsonToken.FIELD_NAME, "need JSON String that contains type id (for subtype of " + baseTypeName() + ")");
  String str = paramJsonParser.getText();
  JsonDeserializer localJsonDeserializer = _findDeserializer(paramDeserializationContext, str);
  paramJsonParser.nextToken();
  if ((this._typeIdVisible) && (paramJsonParser.getCurrentToken() == JsonToken.START_OBJECT))
  {
    TokenBuffer localTokenBuffer = new TokenBuffer(null);
    localTokenBuffer.writeStartObject();
    localTokenBuffer.writeFieldName(this._typePropertyName);
    localTokenBuffer.writeString(str);
    JsonParserSequence localJsonParserSequence = JsonParserSequence.createFlattened(localTokenBuffer.asParser(paramJsonParser), paramJsonParser);
    paramJsonParser = localJsonParserSequence;
    localJsonParserSequence.nextToken();
  }
  Object localObject = localJsonDeserializer.deserialize(paramJsonParser, paramDeserializationContext);
  if (paramJsonParser.nextToken() != JsonToken.END_OBJECT)
    throw paramDeserializationContext.wrongTokenException(paramJsonParser, JsonToken.END_OBJECT, "expected closing END_OBJECT after type information and deserialized value");
  return localObject;
}
项目:joyplus-tv    文件:AsArrayTypeDeserializer.java   
/**
 * Method that handles type information wrapper, locates actual
 * subtype deserializer to use, and calls it to do actual
 * deserialization.
 */
private final Object _deserialize(JsonParser jp, DeserializationContext ctxt)
    throws IOException, JsonProcessingException
{
    boolean hadStartArray = jp.isExpectedStartArrayToken();
    String typeId = _locateTypeId(jp, ctxt);
    JsonDeserializer<Object> deser = _findDeserializer(ctxt, typeId);
    // Minor complication: we may need to merge type id in?
    if (_typeIdVisible && jp.getCurrentToken() == JsonToken.START_OBJECT) {
        // but what if there's nowhere to add it in? Error? Or skip? For now, skip.
        TokenBuffer tb = new TokenBuffer(null);
        tb.writeStartObject(); // recreate START_OBJECT
        tb.writeFieldName(_typePropertyName);
        tb.writeString(typeId);
        jp = JsonParserSequence.createFlattened(tb.asParser(jp), jp);
        jp.nextToken();
    }
    Object value = deser.deserialize(jp, ctxt);
    // And then need the closing END_ARRAY
    if (hadStartArray && jp.nextToken() != JsonToken.END_ARRAY) {
        throw ctxt.wrongTokenException(jp, JsonToken.END_ARRAY,
                "expected closing END_ARRAY after type information and deserialized value");
    }
    return value;
}
项目:GitHub    文件:ParserSequenceTest.java   
public void testSimple() throws Exception
{
    JsonParser p1 = JSON_FACTORY.createParser(ObjectReadContext.empty(), "[ 1 ]");
    JsonParser p2 = JSON_FACTORY.createParser(ObjectReadContext.empty(), "[ 2 ]");
    JsonParserSequence seq = JsonParserSequence.createFlattened(false, p1, p2);
    assertEquals(2, seq.containedParsersCount());

    assertFalse(p1.isClosed());
    assertFalse(p2.isClosed());
    assertFalse(seq.isClosed());
    assertToken(JsonToken.START_ARRAY, seq.nextToken());
    assertToken(JsonToken.VALUE_NUMBER_INT, seq.nextToken());
    assertEquals(1, seq.getIntValue());
    assertToken(JsonToken.END_ARRAY, seq.nextToken());
    assertFalse(p1.isClosed());
    assertFalse(p2.isClosed());
    assertFalse(seq.isClosed());
    assertToken(JsonToken.START_ARRAY, seq.nextToken());

    // first parser ought to be closed now
    assertTrue(p1.isClosed());
    assertFalse(p2.isClosed());
    assertFalse(seq.isClosed());

    assertToken(JsonToken.VALUE_NUMBER_INT, seq.nextToken());
    assertEquals(2, seq.getIntValue());
    assertToken(JsonToken.END_ARRAY, seq.nextToken());
    assertTrue(p1.isClosed());
    assertFalse(p2.isClosed());
    assertFalse(seq.isClosed());

    assertNull(seq.nextToken());
    assertTrue(p1.isClosed());
    assertTrue(p2.isClosed());
    assertTrue(seq.isClosed());

    seq.close();
}
项目:joyplus-tv    文件:AsWrapperTypeDeserializer.java   
/**
 * Method that handles type information wrapper, locates actual
 * subtype deserializer to use, and calls it to do actual
 * deserialization.
 */
private final Object _deserialize(JsonParser jp, DeserializationContext ctxt)
    throws IOException, JsonProcessingException
{
    // first, sanity checks
    if (jp.getCurrentToken() != JsonToken.START_OBJECT) {
        throw ctxt.wrongTokenException(jp, JsonToken.START_OBJECT,
                "need JSON Object to contain As.WRAPPER_OBJECT type information for class "+baseTypeName());
    }
    // should always get field name, but just in case...
    if (jp.nextToken() != JsonToken.FIELD_NAME) {
        throw ctxt.wrongTokenException(jp, JsonToken.FIELD_NAME,
                "need JSON String that contains type id (for subtype of "+baseTypeName()+")");
    }
    final String typeId = jp.getText();
    JsonDeserializer<Object> deser = _findDeserializer(ctxt, typeId);
    jp.nextToken();

    // Minor complication: we may need to merge type id in?
    if (_typeIdVisible && jp.getCurrentToken() == JsonToken.START_OBJECT) {
        // but what if there's nowhere to add it in? Error? Or skip? For now, skip.
        TokenBuffer tb = new TokenBuffer(null);
        tb.writeStartObject(); // recreate START_OBJECT
        tb.writeFieldName(_typePropertyName);
        tb.writeString(typeId);
        jp = JsonParserSequence.createFlattened(tb.asParser(jp), jp);
        jp.nextToken();
    }

    Object value = deser.deserialize(jp, ctxt);
    // And then need the closing END_OBJECT
    if (jp.nextToken() != JsonToken.END_OBJECT) {
        throw ctxt.wrongTokenException(jp, JsonToken.END_OBJECT,
                "expected closing END_OBJECT after type information and deserialized value");
    }
    return value;
}
项目:fahrschein    文件:MetadataTypeResolver.java   
@Override
public Object deserializeTypedFromObject(JsonParser p, DeserializationContext ctxt) throws IOException {
    JsonToken t;

    t = p.getCurrentToken();
    if (t == JsonToken.START_OBJECT) {
        t = p.nextToken();
    } else if (t != JsonToken.FIELD_NAME) {
        throw new JsonMappingException(p, "Could not extract event type from non-object");
    }

    final TokenBuffer tb = new TokenBuffer(p, ctxt);

    for (; t == JsonToken.FIELD_NAME; t = p.nextToken()) {
        final String topLevelProperty = p.getCurrentName();
        tb.writeFieldName(topLevelProperty);
        t = p.nextToken();
        if (topLevelProperty.equals("metadata")) {
            if (t != JsonToken.START_OBJECT) {
                throw new JsonMappingException(p, "Could not extract event type from invalid metadata");
            }
            tb.writeStartObject();
            t = p.nextToken();
            for (; t == JsonToken.FIELD_NAME; t = p.nextToken()) {
                final String metadataProperty = p.getCurrentName();
                tb.writeFieldName(metadataProperty);
                t = p.nextToken();
                if (metadataProperty.equals("event_type")) {
                    if (t != JsonToken.VALUE_STRING) {
                        throw new JsonMappingException(p, "Could not extract event type from non-string property");
                    }
                    final String typeId = p.getText();
                    tb.writeString(typeId);
                    final JsonParser pb = JsonParserSequence.createFlattened(false, tb.asParser(p), p);
                    return deserialize(pb, ctxt, typeId);
                } else {
                    tb.copyCurrentStructure(p);
                }
            }
        } else {
            tb.copyCurrentStructure(p);
        }
    }
    throw new JsonMappingException(p, "Could not find metadata property to extract event type");
}