package com.fasterxml.jackson.databind.deser.impl;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.deser.NullValueProvider;
import com.fasterxml.jackson.databind.exc.InvalidNullException;
import com.fasterxml.jackson.databind.util.AccessPattern;
/**
* Simple {@link NullValueProvider} that will always throw a
* {@link InvalidNullException} when a null is encountered.
*/
public class NullsFailProvider
implements NullValueProvider, java.io.Serializable
{
private static final long serialVersionUID = 1L;
protected final PropertyName _name;
protected final JavaType _type;
protected NullsFailProvider(PropertyName name, JavaType type) {
_name = name;
_type = type;
}
public static NullsFailProvider constructForProperty(BeanProperty prop) {
return new NullsFailProvider(prop.getFullName(), prop.getType());
}
public static NullsFailProvider constructForRootValue(JavaType t) {
return new NullsFailProvider(null, t);
}
@Override
public AccessPattern getNullAccessPattern() {
// Must be called every time to effect the exception...
return AccessPattern.DYNAMIC;
}
@Override
public Object getNullValue(DeserializationContext ctxt)
throws JsonMappingException {
throw InvalidNullException.from(ctxt, _name, _type);
}
}