Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
package org.codehaus.jackson.map.jsontype.impl;
import java.io.IOException;
import org.codehaus.jackson.*;
import org.codehaus.jackson.annotate.JsonTypeInfo.As;
import org.codehaus.jackson.map.*;
import org.codehaus.jackson.map.jsontype.TypeIdResolver;
import org.codehaus.jackson.type.JavaType;
/**
* Type deserializer used with {@link As#WRAPPER_OBJECT}
* inclusion mechanism. Simple since JSON structure used is always
* the same, regardless of structure used for actual value: wrapping
* is done using a single-element JSON Object where type id is the key,
* and actual object data as the value.
*
* @author tatus
*/
public class AsWrapperTypeDeserializer extends TypeDeserializerBase
{
@Deprecated // since 1.9
public AsWrapperTypeDeserializer(JavaType bt, TypeIdResolver idRes, BeanProperty property) {
this(bt, idRes, property, null);
}
public AsWrapperTypeDeserializer(JavaType bt, TypeIdResolver idRes, BeanProperty property,
Class defaultImpl)
{
super(bt, idRes, property, null);
}
@Override
public As getTypeInclusion() {
return As.WRAPPER_OBJECT;
}
/**
* Deserializing type id enclosed using WRAPPER_OBJECT style is straightforward
*/
@Override
public Object deserializeTypedFromObject(JsonParser jp, DeserializationContext ctxt)
throws IOException, JsonProcessingException
{
return _deserialize(jp, ctxt);
}
@Override
public Object deserializeTypedFromArray(JsonParser jp, DeserializationContext ctxt)
throws IOException, JsonProcessingException
{
return _deserialize(jp, ctxt);
}
@Override
public Object deserializeTypedFromScalar(JsonParser jp, DeserializationContext ctxt)
throws IOException, JsonProcessingException
{
return _deserialize(jp, ctxt);
}
@Override
public Object deserializeTypedFromAny(JsonParser jp, DeserializationContext ctxt)
throws IOException, JsonProcessingException
{
return _deserialize(jp, ctxt);
}
/*
/***************************************************************
/* Internal methods
/***************************************************************
*/
/**
* Method that handles type information wrapper, locates actual
* subtype deserializer to use, and calls it to do actual
* deserialization.
*/
private final Object _deserialize(JsonParser jp, DeserializationContext ctxt)
throws IOException, JsonProcessingException
{
// first, sanity checks
if (jp.getCurrentToken() != JsonToken.START_OBJECT) {
throw ctxt.wrongTokenException(jp, JsonToken.START_OBJECT,
"need JSON Object to contain As.WRAPPER_OBJECT type information for class "+baseTypeName());
}
// should always get field name, but just in case...
if (jp.nextToken() != JsonToken.FIELD_NAME) {
throw ctxt.wrongTokenException(jp, JsonToken.FIELD_NAME,
"need JSON String that contains type id (for subtype of "+baseTypeName()+")");
}
JsonDeserializer