return super.deserializeTypedFromAny(jp, ctxt); } catch (Exception e) { JsonDeserializer<Object> deser = _findDeserializer(ctxt, baseTypeName()); Object value = deser.deserialize(jp, ctxt); return value; return data; JsonDeserializer<Object> deser = _findDeserializer(ctxt, LinkedHashMap.class.getName()); Map<Object, Object> value = (Map) deser.deserialize(jp, ctxt); jp.nextToken(); JsonDeserializer<Object> deser = _findDeserializer(ctxt, baseTypeName()); Object value = deser.deserialize(jp, ctxt);
@Override public Object deserializeTypedFromObject(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { ClassLoader current = Thread.currentThread().getContextClassLoader(); try { Thread.currentThread().setContextClassLoader(_baseType.getRawClass().getClassLoader()); if (classesSet.contains(_baseType.getRawClass()) && !stripped.get()) { try { return super.deserializeTypedFromObject(jp, ctxt); } catch (Exception e) { JsonDeserializer<Object> deser = _findDeserializer(ctxt, baseTypeName()); Object value = deser.deserialize(jp, ctxt); return value; } } stripped.set(false); JsonDeserializer<Object> deser = _findDeserializer(ctxt, baseTypeName()); Object value = deser.deserialize(jp, ctxt); return value; } finally { Thread.currentThread().setContextClassLoader(current); } }
@Override public Object deserializeTypedFromScalar(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { ClassLoader current = Thread.currentThread().getContextClassLoader(); try { Thread.currentThread().setContextClassLoader(_baseType.getRawClass().getClassLoader()); if (classesSet.contains(_baseType.getRawClass())) { try { return super.deserializeTypedFromScalar(jp, ctxt); } catch (Exception e) { JsonDeserializer<Object> deser = _findDeserializer(ctxt, baseTypeName()); Object value = deser.deserialize(jp, ctxt); return value; } } JsonDeserializer<Object> deser = _findDeserializer(ctxt, baseTypeName()); Object value = deser.deserialize(jp, ctxt); return value; } finally { Thread.currentThread().setContextClassLoader(current); } }
@Override public TypeDeserializer buildTypeDeserializer(DeserializationConfig config, JavaType baseType, Collection<NamedType> subtypes) { if (useForType(baseType)) { if (_idType == JsonTypeInfo.Id.NONE) { return null; } TypeIdResolver idRes = idResolver(config, baseType, subtypes, false, true); switch (_includeAs) { case WRAPPER_OBJECT: return new CustomAsWrapperTypeDeserializer(baseType, idRes, _typeProperty, true, baseType); } } return super.buildTypeDeserializer(config, baseType, subtypes); }
@Override public Object deserializeTypedFromArray(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { ClassLoader current = Thread.currentThread().getContextClassLoader(); try { Thread.currentThread().setContextClassLoader(_baseType.getRawClass().getClassLoader()); JsonDeserializer<Object> deser = _findDeserializer(ctxt, baseTypeName()); Object value = deser.deserialize(jp, ctxt); return value; } finally { Thread.currentThread().setContextClassLoader(current); } }
@Override public TypeDeserializer forProperty(BeanProperty prop) { if (prop != null) { if (useForType(prop.getType()) || useForType(prop.getType().getContentType()) ) { return new CustomAsWrapperTypeDeserializer(this, prop); } } return super.forProperty(prop); }