public InternalTypeDeserializer(Class<T> baseClass, TypeIdResolver typeIdResolver) { super(baseClass); this.typeDeserializer = new AsPropertyTypeDeserializer(SimpleType.construct(baseClass), typeIdResolver, TYPE_PROPERTY, false, null); }
public WideningAsPropertyTypeDeserializer(AsPropertyTypeDeserializer src, BeanProperty property) { super(src, property); }
@SuppressWarnings("deprecation") @Override public DynamicBean deserializeWithType(JsonParser jp, DeserializationContext ctxt, TypeDeserializer typeDeserializer) throws IOException, JsonProcessingException { ObjectMapper tMapper = (ObjectMapper) jp.getCodec(); JsonNode tJsonRootNode = tMapper.readTree(jp); ObjectNode tRootNode = null; if (tJsonRootNode.isObject()) { tRootNode = (ObjectNode) tJsonRootNode; } else { tRootNode = tMapper.createObjectNode(); tRootNode.put("value", tJsonRootNode); } JsonNode tDynamicBeanClassNameNode = tRootNode.get(typeDeserializer .getPropertyName()); String tDynamicBeanClassName = ((AsPropertyTypeDeserializer) typeDeserializer) .baseTypeName(); if (tDynamicBeanClassNameNode != null) { tDynamicBeanClassName = tRootNode.get( typeDeserializer.getPropertyName()).asText(); } try { ClassLoader tCurrentThreadLoader = Thread.currentThread() .getContextClassLoader(); @SuppressWarnings("unchecked") Class<? extends DynamicBean> tDynamicBeanClass = (Class<? extends DynamicBean>) Class .forName(tDynamicBeanClassName, true, tCurrentThreadLoader); DynamicBean tDeserializerDynamicBean = DynamicBeanFactory .parseJSONNode(tRootNode, tDynamicBeanClass); // clean up the @class field tDeserializerDynamicBean.deleteField(DealField .useCustomField(typeDeserializer.getPropertyName())); return tDeserializerDynamicBean; } catch (ClassNotFoundException ex) { LOG.warn("Cannot parse Dynamic Bean class " + tDynamicBeanClassName + ", returning null.", ex); return getNullValue(); } }
public DynamicPropertyTypeDeserializer(final AsPropertyTypeDeserializer src, final BeanProperty property) { super(src, property); }