org.codehaus.jackson.map.deser.ValueInstantiators 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 org.codehaus.jackson.map.deser;
import org.codehaus.jackson.map.*;
/**
* Interface for providers of {@link ValueInstantiator} instances.
* Implemented when an object wants to provide custom value instantiators,
* usually to support custom value types with alternate constructors, or
* which need specified post-processing after construction but before
* binding data.
*
* @since 1.9
*/
public interface ValueInstantiators
{
/**
* Method called to find the {@link ValueInstantiator} to use for creating
* instances of specified type during deserialization.
* Note that a default value instantiator is always created first and passed;
* if an implementation does not want to modify or replace it, it has to return
* passed instance as is (returning null is an error)
*
* @param config Deserialization configuration in use
* @param beanDesc Additional information about POJO type to be instantiated:
* description will always be of type
* {@link org.codehaus.jackson.map.introspect.BasicBeanDescription} (that is,
* safe to cast to this more specific type)
* @param defaultInstantiator Instantiator that will be used if no changes are made;
* passed to allow custom instances to use annotation-provided information
* (note, however, that earlier {@link ValueInstantiators} may have changed it to
* a custom instantiator already)
*
* @return Instantiator to use; either defaultInstantiator
that was passed,
* or a custom variant; can not be null.
*/
public ValueInstantiator findValueInstantiator(DeserializationConfig config,
BeanDescription beanDesc, ValueInstantiator defaultInstantiator);
/**
* Basic "NOP" implementation that can be used as the base class for custom implementations.
* Safer to extend (instead of implementing {@link ValueInstantiators}) in case later
* Jackson versions add new methods in base interface.
*/
public static class Base implements ValueInstantiators
{
@Override
public ValueInstantiator findValueInstantiator(DeserializationConfig config,
BeanDescription beanDesc, ValueInstantiator defaultInstantiator) {
return defaultInstantiator;
}
}
}