List of usage examples for com.fasterxml.jackson.databind.util TokenBuffer close
public void close()
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); }