com.fasterxml.jackson.databind.deser.std.ClassDeserializer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jersey-all Show documentation
Show all versions of jersey-all Show documentation
jersey-all is a rebundled verison of Jersey as one OSGi bundle.
package com.fasterxml.jackson.databind.deser.std;
import java.io.IOException;
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
import com.fasterxml.jackson.databind.util.ClassUtil;
@JacksonStdImpl
public class ClassDeserializer
extends StdScalarDeserializer>
{
private static final long serialVersionUID = 1L;
public final static ClassDeserializer instance = new ClassDeserializer();
public ClassDeserializer() { super(Class.class); }
@Override
public Class> deserialize(JsonParser jp, DeserializationContext ctxt)
throws IOException, JsonProcessingException
{
JsonToken curr = jp.getCurrentToken();
// Currently will only accept if given simple class name
if (curr == JsonToken.VALUE_STRING) {
String className = jp.getText().trim();
try {
return ctxt.findClass(className);
} catch (Exception e) {
throw ctxt.instantiationException(_valueClass, ClassUtil.getRootCause(e));
}
}
throw ctxt.mappingException(_valueClass, curr);
}
}