package com.fasterxml.jackson.databind.exc; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.BeanDescription; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.introspect.BeanPropertyDefinition; /** * Intermediate exception type used as the base class for all {@link JsonMappingException}s * that are due to problems with target type definition; usually a problem with * annotations used on a class or its properties. * This is in contrast to {@link MismatchedInputException} which * signals a problem with input to map. * * @since 2.9 */ @SuppressWarnings("serial") public class InvalidDefinitionException extends JsonMappingException { protected final JavaType _type; protected transient BeanDescription _beanDesc; protected transient BeanPropertyDefinition _property; protected InvalidDefinitionException(JsonParser p, String msg, JavaType type) { super(p, msg); _type = type; _beanDesc = null; _property = null; } protected InvalidDefinitionException(JsonGenerator g, String msg, JavaType type) { super(g, msg); _type = type; _beanDesc = null; _property = null; } protected InvalidDefinitionException(JsonParser p, String msg, BeanDescription bean, BeanPropertyDefinition prop) { super(p, msg); _type = (bean == null) ? null : bean.getType(); _beanDesc = bean; _property = prop; } protected InvalidDefinitionException(JsonGenerator g, String msg, BeanDescription bean, BeanPropertyDefinition prop) { super(g, msg); _type = (bean == null) ? null : bean.getType(); _beanDesc = bean; _property = prop; } public static InvalidDefinitionException from(JsonParser p, String msg, BeanDescription bean, BeanPropertyDefinition prop) { return new InvalidDefinitionException(p, msg, bean, prop); } public static InvalidDefinitionException from(JsonParser p, String msg, JavaType type) { return new InvalidDefinitionException(p, msg, type); } public static InvalidDefinitionException from(JsonGenerator g, String msg, BeanDescription bean, BeanPropertyDefinition prop) { return new InvalidDefinitionException(g, msg, bean, prop); } public static InvalidDefinitionException from(JsonGenerator g, String msg, JavaType type) { return new InvalidDefinitionException(g, msg, type); } /** * Accessor for type fully resolved type that had the problem; this should always * known and available, never <code>null</code> */ public JavaType getType() { return _type; } /** * Accessor for type definition (class) that had the definition problem, if any; may sometimes * be undefined or unknown; if so, returns <code>null</code>. */ public BeanDescription getBeanDescription() { return _beanDesc; } /** * Accessor for property that had the definition problem if any * (none, for example if the problem relates to type in general), * if known. If not known (or relevant), returns <code>null</code>. */ public BeanPropertyDefinition getProperty() { return _property; } }