Jdk8OptionalDeserializer.java
package tools.jackson.databind.ext.jdk8;
import java.util.Optional;
import tools.jackson.databind.*;
import tools.jackson.databind.deser.ValueInstantiator;
import tools.jackson.databind.deser.std.ReferenceTypeDeserializer;
import tools.jackson.databind.jsontype.TypeDeserializer;
public class Jdk8OptionalDeserializer
extends ReferenceTypeDeserializer<Optional<?>>
{
public Jdk8OptionalDeserializer(JavaType fullType, ValueInstantiator inst,
TypeDeserializer typeDeser, ValueDeserializer<?> deser)
{
super(fullType, inst, typeDeser, deser);
}
/*
/**********************************************************************
/* Abstract method implementations
/**********************************************************************
*/
@Override
public Jdk8OptionalDeserializer withResolved(TypeDeserializer typeDeser, ValueDeserializer<?> valueDeser) {
return new Jdk8OptionalDeserializer(_fullType, _valueInstantiator,
typeDeser, valueDeser);
}
@Override
public Optional<?> getNullValue(DeserializationContext ctxt) {
// 07-May-2019, tatu: changed for [databind#2303]
return Optional.ofNullable(_valueDeserializer.getNullValue(ctxt));
}
@Override
public Optional<?> referenceValue(Object contents) {
return Optional.ofNullable(contents);
}
@Override
public Object getReferenced(Optional<?> reference) {
// 23-Apr-2021, tatu: [modules-java8#214] Need to support empty
// for merging too
return reference.orElse(null);
}
@Override
public Optional<?> updateReference(Optional<?> reference, Object contents) {
return Optional.ofNullable(contents);
}
// Default ought to be fine:
// public Boolean supportsUpdate(DeserializationConfig config) { }
}