throws JsonMappingException final DeserializationConfig config = ctxt.getConfig(); return factory.createEnumDeserializer(ctxt, type, beanDesc); return factory.createArrayDeserializer(ctxt, (ArrayType) type, beanDesc); MapLikeType mlt = (MapLikeType) type; if (mlt.isTrueMapType()) { return factory.createMapDeserializer(ctxt,(MapType) mlt, beanDesc); return factory.createMapLikeDeserializer(ctxt, mlt, beanDesc); CollectionLikeType clt = (CollectionLikeType) type; if (clt.isTrueCollectionType()) { return factory.createCollectionDeserializer(ctxt, (CollectionType) clt, beanDesc); return factory.createCollectionLikeDeserializer(ctxt, clt, beanDesc); return factory.createReferenceDeserializer(ctxt, (ReferenceType) type, beanDesc); return factory.createTreeDeserializer(config, type, beanDesc); return factory.createBeanDeserializer(ctxt, type, beanDesc);
throws JsonMappingException final DeserializationConfig config = ctxt.getConfig(); type = factory.mapAbstractType(config, type); JsonDeserializer<Object> deser = findDeserializerFromAnnotation(ctxt, beanDesc.getClassInfo()); if (deser != null) { JavaType newType = modifyTypeByAnnotation(ctxt, beanDesc.getClassInfo(), type); if (newType != type) { type = newType; return (JsonDeserializer<Object>) factory.createBuilderBasedDeserializer( ctxt, type, beanDesc, builder); return (JsonDeserializer<Object>) _createDeserializer2(ctxt, factory, type, beanDesc); JavaType delegateType = conv.getInputType(ctxt.getTypeFactory());
/** * Method called to get hold of a deserializer to use for deserializing * keys for {@link java.util.Map}. * * @throws JsonMappingException if there are fatal problems with * accessing suitable key deserializer; including that of not * finding any serializer */ public KeyDeserializer findKeyDeserializer(DeserializationContext ctxt, DeserializerFactory factory, JavaType type) throws JsonMappingException { KeyDeserializer kd = factory.createKeyDeserializer(ctxt, type); if (kd == null) { // if none found, need to use a placeholder that'll fail return _handleUnknownKeyDeserializer(ctxt, type); } // First: need to resolve? if (kd instanceof ResolvableDeserializer) { ((ResolvableDeserializer) kd).resolve(ctxt); } return kd; }
type = factory.mapAbstractType(config, type); return (JsonDeserializer<Object>) factory.createBuilderBasedDeserializer( ctxt, type, beanDesc, builder); return (JsonDeserializer<Object>) factory.createEnumDeserializer(ctxt, type, beanDesc); return (JsonDeserializer<Object>) factory.createArrayDeserializer(ctxt, (ArrayType) type, beanDesc); MapLikeType mlt = (MapLikeType) type; if (mlt.isTrueMapType()) { return (JsonDeserializer<Object>) factory.createMapDeserializer(ctxt, (MapType) mlt, beanDesc); return (JsonDeserializer<Object>) factory.createMapLikeDeserializer(ctxt, mlt, beanDesc); CollectionLikeType clt = (CollectionLikeType) type; if (clt.isTrueCollectionType()) { return (JsonDeserializer<Object>) factory.createCollectionDeserializer(ctxt, (CollectionType) clt, beanDesc); return (JsonDeserializer<Object>) factory.createCollectionLikeDeserializer(ctxt, clt, beanDesc); return (JsonDeserializer<Object>) factory.createTreeDeserializer(config, type, beanDesc);
@Override public JsonDeserializer<?> createContextual(DeserializationContext ctxt, BeanProperty property) throws JsonMappingException { if (ConditionalEnabledHelper.isEnabled(ctxt, property)) { BeanDescription beanDesc = ctxt.getConfig().introspect(property.getType()); JsonDeserializer<?> deserializer = ctxt.getFactory().createMapDeserializer(ctxt, (MapType) property.getType(), beanDesc); if (deserializer instanceof ContextualDeserializer) { deserializer = ((ContextualDeserializer) deserializer).createContextual(ctxt, property); } return new JSonMapEntryArrayDeSerializer(property.getType().getKeyType(), property.getType().getContentType(), deserializer); } BeanDescription beanDesc = ctxt.getConfig().introspect(property.getType()); JsonDeserializer<?> deserializer = ctxt.getFactory().createMapDeserializer(ctxt, (MapType) property.getType(), beanDesc); if (deserializer instanceof ContextualDeserializer) { return ((ContextualDeserializer) deserializer).createContextual(ctxt, property); } return deserializer; } }
private AnnotatedType resolveDeserializableType(Annotated accessor, AnnotatedType realType, JavaType baseType, ObjectMapper objectMapper) { AnnotationIntrospector introspector = objectMapper.getDeserializationConfig().getAnnotationIntrospector(); try { objectMapper.getDeserializationContext().getFactory().mapAbstractType(objectMapper.getDeserializationConfig(), objectMapper.constructType(Map.class)); JavaType refined = introspector.refineDeserializationType(objectMapper.getDeserializationConfig(), accessor, baseType); Class<?> raw = ClassUtils.getRawType(realType.getType()); if (!refined.getRawClass().equals(raw)) { if (GenericTypeReflector.isSuperType(realType.getType(), refined.getRawClass())) { AnnotatedType candidate = GenericTypeReflector.getExactSubType(realType, refined.getRawClass()); if (!ClassUtils.isMissingTypeParameters(candidate.getType())) { return candidate; } } return GenericTypeReflector.updateAnnotations(TypeUtils.toJavaType(refined), realType.getAnnotations()); } } catch (JsonMappingException e) { /*no-op*/ } catch (Exception e) { log.warn("Failed to determine the deserializable type for " + GenericTypeReflector.getTypeName(realType.getType()) + " due to an exception", e); } return realType; }
type = factory.mapAbstractType(config, type); return (JsonDeserializer<Object>) factory.createBuilderBasedDeserializer( ctxt, type, beanDesc, builder); return (JsonDeserializer<Object>) factory.createEnumDeserializer(ctxt, type, beanDesc); return (JsonDeserializer<Object>) factory.createArrayDeserializer(ctxt, (ArrayType) type, beanDesc); MapLikeType mlt = (MapLikeType) type; if (mlt.isTrueMapType()) { return (JsonDeserializer<Object>) factory.createMapDeserializer(ctxt, (MapType) mlt, beanDesc); return (JsonDeserializer<Object>) factory.createMapLikeDeserializer(ctxt, mlt, beanDesc); CollectionLikeType clt = (CollectionLikeType) type; if (clt.isTrueCollectionType()) { return (JsonDeserializer<Object>) factory.createCollectionDeserializer(ctxt, (CollectionType) clt, beanDesc); return (JsonDeserializer<Object>) factory.createCollectionLikeDeserializer(ctxt, clt, beanDesc); return (JsonDeserializer<Object>) factory.createTreeDeserializer(config, type, beanDesc);
throws JsonMappingException final DeserializationConfig config = ctxt.getConfig(); return factory.createEnumDeserializer(ctxt, type, beanDesc); return factory.createArrayDeserializer(ctxt, (ArrayType) type, beanDesc); return factory.createMapDeserializer(ctxt,(MapType) mlt, beanDesc); return factory.createMapLikeDeserializer(ctxt, mlt, beanDesc); CollectionLikeType clt = (CollectionLikeType) type; if (clt.isTrueCollectionType()) { return factory.createCollectionDeserializer(ctxt, (CollectionType) clt, beanDesc); return factory.createCollectionLikeDeserializer(ctxt, clt, beanDesc); return factory.createTreeDeserializer(config, type, beanDesc); return factory.createBeanDeserializer(ctxt, type, beanDesc);
throws JsonMappingException final DeserializationConfig config = ctxt.getConfig(); type = factory.mapAbstractType(config, type); JsonDeserializer<Object> deser = findDeserializerFromAnnotation(ctxt, beanDesc.getClassInfo()); if (deser != null) { JavaType newType = modifyTypeByAnnotation(ctxt, beanDesc.getClassInfo(), type); if (newType != type) { type = newType; return (JsonDeserializer<Object>) factory.createBuilderBasedDeserializer( ctxt, type, beanDesc, builder); return (JsonDeserializer<Object>) _createDeserializer2(ctxt, factory, type, beanDesc); JavaType delegateType = conv.getInputType(ctxt.getTypeFactory());
/** * Method called to get hold of a deserializer to use for deserializing * keys for {@link java.util.Map}. * * @throws JsonMappingException if there are fatal problems with * accessing suitable key deserializer; including that of not * finding any serializer */ public KeyDeserializer findKeyDeserializer(DeserializationContext ctxt, DeserializerFactory factory, JavaType type) throws JsonMappingException { KeyDeserializer kd = factory.createKeyDeserializer(ctxt, type); if (kd == null) { // if none found, need to use a placeholder that'll fail return _handleUnknownKeyDeserializer(ctxt, type); } // First: need to resolve? if (kd instanceof ResolvableDeserializer) { ((ResolvableDeserializer) kd).resolve(ctxt); } return kd; }
throws JsonMappingException final DeserializationConfig config = ctxt.getConfig(); return factory.createEnumDeserializer(ctxt, type, beanDesc); return factory.createArrayDeserializer(ctxt, (ArrayType) type, beanDesc); return factory.createMapDeserializer(ctxt,(MapType) mlt, beanDesc); return factory.createMapLikeDeserializer(ctxt, mlt, beanDesc); CollectionLikeType clt = (CollectionLikeType) type; if (clt.isTrueCollectionType()) { return factory.createCollectionDeserializer(ctxt, (CollectionType) clt, beanDesc); return factory.createCollectionLikeDeserializer(ctxt, clt, beanDesc); return factory.createTreeDeserializer(config, type, beanDesc); return factory.createBeanDeserializer(ctxt, type, beanDesc);
throws JsonMappingException final DeserializationConfig config = ctxt.getConfig(); type = factory.mapAbstractType(config, type); JsonDeserializer<Object> deser = findDeserializerFromAnnotation(ctxt, beanDesc.getClassInfo()); if (deser != null) { JavaType newType = modifyTypeByAnnotation(ctxt, beanDesc.getClassInfo(), type); if (newType != type) { type = newType; return (JsonDeserializer<Object>) factory.createBuilderBasedDeserializer( ctxt, type, beanDesc, builder); return (JsonDeserializer<Object>) _createDeserializer2(ctxt, factory, type, beanDesc); JavaType delegateType = conv.getInputType(ctxt.getTypeFactory());
/** * Method called to get hold of a deserializer to use for deserializing * keys for {@link java.util.Map}. * * @throws JsonMappingException if there are fatal problems with * accessing suitable key deserializer; including that of not * finding any serializer */ public KeyDeserializer findKeyDeserializer(DeserializationContext ctxt, DeserializerFactory factory, JavaType type) throws JsonMappingException { KeyDeserializer kd = factory.createKeyDeserializer(ctxt, type); if (kd == null) { // if none found, need to use a placeholder that'll fail return _handleUnknownKeyDeserializer(type); } // First: need to resolve? if (kd instanceof ResolvableDeserializer) { ((ResolvableDeserializer) kd).resolve(ctxt); } return kd; }
throws JsonMappingException final DeserializationConfig config = ctxt.getConfig(); return factory.createEnumDeserializer(ctxt, type, beanDesc); return factory.createArrayDeserializer(ctxt, (ArrayType) type, beanDesc); return factory.createMapDeserializer(ctxt,(MapType) mlt, beanDesc); return factory.createMapLikeDeserializer(ctxt, mlt, beanDesc); CollectionLikeType clt = (CollectionLikeType) type; if (clt.isTrueCollectionType()) { return factory.createCollectionDeserializer(ctxt, (CollectionType) clt, beanDesc); return factory.createCollectionLikeDeserializer(ctxt, clt, beanDesc); return factory.createReferenceDeserializer(ctxt, (ReferenceType) type, beanDesc); return factory.createTreeDeserializer(config, type, beanDesc); return factory.createBeanDeserializer(ctxt, type, beanDesc);
throws JsonMappingException final DeserializationConfig config = ctxt.getConfig(); type = factory.mapAbstractType(config, type); JsonDeserializer<Object> deser = findDeserializerFromAnnotation(ctxt, beanDesc.getClassInfo()); if (deser != null) { JavaType newType = modifyTypeByAnnotation(ctxt, beanDesc.getClassInfo(), type); if (newType != type) { type = newType; return (JsonDeserializer<Object>) factory.createBuilderBasedDeserializer( ctxt, type, beanDesc, builder); return (JsonDeserializer<Object>) _createDeserializer2(ctxt, factory, type, beanDesc); JavaType delegateType = conv.getInputType(ctxt.getTypeFactory());
/** * Method called to get hold of a deserializer to use for deserializing * keys for {@link java.util.Map}. * * @throws JsonMappingException if there are fatal problems with * accessing suitable key deserializer; including that of not * finding any serializer */ public KeyDeserializer findKeyDeserializer(DeserializationContext ctxt, DeserializerFactory factory, JavaType type) throws JsonMappingException { KeyDeserializer kd = factory.createKeyDeserializer(ctxt, type); if (kd == null) { // if none found, need to use a placeholder that'll fail return _handleUnknownKeyDeserializer(type); } // First: need to resolve? if (kd instanceof ResolvableDeserializer) { ((ResolvableDeserializer) kd).resolve(ctxt); } return kd; }
throws JsonMappingException final DeserializationConfig config = ctxt.getConfig(); return factory.createEnumDeserializer(ctxt, type, beanDesc); return factory.createArrayDeserializer(ctxt, (ArrayType) type, beanDesc); MapLikeType mlt = (MapLikeType) type; if (mlt.isTrueMapType()) { return factory.createMapDeserializer(ctxt,(MapType) mlt, beanDesc); return factory.createMapLikeDeserializer(ctxt, mlt, beanDesc); CollectionLikeType clt = (CollectionLikeType) type; if (clt.isTrueCollectionType()) { return factory.createCollectionDeserializer(ctxt, (CollectionType) clt, beanDesc); return factory.createCollectionLikeDeserializer(ctxt, clt, beanDesc); return factory.createReferenceDeserializer(ctxt, (ReferenceType) type, beanDesc); return factory.createTreeDeserializer(config, type, beanDesc); return factory.createBeanDeserializer(ctxt, type, beanDesc);
throws JsonMappingException final DeserializationConfig config = ctxt.getConfig(); type = factory.mapAbstractType(config, type); JsonDeserializer<Object> deser = findDeserializerFromAnnotation(ctxt, beanDesc.getClassInfo()); if (deser != null) { JavaType newType = modifyTypeByAnnotation(ctxt, beanDesc.getClassInfo(), type); if (newType != type) { type = newType; return (JsonDeserializer<Object>) factory.createBuilderBasedDeserializer( ctxt, type, beanDesc, builder); return (JsonDeserializer<Object>) _createDeserializer2(ctxt, factory, type, beanDesc); JavaType delegateType = conv.getInputType(ctxt.getTypeFactory());
/** * Method called to get hold of a deserializer to use for deserializing * keys for {@link java.util.Map}. * * @throws JsonMappingException if there are fatal problems with * accessing suitable key deserializer; including that of not * finding any serializer */ public KeyDeserializer findKeyDeserializer(DeserializationContext ctxt, DeserializerFactory factory, JavaType type) throws JsonMappingException { KeyDeserializer kd = factory.createKeyDeserializer(ctxt, type); if (kd == null) { // if none found, need to use a placeholder that'll fail return _handleUnknownKeyDeserializer(type); } // First: need to resolve? if (kd instanceof ResolvableDeserializer) { ((ResolvableDeserializer) kd).resolve(ctxt); } return kd; }
/** * Method called to get hold of a deserializer to use for deserializing * keys for {@link java.util.Map}. * * @throws JsonMappingException if there are fatal problems with * accessing suitable key deserializer; including that of not * finding any serializer */ public KeyDeserializer findKeyDeserializer(DeserializationContext ctxt, DeserializerFactory factory, JavaType type) throws JsonMappingException { KeyDeserializer kd = factory.createKeyDeserializer(ctxt, type); if (kd == null) { // if none found, need to use a placeholder that'll fail return _handleUnknownKeyDeserializer(type); } // First: need to resolve? if (kd instanceof ResolvableDeserializer) { ((ResolvableDeserializer) kd).resolve(ctxt); } return kd; }