Java 类com.fasterxml.jackson.databind.deser.ValueInstantiators 实例源码
项目:bootique
文件:BQTimeModule.java
@Override
public void setupModule(SetupContext context) {
super.setupModule(context);
context.addValueInstantiators(new ValueInstantiators.Base() {
@Override
public ValueInstantiator findValueInstantiator(DeserializationConfig config,
BeanDescription beanDesc, ValueInstantiator defaultInstantiator) {
Class<?> raw = beanDesc.getBeanClass();
// 15-May-2015, tatu: In theory not safe, but in practice we do need to do "fuzzy" matching
// because we will (for now) be getting a subtype, but in future may want to downgrade
// to the common base type. Even more, serializer may purposefully force use of base type.
// So... in practice it really should always work, in the end. :)
if (ZoneId.class.isAssignableFrom(raw)) {
// let's assume we should be getting "empty" StdValueInstantiator here:
if (defaultInstantiator instanceof StdValueInstantiator) {
StdValueInstantiator inst = (StdValueInstantiator) defaultInstantiator;
// one further complication: we need ZoneId info, not sub-class
AnnotatedClass ac;
if (raw == ZoneId.class) {
ac = beanDesc.getClassInfo();
} else {
// we don't need Annotations, so constructing directly is fine here
// even if it's not generally recommended
ac = AnnotatedClass.construct(ZoneId.class, null, null);
}
if (!inst.canCreateFromString()) {
AnnotatedMethod factory = _findFactory(ac, "of", String.class);
if (factory != null) {
inst.configureFromStringCreator(factory);
}
// otherwise... should we indicate an error?
}
// return ZoneIdInstantiator.construct(config, beanDesc, defaultInstantiator);
}
}
return defaultInstantiator;
}
});
}
项目:QuizUpWinner
文件:DeserializerFactoryConfig.java
protected DeserializerFactoryConfig(Deserializers[] paramArrayOfDeserializers, KeyDeserializers[] paramArrayOfKeyDeserializers, BeanDeserializerModifier[] paramArrayOfBeanDeserializerModifier, AbstractTypeResolver[] paramArrayOfAbstractTypeResolver, ValueInstantiators[] paramArrayOfValueInstantiators)
{
Deserializers[] arrayOfDeserializers;
if (paramArrayOfDeserializers == null)
arrayOfDeserializers = NO_DESERIALIZERS;
else
arrayOfDeserializers = paramArrayOfDeserializers;
this._additionalDeserializers = arrayOfDeserializers;
KeyDeserializers[] arrayOfKeyDeserializers;
if (paramArrayOfKeyDeserializers == null)
arrayOfKeyDeserializers = DEFAULT_KEY_DESERIALIZERS;
else
arrayOfKeyDeserializers = paramArrayOfKeyDeserializers;
this._additionalKeyDeserializers = arrayOfKeyDeserializers;
BeanDeserializerModifier[] arrayOfBeanDeserializerModifier;
if (paramArrayOfBeanDeserializerModifier == null)
arrayOfBeanDeserializerModifier = NO_MODIFIERS;
else
arrayOfBeanDeserializerModifier = paramArrayOfBeanDeserializerModifier;
this._modifiers = arrayOfBeanDeserializerModifier;
AbstractTypeResolver[] arrayOfAbstractTypeResolver;
if (paramArrayOfAbstractTypeResolver == null)
arrayOfAbstractTypeResolver = NO_ABSTRACT_TYPE_RESOLVERS;
else
arrayOfAbstractTypeResolver = paramArrayOfAbstractTypeResolver;
this._abstractTypeResolvers = arrayOfAbstractTypeResolver;
ValueInstantiators[] arrayOfValueInstantiators;
if (paramArrayOfValueInstantiators == null)
arrayOfValueInstantiators = NO_VALUE_INSTANTIATORS;
else
arrayOfValueInstantiators = paramArrayOfValueInstantiators;
this._valueInstantiators = arrayOfValueInstantiators;
}
项目:QuizUpWinner
文件:DeserializerFactoryConfig.java
public DeserializerFactoryConfig withValueInstantiators(ValueInstantiators paramValueInstantiators)
{
if (paramValueInstantiators == null)
throw new IllegalArgumentException("Can not pass null resolver");
ValueInstantiators[] arrayOfValueInstantiators = (ValueInstantiators[])ArrayBuilders.insertInListNoDup(this._valueInstantiators, paramValueInstantiators);
return new DeserializerFactoryConfig(this._additionalDeserializers, this._additionalKeyDeserializers, this._modifiers, this._abstractTypeResolvers, arrayOfValueInstantiators);
}
项目:jackson-modules-java8
文件:JavaTimeModule.java
@Override
public void setupModule(SetupContext context) {
super.setupModule(context);
context.addValueInstantiators(new ValueInstantiators.Base() {
@Override
public ValueInstantiator findValueInstantiator(DeserializationConfig config,
BeanDescription beanDesc, ValueInstantiator defaultInstantiator)
{
JavaType type = beanDesc.getType();
Class<?> raw = type.getRawClass();
// 15-May-2015, tatu: In theory not safe, but in practice we do need to do "fuzzy" matching
// because we will (for now) be getting a subtype, but in future may want to downgrade
// to the common base type. Even more, serializer may purposefully force use of base type.
// So... in practice it really should always work, in the end. :)
if (ZoneId.class.isAssignableFrom(raw)) {
// let's assume we should be getting "empty" StdValueInstantiator here:
if (defaultInstantiator instanceof StdValueInstantiator) {
StdValueInstantiator inst = (StdValueInstantiator) defaultInstantiator;
// one further complication: we need ZoneId info, not sub-class
AnnotatedClass ac;
if (raw == ZoneId.class) {
ac = beanDesc.getClassInfo();
} else {
// we don't need Annotations, so constructing directly is fine here
// even if it's not generally recommended
ac = AnnotatedClassResolver.resolve(config,
config.constructType(ZoneId.class), config);
}
if (!inst.canCreateFromString()) {
AnnotatedMethod factory = _findFactory(ac, "of", String.class);
if (factory != null) {
inst.configureFromStringCreator(factory);
}
// otherwise... should we indicate an error?
}
// return ZoneIdInstantiator.construct(config, beanDesc, defaultInstantiator);
}
}
return defaultInstantiator;
}
});
}
项目:QuizUpWinner
文件:DeserializerFactoryConfig.java
public Iterable<ValueInstantiators> valueInstantiators()
{
return ArrayBuilders.arrayAsIterable(this._valueInstantiators);
}
项目:joyplus-tv
文件:Module.java
/**
* Method that module can use to register additional {@link com.fasterxml.jackson.databind.deser.ValueInstantiator}s,
* by adding {@link ValueInstantiators} object that gets called when
* instantatiator is needed by a deserializer.
*
* @param instantiators Object that can provide {@link com.fasterxml.jackson.databind.deser.ValueInstantiator}s for
* constructing POJO values during deserialization
*/
public void addValueInstantiators(ValueInstantiators instantiators);
项目:QuizUpWinner
文件:Module.java
public abstract void addValueInstantiators(ValueInstantiators paramValueInstantiators);