Class SettableBeanProperty

java.lang.Object
tools.jackson.databind.introspect.ConcreteBeanPropertyBase
tools.jackson.databind.deser.SettableBeanProperty
All Implemented Interfaces:
Named, BeanProperty, FullyNamed
Direct Known Subclasses:
CreatorProperty, MethodProperty, ObjectIdReferenceProperty, ObjectIdValueProperty, SettableBeanProperty.Delegating, SetterlessProperty

public abstract class SettableBeanProperty extends ConcreteBeanPropertyBase
Base class for deserializable properties of a bean: contains both type and name definitions, and reflection-based set functionality. Concrete sub-classes implement details, so that field- and setter-backed properties, as well as a few more esoteric variations, can be handled.
  • Field Details

    • MISSING_VALUE_DESERIALIZER

      protected static final ValueDeserializer<Object> MISSING_VALUE_DESERIALIZER
      To avoid nasty NPEs, let's use a placeholder for _valueDeserializer, if real deserializer is not (yet) available.
    • _propName

      protected final PropertyName _propName
      Logical name of the property (often but not always derived from the setter method name)
    • _type

      protected final JavaType _type
      Base type for property; may be a supertype of actual value.
    • _wrapperName

      protected final PropertyName _wrapperName
    • _contextAnnotations

      protected final transient Annotations _contextAnnotations
      Class that contains this property (either class that declares the property or one of its subclasses), class that is deserialized using deserializer that contains this property.
    • _valueDeserializer

      protected final ValueDeserializer<Object> _valueDeserializer
      Deserializer used for handling property value.
    • _valueTypeDeserializer

      protected final TypeDeserializer _valueTypeDeserializer
      If value will contain type information (to support polymorphic handling), this is the type deserializer used to handle type resolution.
    • _nullProvider

      protected final NullValueProvider _nullProvider
      Entity used for possible translation from `null` into non-null value of type of this property. Often same as _valueDeserializer, but not always.
    • _managedReferenceName

      protected String _managedReferenceName
      If property represents a managed (forward) reference, we will need the name of reference for later linking.

      TODO: should try to make immutable.

    • _objectIdInfo

      protected ObjectIdInfo _objectIdInfo
      This is the information for object identity associated with the property.

      TODO: should try to make immutable.

    • _viewMatcher

      protected ViewMatcher _viewMatcher
      Helper object used for checking whether this property is to be included in the active view, if property is view-specific; null otherwise.

      TODO: should try to make immutable.

    • _propertyIndex

      protected int _propertyIndex
      Index of property (within all property of a bean); assigned when all properties have been collected. Order of entries is arbitrary, but once indexes are assigned they are not changed.

      TODO: should try to make immutable if at all possible

  • Constructor Details

  • Method Details

    • withValueDeserializer

      public abstract SettableBeanProperty withValueDeserializer(ValueDeserializer<?> deser)
      Fluent factory method for constructing and returning a new instance with specified value deserializer. Note that this method should NOT change configuration of this instance.
      Parameters:
      deser - Deserializer to assign to the new property instance
      Returns:
      Newly constructed instance, if value deserializer differs from the one used for this instance; or 'this' if not.
    • withName

      public abstract SettableBeanProperty withName(PropertyName newName)
      Fluent factory method for constructing and returning a new instance with specified property name. Note that this method should NOT change configuration of this instance.
      Parameters:
      newName - Name to use for the new instance.
      Returns:
      Newly constructed instance, if property name differs from the one used for this instance; or 'this' if not.
    • withSimpleName

      public SettableBeanProperty withSimpleName(String simpleName)
    • withNullProvider

      public abstract SettableBeanProperty withNullProvider(NullValueProvider nva)
    • setManagedReferenceName

      public void setManagedReferenceName(String n)
    • setObjectIdInfo

      public void setObjectIdInfo(ObjectIdInfo objectIdInfo)
    • setViews

      public void setViews(Class<?>[] views)
    • assignIndex

      public void assignIndex(int index)
      Method used to assign index for property.
    • fixAccess

      public void fixAccess(DeserializationConfig config)
      Method called to ensure that the mutator has proper access rights to be called, as per configuration. Overridden by implementations that have mutators that require access, fields and setters.
    • markAsIgnorable

      public void markAsIgnorable()
    • isIgnorable

      public boolean isIgnorable()
    • isMerging

      public boolean isMerging()
      Whether this property requires merging of values (read-then-write)
      Since:
      2.20
    • getName

      public final String getName()
    • getFullName

      public PropertyName getFullName()
    • getType

      public JavaType getType()
      Description copied from interface: BeanProperty
      Method to get declared type of the property.
    • getWrapperName

      public PropertyName getWrapperName()
      Description copied from interface: BeanProperty
      If property is indicated to be wrapped, name of wrapper element to use.
    • getMember

      public abstract AnnotatedMember getMember()
      Description copied from interface: BeanProperty
      Method for accessing primary physical entity that represents the property; annotated field, method or constructor property.
    • getAnnotation

      public abstract <A extends Annotation> A getAnnotation(Class<A> acls)
      Description copied from interface: BeanProperty
      Method for finding annotation associated with this property; meaning annotation associated with one of entities used to access property.

      Note that this method should only be called for custom annotations; access to standard Jackson annotations (or ones supported by alternate AnnotationIntrospectors) should be accessed through AnnotationIntrospector.

    • getContextAnnotation

      public <A extends Annotation> A getContextAnnotation(Class<A> acls)
      Description copied from interface: BeanProperty
      Method for finding annotation associated with context of this property; usually class in which member is declared (or its subtype if processing subtype).

      Note that this method should only be called for custom annotations; access to standard Jackson annotations (or ones supported by alternate AnnotationIntrospectors) should be accessed through AnnotationIntrospector.

    • depositSchemaProperty

      public void depositSchemaProperty(JsonObjectFormatVisitor objectVisitor, SerializationContext provider)
      Description copied from interface: BeanProperty
      Method that can be called to visit the type structure that this property is part of. Note that not all implementations support traversal with this method; those that do not should throw UnsupportedOperationException.
      Parameters:
      objectVisitor - Visitor to used as the callback handler
    • getDeclaringClass

      public Class<?> getDeclaringClass()
    • getManagedReferenceName

      public String getManagedReferenceName()
    • getObjectIdInfo

      public ObjectIdInfo getObjectIdInfo()
    • hasValueDeserializer

      public boolean hasValueDeserializer()
    • hasValueTypeDeserializer

      public boolean hasValueTypeDeserializer()
    • getValueDeserializer

      public ValueDeserializer<Object> getValueDeserializer()
    • getValueTypeDeserializer

      public TypeDeserializer getValueTypeDeserializer()
    • getNullValueProvider

      public NullValueProvider getNullValueProvider()
    • visibleInView

      public boolean visibleInView(Class<?> activeView)
    • hasViews

      public boolean hasViews()
    • getPropertyIndex

      public int getPropertyIndex()
      Method for accessing unique index of this property; indexes are assigned once all properties of a BeanDeserializer have been collected.
      Returns:
      Index of this property
    • getCreatorIndex

      public int getCreatorIndex()
      Method for accessing index of the creator property: for other types of properties will simply return -1.
    • getInjectableValueId

      public Object getInjectableValueId()
      Accessor for id of injectable value, if this bean property supports value injection.
    • isInjectionOnly

      public boolean isInjectionOnly()
      Accessor for checking whether this property is injectable, and if so, ONLY injectable (will not bind from input). Currently (2.11) can only return true for Creator-backed properties.
      Returns:
      True if (and only if) property has injector that is also defined NOT to bind from input.
    • deserializeAndSet

      public abstract void deserializeAndSet(JsonParser p, DeserializationContext ctxt, Object instance) throws JacksonException
      Method called to deserialize appropriate value, given parser (and context), and set it using appropriate mechanism. Pre-condition is that passed parser must point to the first token that should be consumed to produce the value (the only value for scalars, multiple for Objects and Arrays).
      Throws:
      JacksonException
    • deserializeSetAndReturn

      public abstract Object deserializeSetAndReturn(JsonParser p, DeserializationContext ctxt, Object instance) throws JacksonException
      Alternative to deserializeAndSet(tools.jackson.core.JsonParser, tools.jackson.databind.DeserializationContext, java.lang.Object) that returns either return value of setter method called (if one is), or null to indicate that no return value is available. Mostly used to support Builder style deserialization.
      Throws:
      JacksonException
    • set

      public abstract void set(DeserializationContext ctxt, Object instance, Object value)
      Method called to assign given value to this property, on specified Object.

      Note: this is an optional operation, not supported by all implementations, creator-backed properties for example do not support this method.

    • setAndReturn

      public abstract Object setAndReturn(DeserializationContext ctxt, Object instance, Object value)
      Method called to assign given value to this property, on specified Object, and return whatever delegating accessor returned (if anything)

      Note: this is an optional operation, not supported by all implementations, creator-backed properties for example do not support this method.

    • deserialize

      public final Object deserialize(JsonParser p, DeserializationContext ctxt) throws JacksonException
      This method is needed by some specialized bean deserializers, and also called by some deserializeAndSet(tools.jackson.core.JsonParser, tools.jackson.databind.DeserializationContext, java.lang.Object) implementations.

      Pre-condition is that passed parser must point to the first token that should be consumed to produce the value (the only value for scalars, multiple for Objects and Arrays).

      Note that this method is final for performance reasons: to override functionality you must override other methods that call this method; this method should also not be called directly unless you really know what you are doing (and probably not even then).

      Throws:
      JacksonException
    • deserializeWith

      public final Object deserializeWith(JsonParser p, DeserializationContext ctxt, Object toUpdate) throws JacksonException
      Throws:
      JacksonException
    • unwrapped

      Returns a copy of this property, unwrapped using given NameTransformer.
      Since:
      2.19
    • _throwAsJacksonE

      protected void _throwAsJacksonE(JsonParser p, Throwable e, Object value) throws JacksonException
      Throws:
      JacksonException
    • _throwAsJacksonE

      protected void _throwAsJacksonE(JsonParser p, Throwable e) throws JacksonException
      Throws:
      JacksonException
    • toString

      public String toString()
      Overrides:
      toString in class Object