com.fasterxml.jackson.databind.ext.CoreXMLDeserializers 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.ext;
import java.io.IOException;
import java.util.*;
import javax.xml.datatype.*;
import javax.xml.namespace.QName;
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.deser.Deserializers;
import com.fasterxml.jackson.databind.deser.std.FromStringDeserializer;
/**
* Container deserializers that handle "core" XML types: ones included in standard
* JDK 1.5. Types are directly needed by JAXB, but may be unavailable on some
* limited platforms; hence separate out from basic deserializer factory.
*/
public class CoreXMLDeserializers extends Deserializers.Base
{
/**
* Data type factories are thread-safe after instantiation (and
* configuration, if any); and since instantion (esp. implementation
* introspection) can be expensive we better reuse the instance.
*/
final static DatatypeFactory _dataTypeFactory;
static {
try {
_dataTypeFactory = DatatypeFactory.newInstance();
} catch (DatatypeConfigurationException e) {
throw new RuntimeException(e);
}
}
@Override
public JsonDeserializer findBeanDeserializer(JavaType type,
DeserializationConfig config, BeanDescription beanDesc)
{
Class raw = type.getRawClass();
if (raw == QName.class) {
return new Std(raw, TYPE_QNAME);
}
if (raw == XMLGregorianCalendar.class) {
return new Std(raw, TYPE_G_CALENDAR);
}
if (raw == Duration.class) {
return new Std(raw, TYPE_DURATION);
}
return null;
}
/*
/**********************************************************
/* Concrete deserializers
/**********************************************************
*/
protected final static int TYPE_DURATION = 1;
protected final static int TYPE_G_CALENDAR = 2;
protected final static int TYPE_QNAME = 3;
/**
* Combo-deserializer that supports deserialization of somewhat optional
* javax.xml types {@link QName}, {@link Duration} and {@link XMLGregorianCalendar}.
* Combined into a single class to eliminate bunch of one-off implementation
* classes, to reduce resulting jar size (mostly).
*
* @since 2.4
*/
public static class Std extends FromStringDeserializer