/**
* Method that is to find all creators (constructors, factory methods)
* for the bean type to deserialize.
*/
protected void addDeserializerCreators(DeserializationConfig config,
BasicBeanDescription beanDesc,
BeanDeserializer deser)
throws JsonMappingException
{
AnnotationIntrospector intr = config.getAnnotationIntrospector();
boolean fixAccess = config.isEnabled(DeserializationConfig.Feature.CAN_OVERRIDE_ACCESS_MODIFIERS);
// First, let's figure out constructor/factor- based instantation
// 23-Jan-2010, tatus: but only for concrete types
if (beanDesc.getType().isConcrete()) {
Constructor<?> defaultCtor = beanDesc.findDefaultConstructor();
if (defaultCtor != null) {
if (fixAccess) {
ClassUtil.checkAndFixAccess(defaultCtor);
}
deser.setDefaultConstructor(defaultCtor);
}
}
// need to construct suitable visibility checker:
VisibilityChecker<?> vchecker = config.getDefaultVisibilityChecker();
if (!config.isEnabled(DeserializationConfig.Feature.AUTO_DETECT_CREATORS)) {
vchecker = vchecker.withCreatorVisibility(Visibility.NONE);
}
vchecker = config.getAnnotationIntrospector().findAutoDetectVisibility(beanDesc.getClassInfo(), vchecker);
CreatorContainer creators = new CreatorContainer(beanDesc.getBeanClass(), fixAccess);
_addDeserializerConstructors(config, beanDesc, vchecker, deser, intr, creators);
_addDeserializerFactoryMethods(config, beanDesc, vchecker, deser, intr, creators);
deser.setCreators(creators);
}
BeanDeserializerFactory.java 文件源码
java
阅读 28
收藏 0
点赞 0
评论 0
项目:RHome
作者:
评论列表
文章目录