77import java .io .IOException ;
88
99import com .fasterxml .jackson .core .JsonParser ;
10- import com .fasterxml .jackson .core .JsonProcessingException ;
10+ import com .fasterxml .jackson .core .ObjectCodec ;
1111import com .fasterxml .jackson .databind .DeserializationContext ;
1212import com .fasterxml .jackson .databind .JavaType ;
1313import com .fasterxml .jackson .databind .JsonMappingException ;
1414import com .fasterxml .jackson .databind .JsonNode ;
15- import com .fasterxml .jackson .databind .ObjectMapper ;
1615import com .fasterxml .jackson .databind .deser .std .StdDeserializer ;
1716import com .fasterxml .jackson .databind .node .ObjectNode ;
1817import com .hubspot .algebra .ResultModule .Case ;
@@ -31,8 +30,8 @@ public ResultDeserializer(JavaType valueType) {
3130 @ Override
3231 public Result <?, ?> deserialize (JsonParser p ,
3332 DeserializationContext ctxt ) throws IOException {
34- ObjectMapper objectMapper = (( ObjectMapper ) p .getCodec () );
35- ObjectNode node = objectMapper .readTree (p );
33+ ObjectCodec codec = p .getCodec ();
34+ ObjectNode node = codec .readTree (p );
3635 JsonNode caseNode = node .findValue (CASE_FIELD_NAME );
3736
3837 if (caseNode == null ) {
@@ -43,16 +42,16 @@ public ResultDeserializer(JavaType valueType) {
4342 node .remove (CASE_FIELD_NAME );
4443
4544 if (resultCase .equalsIgnoreCase (Case .ERR .toString ())) {
46- Object err = deserializeValue (objectMapper , node , ERROR_FIELD_NAME , errType );
45+ Object err = deserializeValue (codec , node , ERROR_FIELD_NAME , errType );
4746 return Results .err (err );
4847 } else {
49- Object ok = deserializeValue (objectMapper , node , OK_FIELD_NAME , okType );
48+ Object ok = deserializeValue (codec , node , OK_FIELD_NAME , okType );
5049 return Results .ok (ok );
5150 }
5251 }
5352
5453 private static Object deserializeValue (
55- ObjectMapper objectMapper ,
54+ ObjectCodec codec ,
5655 ObjectNode node ,
5756 String fieldName ,
5857 JavaType type
@@ -62,7 +61,7 @@ private static Object deserializeValue(
6261 // Our version of Jackson doesn't allow custom deserialization of null
6362 return NullValue .get ();
6463 } else {
65- return objectMapper . readerFor ( type ). readValue (valueNode );
64+ return codec . readValue (valueNode . traverse ( codec ), type );
6665 }
6766 }
6867}
0 commit comments