com.fasterxml.jackson.databind.jsontype.impl.AsExternalTypeDeserializer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ehcache Show documentation
Show all versions of ehcache Show documentation
Ehcache is an open source, standards-based cache used to boost performance,
offload the database and simplify scalability. Ehcache is robust, proven and full-featured and
this has made it the most widely-used Java-based cache.
package com.fasterxml.jackson.databind.jsontype.impl;
import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
import com.fasterxml.jackson.databind.BeanProperty;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.jsontype.TypeDeserializer;
import com.fasterxml.jackson.databind.jsontype.TypeIdResolver;
/**
* Type deserializer used with {@link As#EXTERNAL_PROPERTY} inclusion mechanism.
* Actual implementation may look bit strange since it depends on comprehensive
* pre-processing done by {@link com.fasterxml.jackson.databind.deser.BeanDeserializer}
* to basically transform external type id into structure that looks more like
* "wrapper-array" style inclusion. This intermediate form is chosen to allow
* supporting all possible JSON structures.
*/
public class AsExternalTypeDeserializer extends AsArrayTypeDeserializer
{
private static final long serialVersionUID = 1L;
/**
* @since 2.8
*/
public AsExternalTypeDeserializer(JavaType bt, TypeIdResolver idRes,
String typePropertyName, boolean typeIdVisible, JavaType defaultImpl)
{
super(bt, idRes, typePropertyName, typeIdVisible, defaultImpl);
}
public AsExternalTypeDeserializer(AsExternalTypeDeserializer src,
BeanProperty property) {
super(src, property);
}
@Override
public TypeDeserializer forProperty(BeanProperty prop) {
if (prop == _property) { // usually if it's null
return this;
}
return new AsExternalTypeDeserializer(this, prop);
}
@Override
public As getTypeInclusion() { return As.EXTERNAL_PROPERTY; }
// yes, very important distinction...
@Override
protected boolean _usesExternalId() {
return true;
}
}