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

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

源代码1 项目: lams   文件: AbstractDeserializer.java
/**
 * @since 2.9
 */
protected AbstractDeserializer(AbstractDeserializer base,
        ObjectIdReader objectIdReader, Map<String, SettableBeanProperty> props)
{
    _baseType = base._baseType;
    _backRefProperties = base._backRefProperties;
    _acceptString = base._acceptString;
    _acceptBoolean = base._acceptBoolean;
    _acceptInt = base._acceptInt;
    _acceptDouble = base._acceptDouble;

    _objectIdReader = objectIdReader;
    _properties = props;
}
 
源代码2 项目: lams   文件: DeserializationContext.java
/**
 * @since 2.8
 */
public <T> T reportUnresolvedObjectId(ObjectIdReader oidReader, Object bean)
    throws JsonMappingException
{
    String msg = String.format("No Object Id found for an instance of %s, to assign to property '%s'",
            ClassUtil.classNameOf(bean), oidReader.propertyName);
    return reportInputMismatch(oidReader.idProperty, msg);
}
 
源代码3 项目: lams   文件: DelegatingDeserializer.java
@Override
public ObjectIdReader getObjectIdReader() { return _delegatee.getObjectIdReader(); }
 
源代码4 项目: lams   文件: AbstractDeserializer.java
@Override
    public JsonDeserializer<?> createContextual(DeserializationContext ctxt,
            BeanProperty property) throws JsonMappingException
    {
        final AnnotationIntrospector intr = ctxt.getAnnotationIntrospector();
        if (property != null && intr != null) {
            final AnnotatedMember accessor = property.getMember();
            if (accessor != null) {
                ObjectIdInfo objectIdInfo = intr.findObjectIdInfo(accessor);
                if (objectIdInfo != null) { // some code duplication here as well (from BeanDeserializerFactory)
                    JavaType idType;
                    ObjectIdGenerator<?> idGen;
                    SettableBeanProperty idProp = null;
                    ObjectIdResolver resolver = ctxt.objectIdResolverInstance(accessor, objectIdInfo);

                    // 2.1: allow modifications by "id ref" annotations as well:
                    objectIdInfo = intr.findObjectReferenceInfo(accessor, objectIdInfo);
                    Class<?> implClass = objectIdInfo.getGeneratorType();

                    if (implClass == ObjectIdGenerators.PropertyGenerator.class) {
                        PropertyName propName = objectIdInfo.getPropertyName();
                        idProp = (_properties == null) ? null : _properties.get(propName.getSimpleName());
                        if (idProp == null) {
                            ctxt.reportBadDefinition(_baseType, String.format(
                                    "Invalid Object Id definition for %s: cannot find property with name '%s'",
                                    handledType().getName(), propName));
                        }
                        idType = idProp.getType();
                        idGen = new PropertyBasedObjectIdGenerator(objectIdInfo.getScope());
/*
                         ctxt.reportBadDefinition(_baseType, String.format(
/
"Invalid Object Id definition for abstract type %s: cannot use `PropertyGenerator` on polymorphic types using property annotation",
handledType().getName()));
*/
                    } else { // other types simpler
                        resolver = ctxt.objectIdResolverInstance(accessor, objectIdInfo);
                        JavaType type = ctxt.constructType(implClass);
                        idType = ctxt.getTypeFactory().findTypeParameters(type, ObjectIdGenerator.class)[0];
                        idGen = ctxt.objectIdGeneratorInstance(accessor, objectIdInfo);
                    }
                    JsonDeserializer<?> deser = ctxt.findRootValueDeserializer(idType);
                    ObjectIdReader oir = ObjectIdReader.construct(idType, objectIdInfo.getPropertyName(),
                             idGen, deser, idProp, resolver);
                    return new AbstractDeserializer(this, oir, null);
                }
            }
        }
        if (_properties == null) {
            return this;
        }
        // Need to ensure properties are dropped at this point, regardless
        return new AbstractDeserializer(this, _objectIdReader, null);
    }
 
源代码5 项目: lams   文件: BeanDeserializerBuilder.java
public void setObjectIdReader(ObjectIdReader r) {
    _objectIdReader = r;
}
 
源代码6 项目: lams   文件: BeanDeserializerBuilder.java
public ObjectIdReader getObjectIdReader() {
    return _objectIdReader;
}
 
源代码7 项目: requery   文件: EntityBeanDeserializer.java
EntityBeanDeserializer(BeanDeserializerBase source, ObjectIdReader reader) {
    super(source, reader);
}
 
源代码8 项目: gvnix   文件: DataBinderDeserializer.java
public DataBinderDeserializer(BeanDeserializerBase source,
        ObjectIdReader objectIdReader) {
    super(source, objectIdReader);
}
 
源代码9 项目: lams   文件: JsonDeserializer.java
/**
 * Accessor that can be used to check whether this deserializer
 * is expecting to possibly get an Object Identifier value instead of full value
 * serialization, and if so, should be able to resolve it to actual
 * Object instance to return as deserialized value.
 *<p>
 * Default implementation returns null, as support cannot be implemented
 * generically. Some standard deserializers (most notably
 * {@link com.fasterxml.jackson.databind.deser.BeanDeserializer})
 * do implement this feature, and may return reader instance, depending on exact
 * configuration of instance (which is based on type, and referring property).
 * 
 * @return ObjectIdReader used for resolving possible Object Identifier
 *    value, instead of full value serialization, if deserializer can do that;
 *    null if no Object Id is expected.
 * 
 * @since 2.0
 */
public ObjectIdReader getObjectIdReader() { return null; }
 
源代码10 项目: lams   文件: AbstractDeserializer.java
/**
 * Overridden to return true for those instances that are
 * handling value for which Object Identity handling is enabled
 * (either via value type or referring property).
 */
@Override
public ObjectIdReader getObjectIdReader() {
    return _objectIdReader;
}
 
源代码11 项目: gvnix   文件: DataBinderDeserializer.java
/**
 * {@inheritDoc}
 * 
 * Uses {@link DataBinderDeserializer}
 */
@Override
public BeanDeserializerBase withObjectIdReader(ObjectIdReader objectIdReader) {
    return new DataBinderDeserializer(this, objectIdReader);
}
 
 类方法
 同包方法