@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 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); } }
return super.deserializeTypedFromAny(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);
@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); } }