BeanProperty
Date: 2016-12-04

com.fasterxml.jackson.databind

## Interface BeanProperty

- All Superinterfaces:
    Named
  All Known Implementing Classes:
    AttributePropertyWriter, BeanProperty.Std, BeanPropertyWriter, ConcreteBeanPropertyBase, CreatorProperty, FieldProperty, InnerClassProperty, ManagedReferenceProperty, MapProperty, MethodProperty, ObjectIdReferenceProperty, ObjectIdValueProperty, PropertyWriter, SettableBeanProperty, SetterlessProperty, UnwrappingBeanPropertyWriter, ValueInjector, VirtualBeanPropertyWriter

      public interface BeanProperty
      extends Named

  Bean properties are logical entities that represent data that Java objects (POJOs (Plain Old Java Objects), sometimes also called "beans") contain; and that are accessed using accessors (methods like getters and setters, fields, constructor parametrers). Instances allow access to annotations directly associated to property (via field or method), as well as contextual annotations (annotations for class that contains properties).

  Instances are not typically passed when constructing serializers and deserializers, but rather only passed when context is known when `ContextualSerializer` and `ContextualDeserializer` resolution occurs (`createContextual(...)` method is called). References may (need to) be retained by serializers and deserializers, especially when further resolving dependant handlers like value serializers/deserializers or structured types.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface and Description
    --- | ---
    `static class` | `BeanProperty.Std` Simple stand-alone implementation, useful as a placeholder or base class for more complex implementations.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static com.fasterxml.jackson.annotation.JsonFormat.Value` | `EMPTY_FORMAT`
    `static com.fasterxml.jackson.annotation.JsonInclude.Value` | `EMPTY_INCLUDE`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `depositSchemaProperty(JsonObjectFormatVisitor objectVisitor, SerializerProvider provider)` Method that can be called to visit the type structure that this property is part of.
    `com.fasterxml.jackson.annotation.JsonFormat.Value` | `findFormatOverrides(AnnotationIntrospector intr)` Deprecated. since 2.8 use `findPropertyFormat(com.fasterxml.jackson.databind.cfg.MapperConfig<?>, java.lang.Class<?>)` instead.
    `com.fasterxml.jackson.annotation.JsonFormat.Value` | `findPropertyFormat(MapperConfig<?> config, java.lang.Class<?> baseType)` Helper method used to look up format settings applicable to this property, considering both possible per-type configuration settings
    `com.fasterxml.jackson.annotation.JsonInclude.Value` | `findPropertyInclusion(MapperConfig<?> config, java.lang.Class<?> baseType)` Convenience method that is roughly equivalent to
    `<A extends java.lang.annotation.Annotation> A` | `getAnnotation(java.lang.Class<A> acls)` Method for finding annotation associated with this property; meaning annotation associated with one of entities used to access property.
    `<A extends java.lang.annotation.Annotation> A` | `getContextAnnotation(java.lang.Class<A> acls)` Method for finding annotation associated with context of this property; usually class in which member is declared (or its subtype if processing subtype).
    `PropertyName` | `getFullName()` Method for getting full name definition, including possible format-specific additional properties (such as namespace when using XML backend).
    `AnnotatedMember` | `getMember()` Method for accessing primary physical entity that represents the property; annotated field, method or constructor property.
    `PropertyMetadata` | `getMetadata()` Accessor for additional optional information about property.
    `java.lang.String` | `getName()` Method to get logical name of the property
    `JavaType` | `getType()` Method to get declared type of the property.
    `PropertyName` | `getWrapperName()` If property is indicated to be wrapped, name of wrapper element to use.
    `boolean` | `isRequired()` Whether value for property is marked as required using annotations or associated schema.
    `boolean` | `isVirtual()` Accessor for checking whether there is an actual physical property behind this property abstraction or not.

- - ### Field Detail

    - #### EMPTY_FORMAT

          static final com.fasterxml.jackson.annotation.JsonFormat.Value EMPTY_FORMAT

    - #### EMPTY_INCLUDE

          static final com.fasterxml.jackson.annotation.JsonInclude.Value EMPTY_INCLUDE

  - ### Method Detail

    - #### getName

          java.lang.String getName()

      Method to get logical name of the property
      Specified by:
        `getName` in interface `Named`

    - #### getFullName

          PropertyName getFullName()

      Method for getting full name definition, including possible format-specific additional properties (such as namespace when using XML backend).
      Since:
        2.3

    - #### getType

          JavaType getType()

      Method to get declared type of the property.

    - #### getWrapperName

          PropertyName getWrapperName()

      If property is indicated to be wrapped, name of wrapper element to use.
      Since:
        2.2

    - #### getMetadata

          PropertyMetadata getMetadata()

      Accessor for additional optional information about property.
      Returns:
        Metadata about property; never null.
      Since:
        2.3

    - #### isRequired

          boolean isRequired()

      Whether value for property is marked as required using annotations or associated schema. Equivalent to: `getMetadata().isRequired()`
      Since:
        2.2

    - #### isVirtual

          boolean isVirtual()

      Accessor for checking whether there is an actual physical property behind this property abstraction or not.
      Since:
        2.7

    - #### getAnnotation

          <A extends java.lang.annotation.Annotation> A getAnnotation(java.lang.Class<A> acls)

      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 `AnnotationIntrospector`s) should be accessed through `AnnotationIntrospector`.

    - #### getContextAnnotation

          <A extends java.lang.annotation.Annotation> A getContextAnnotation(java.lang.Class<A> acls)

      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 `AnnotationIntrospector`s) should be accessed through `AnnotationIntrospector`.

    - #### getMember

          AnnotatedMember getMember()

      Method for accessing primary physical entity that represents the property; annotated field, method or constructor property.

    - #### findFormatOverrides

          @Deprecated
          com.fasterxml.jackson.annotation.JsonFormat.Value findFormatOverrides(AnnotationIntrospector intr)

      Deprecated. since 2.8 use `findPropertyFormat(com.fasterxml.jackson.databind.cfg.MapperConfig<?>, java.lang.Class<?>)` instead.
      Convenience method that is roughly equivalent to

             return intr.findFormat(getMember());

      and specifically does NOT try to find per-type format defaults to merge; use `findPropertyFormat(com.fasterxml.jackson.databind.cfg.MapperConfig<?>, java.lang.Class<?>)` if such defaults would be useful.
      Since:
        2.6

    - #### findPropertyFormat

          com.fasterxml.jackson.annotation.JsonFormat.Value findPropertyFormat(MapperConfig<?> config,
                                                                             java.lang.Class<?> baseType)

      Helper method used to look up format settings applicable to this property, considering both possible per-type configuration settings
      Since:
        2.7

    - #### findPropertyInclusion

          com.fasterxml.jackson.annotation.JsonInclude.Value findPropertyInclusion(MapperConfig<?> config,
                                                                                 java.lang.Class<?> baseType)

      Convenience method that is roughly equivalent to

             return config.getAnnotationIntrospector().findPropertyInclusion(getMember());

      but also considers global default settings for inclusion
      Since:
        2.7

    - #### depositSchemaProperty

          void depositSchemaProperty(JsonObjectFormatVisitor objectVisitor,
                                   SerializerProvider provider)
                                     throws JsonMappingException

      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`.

      NOTE: Starting with 2.7, takes explicit `SerializerProvider` argument to reduce the need to rely on provider visitor may or may not have assigned.

      Parameters:
        `objectVisitor` - Visitor to used as the callback handler
      Throws:
        `JsonMappingException`
      Since:
        2.2 (although signature did change in 2.7)