类com.fasterxml.jackson.databind.deser.UnresolvedForwardReference源码实例Demo

下面列出了怎么用com.fasterxml.jackson.databind.deser.UnresolvedForwardReference的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: lams   文件: ObjectIdReferenceProperty.java
@Override
public Object deserializeSetAndReturn(JsonParser p, DeserializationContext ctxt, Object instance) throws IOException
{
    try {
        return setAndReturn(instance, deserialize(p, ctxt));
    } catch (UnresolvedForwardReference reference) {
        boolean usingIdentityInfo = (_objectIdInfo != null) || (_valueDeserializer.getObjectIdReader() != null);
        if (!usingIdentityInfo) {
            throw JsonMappingException.from(p, "Unresolved forward reference but no identity info", reference);
        }
        reference.getRoid().appendReferring(new PropertyReferring(this, reference, _type.getRawClass(), instance));
        return null;
    }
}
 
源代码2 项目: lams   文件: ObjectIdReferenceProperty.java
public PropertyReferring(ObjectIdReferenceProperty parent,
        UnresolvedForwardReference ref, Class<?> type, Object ob)
{
    super(ref, type);
    _parent = parent;
    _pojo = ob;
}
 
源代码3 项目: lams   文件: ReadableObjectId.java
public Referring(UnresolvedForwardReference ref, Class<?> beanType) {
    _reference = ref;
    _beanType = beanType;
}
 
源代码4 项目: lams   文件: ReadableObjectId.java
public Referring(UnresolvedForwardReference ref, JavaType beanType) {
    _reference = ref;
    _beanType = beanType.getRawClass();
}
 
源代码5 项目: caravan   文件: CustomCollectionDeserializer.java
@SuppressWarnings("unchecked")
@Override
public Object deserialize(JsonParser p, DeserializationContext ctxt,
    Object result)
    throws IOException {
  // Ok: must point to START_ARRAY (or equivalent)
  if (!p.isExpectedStartArrayToken()) {
    return handleNonArray(p, ctxt, (Collection<Object>) result);
  }
  // [databind#631]: Assign current value, to be accessible by custom serializers
  p.setCurrentValue(result);

  JsonDeserializer<Object> valueDes = _valueDeserializer;
  final TypeDeserializer typeDeser = _valueTypeDeserializer;
  CollectionReferringAccumulator referringAccumulator =
      (valueDes.getObjectIdReader() == null) ? null :
          new CollectionReferringAccumulator(_containerType.getContentType().getRawClass(), (Collection<Object>) result);

  JsonToken t;
  while ((t = p.nextToken()) != JsonToken.END_ARRAY) {
    try {
      Object value;
      if (t == JsonToken.VALUE_NULL) {
        if (_skipNullValues) {
          continue;
        }
        value = _nullProvider.getNullValue(ctxt);
      } else if (typeDeser == null) {
        value = valueDes.deserialize(p, ctxt);
      } else {
        value = valueDes.deserializeWithType(p, ctxt, typeDeser);
      }
      if (referringAccumulator != null) {
        referringAccumulator.add(value);
      } else {
        ((Collection<Object>) result).add(value);
      }
    } catch (UnresolvedForwardReference reference) {
      if (referringAccumulator == null) {
        throw JsonMappingException
            .from(p, "Unresolved forward reference but no identity info", reference);
      }
      Referring ref = referringAccumulator.handleUnresolvedReference(reference);
      reference.getRoid().appendReferring(ref);
    } catch (Exception e) {
      boolean wrap = (ctxt == null) || ctxt.isEnabled(DeserializationFeature.WRAP_EXCEPTIONS);
      if (!wrap) {
        ClassUtil.throwIfRTE(e);
      }
      throw JsonMappingException.wrapWithPath(e, result, ((Collection<Object>) result).size());
    }
  }
  return result;
}
 
源代码6 项目: caravan   文件: CustomCollectionDeserializer.java
public Referring handleUnresolvedReference(UnresolvedForwardReference reference) {
  CollectionReferring id = new CollectionReferring(this, reference, _elementType);
  _accumulator.add(id);
  return id;
}
 
源代码7 项目: caravan   文件: CustomCollectionDeserializer.java
CollectionReferring(CollectionReferringAccumulator parent,
    UnresolvedForwardReference reference, Class<?> contentType) {
  super(reference, contentType);
  _parent = parent;
}
 
源代码8 项目: allure2   文件: ListDeserializer.java
@Override
public Collection<Object> deserialize(JsonParser p, DeserializationContext ctxt,
                                      Collection<Object> result)
        throws IOException {
    // Ok: must point to START_ARRAY (or equivalent)
    if (!p.isExpectedStartArrayToken()) {
        return result;
    }
    // [databind#631]: Assign current value, to be accessible by custom serializers
    p.setCurrentValue(result);

    JsonDeserializer<Object> valueDes = _valueDeserializer;
    final TypeDeserializer typeDeser = _valueTypeDeserializer;
    CollectionReferringAccumulator referringAccumulator =
            (valueDes.getObjectIdReader() == null) ? null :
                    new CollectionReferringAccumulator(_containerType.getContentType().getRawClass(), result);

    JsonToken t;
    while ((t = p.nextToken()) != JsonToken.END_ARRAY) {
        try {
            Object value;
            if (t == JsonToken.VALUE_NULL) {
                if (_skipNullValues) {
                    continue;
                }
                value = _nullProvider.getNullValue(ctxt);
            } else if (typeDeser == null) {
                value = valueDes.deserialize(p, ctxt);
            } else {
                value = valueDes.deserializeWithType(p, ctxt, typeDeser);
            }
            if (referringAccumulator != null) {
                referringAccumulator.add(value);
            } else {
                result.add(value);
            }
        } catch (UnresolvedForwardReference reference) {
            if (referringAccumulator == null) {
                throw JsonMappingException
                        .from(p, "Unresolved forward reference but no identity info", reference);
            }
            ReadableObjectId.Referring ref = referringAccumulator.handleUnresolvedReference(reference);
            reference.getRoid().appendReferring(ref);
        } catch (Exception e) {
            boolean wrap = (ctxt == null) || ctxt.isEnabled(DeserializationFeature.WRAP_EXCEPTIONS);
            if (!wrap) {
                ClassUtil.throwIfRTE(e);
            }
            throw JsonMappingException.wrapWithPath(e, result, result.size());
        }
    }
    return result;
}
 
 同包方法