Example usage for com.fasterxml.jackson.databind.util TokenBuffer close

List of usage examples for com.fasterxml.jackson.databind.util TokenBuffer close

Introduction

In this page you can find the example usage for com.fasterxml.jackson.databind.util TokenBuffer close.

Prototype

public void close() 

Source Link

Usage

From source file:org.emfjson.jackson.databind.deser.EObjectDeserializer.java

protected EObject postDeserialize(TokenBuffer buffer, EObject object, EClass defaultType,
        DeserializationContext ctxt) throws IOException {
    if (object == null && defaultType == null) {
        return null;
    }//from   w w  w .  j  av  a2 s .  c  o m

    if (object == null) {
        object = EcoreUtil.create(defaultType);
    }

    final Resource resource = getResource(ctxt);
    final JsonParser jp = buffer.asParser();
    final EObjectPropertyMap propertyMap = builder.construct(object.eClass());

    while (jp.nextToken() != null) {
        final String field = jp.getCurrentName();
        final EObjectProperty property = propertyMap.findProperty(field);

        if (property != null) {
            property.deserializeAndSet(jp, object, ctxt, resource);
        } else {
            handleUnknownProperty(jp, resource, ctxt);
        }
    }
    jp.close();
    buffer.close();
    return object;
}

From source file:org.emfjson.jackson.streaming.StreamReader.java

protected EObject parseObject(JsonParser parser, EReference containment, EObject owner, EClass currentClass)
        throws IOException {

    EObject current = null;/*from   w  w w. j av a 2  s . c om*/

    if (currentClass != null) {
        current = EcoreUtil.create(currentClass);
    }

    final TokenBuffer buffer = new TokenBuffer(parser);

    while (parser.nextToken() != JsonToken.END_OBJECT) {
        final String fieldName = parser.getCurrentName();

        switch (fieldName) {
        case EJS_TYPE_KEYWORD:
            current = create(parser.nextTextValue());
            break;
        case EJS_UUID_ANNOTATION:
            if (resource instanceof UuidResource) {
                if (current != null) {
                    ((UuidResource) resource).setID(current, parser.nextTextValue());
                }
            }
            break;
        default:
            if (current == null && containment != null) {
                final EClass defaultType = containment.getEReferenceType();

                if (!defaultType.isAbstract()) {
                    current = EcoreUtil.create(defaultType);
                }
            }

            if (current != null) {
                readFeature(parser, current, fieldName);
            } else {
                buffer.copyCurrentStructure(parser);
            }
            break;
        }
    }

    buffer.close();

    if (current != null) {
        final JsonParser bufferedParser = buffer.asParser();

        while (bufferedParser.nextToken() != null) {
            readFeature(bufferedParser, current, bufferedParser.getCurrentName());
        }

        bufferedParser.close();
    }

    if (current != null && containment != null && owner != null) {
        EObjects.setOrAdd(owner, containment, current);
    }

    return current;
}

From source file:com.github.shyiko.jackson.module.advice.AdvisedBeanDeserializer.java

@SuppressWarnings("resource")
protected Object deserializeUsingPropertyBasedWithUnwrapped(JsonParser jp, DeserializationContext ctxt)
        throws IOException {
    final PropertyBasedCreator creator = _propertyBasedCreator;
    PropertyValueBuffer buffer = creator.startBuilding(jp, ctxt, _objectIdReader);

    TokenBuffer tokens = new TokenBuffer(jp);
    tokens.writeStartObject();//from w w  w.  j a  va 2s .  c  o m

    JsonToken t = jp.getCurrentToken();
    for (; t == JsonToken.FIELD_NAME; t = jp.nextToken()) {
        String propName = jp.getCurrentName();
        jp.nextToken(); // to point to value
        // creator property?
        SettableBeanProperty creatorProp = creator.findCreatorProperty(propName);
        if (creatorProp != null) {
            // Last creator property to set?
            Object value = creatorProp.deserialize(jp, ctxt);
            if (buffer.assignParameter(creatorProp.getCreatorIndex(), value)) {
                t = jp.nextToken(); // to move to following FIELD_NAME/END_OBJECT
                Object bean;
                try {
                    bean = creator.build(ctxt, buffer);
                } catch (Exception e) {
                    wrapAndThrow(e, _beanType.getRawClass(), propName, ctxt);
                    continue; // never gets here
                }
                // if so, need to copy all remaining tokens into buffer
                while (t == JsonToken.FIELD_NAME) {
                    jp.nextToken(); // to skip name
                    tokens.copyCurrentStructure(jp);
                    t = jp.nextToken();
                }
                tokens.writeEndObject();
                if (bean.getClass() != _beanType.getRawClass()) {
                    // !!! 08-Jul-2011, tatu: Could probably support; but for now
                    //   it's too complicated, so bail out
                    tokens.close();
                    throw ctxt.mappingException("Can not create polymorphic instances with unwrapped values");
                }
                return _unwrappedPropertyHandler.processUnwrapped(jp, ctxt, bean, tokens);
            }
            continue;
        }
        // Object Id property?
        if (buffer.readIdProperty(propName)) {
            continue;
        }

        // regular property? needs buffering
        SettableBeanProperty prop = _beanProperties.find(propName);
        if (prop != null) {
            buffer.bufferProperty(prop, prop.deserialize(jp, ctxt));
            continue;
        }
        /* As per [JACKSON-313], things marked as ignorable should not be
         * passed to any setter
         */
        if (_ignorableProps != null && _ignorableProps.contains(propName)) {
            handleIgnoredProperty(jp, ctxt, handledType(), propName);
            continue;
        }
        tokens.writeFieldName(propName);
        tokens.copyCurrentStructure(jp);
        // "any property"?
        if (_anySetter != null) {
            buffer.bufferAnyProperty(_anySetter, propName, _anySetter.deserialize(jp, ctxt));
        }
    }

    // We hit END_OBJECT, so:
    Object bean;
    try {
        bean = creator.build(ctxt, buffer);
    } catch (Exception e) {
        wrapInstantiationProblem(e, ctxt);
        return null; // never gets here
    }
    return _unwrappedPropertyHandler.processUnwrapped(jp, ctxt, bean, tokens);
}