Class BasicBeanDescription

java.lang.Object
org.codehaus.jackson.map.BeanDescription
org.codehaus.jackson.map.introspect.BasicBeanDescription

public class BasicBeanDescription extends BeanDescription
Default BeanDescription implementation. Can theoretically be subclassed to customize some aspects of property introspection.
  • Field Details

    • _config

      protected final MapperConfig<?> _config
    • _annotationIntrospector

      protected final AnnotationIntrospector _annotationIntrospector
    • _classInfo

      protected final AnnotatedClass _classInfo
      Information collected about the class introspected.
    • _bindings

      protected TypeBindings _bindings
      We may need type bindings for the bean type. If so, we'll construct it lazily
    • _properties

      protected final List<BeanPropertyDefinition> _properties
      Properties collected for the POJO.
    • _anySetterMethod

      protected AnnotatedMethod _anySetterMethod
    • _injectables

      protected Map<Object,AnnotatedMember> _injectables
    • _ignoredPropertyNames

      protected Set<String> _ignoredPropertyNames
      Set of properties that can be ignored during deserialization, due to being marked as ignored.
    • _ignoredPropertyNamesForDeser

      protected Set<String> _ignoredPropertyNamesForDeser
      Since:
      1.9.4
    • _jsonValueMethod

      protected AnnotatedMethod _jsonValueMethod
    • _anyGetterMethod

      protected AnnotatedMethod _anyGetterMethod
  • Constructor Details

  • Method Details

    • forDeserialization

      public static BasicBeanDescription forDeserialization(POJOPropertiesCollector coll)
      Factory method to use for constructing an instance to use for building deserializers.
      Since:
      1.9
    • forSerialization

      public static BasicBeanDescription forSerialization(POJOPropertiesCollector coll)
      Factory method to use for constructing an instance to use for building serializers.
      Since:
      1.9
    • forOtherUse

      public static BasicBeanDescription forOtherUse(MapperConfig<?> config, JavaType type, AnnotatedClass ac)
      Factory method to use for constructing an instance to use for purposes other than building serializers or deserializers; will only have information on class, not on properties.
      Since:
      1.9
    • getClassInfo

      public AnnotatedClass getClassInfo()
      Specified by:
      getClassInfo in class BeanDescription
      Since:
      1.9
    • findProperties

      public List<BeanPropertyDefinition> findProperties()
      Specified by:
      findProperties in class BeanDescription
      Returns:
      Ordered Map with logical property name as key, and matching getter method as value.
    • findJsonValueMethod

      public AnnotatedMethod findJsonValueMethod()
      Method for locating the getter method that is annotated with JsonValue annotation, if any. If multiple ones are found, an error is reported by throwing IllegalArgumentException
      Specified by:
      findJsonValueMethod in class BeanDescription
    • getIgnoredPropertyNames

      public Set<String> getIgnoredPropertyNames()
      Specified by:
      getIgnoredPropertyNames in class BeanDescription
    • getIgnoredPropertyNamesForDeser

      public Set<String> getIgnoredPropertyNamesForDeser()
    • hasKnownClassAnnotations

      public boolean hasKnownClassAnnotations()
      Method for checking whether class being described has any annotations recognized by registered annotation introspector.
      Specified by:
      hasKnownClassAnnotations in class BeanDescription
    • getClassAnnotations

      public Annotations getClassAnnotations()
      Description copied from class: BeanDescription
      Method for accessing collection of annotations the bean class has.
      Specified by:
      getClassAnnotations in class BeanDescription
    • bindingsForBeanType

      public TypeBindings bindingsForBeanType()
      Description copied from class: BeanDescription
      Accessor for type bindings that may be needed to fully resolve types of member object, such as return and argument types of methods and constructors, and types of fields.
      Specified by:
      bindingsForBeanType in class BeanDescription
    • resolveType

      public JavaType resolveType(Type jdkType)
      Description copied from class: BeanDescription
      Method for resolving given JDK type, using this bean as the generic type resolution context.
      Specified by:
      resolveType in class BeanDescription
    • findDefaultConstructor

      public AnnotatedConstructor findDefaultConstructor()
      Method that will locate the no-arg constructor for this class, if it has one, and that constructor has not been marked as ignorable.
      Specified by:
      findDefaultConstructor in class BeanDescription
      Since:
      1.9
    • findAnySetter

      public AnnotatedMethod findAnySetter() throws IllegalArgumentException
      Method used to locate the method of introspected class that implements JsonAnySetter. If no such method exists null is returned. If more than one are found, an exception is thrown. Additional checks are also made to see that method signature is acceptable: needs to take 2 arguments, first one String or Object; second any can be any type.
      Specified by:
      findAnySetter in class BeanDescription
      Throws:
      IllegalArgumentException
    • findInjectables

      public Map<Object,AnnotatedMember> findInjectables()
      Specified by:
      findInjectables in class BeanDescription
    • getConstructors

      public List<AnnotatedConstructor> getConstructors()
    • findMethod

      public AnnotatedMethod findMethod(String name, Class<?>[] paramTypes)
    • instantiateBean

      public Object instantiateBean(boolean fixAccess)
      Method called to create a "default instance" of the bean, currently only needed for obtaining default field values which may be used for suppressing serialization of fields that have "not changed".
      Parameters:
      fixAccess - If true, method is allowed to fix access to the default constructor (to be able to call non-public constructor); if false, has to use constructor as is.
      Returns:
      Instance of class represented by this descriptor, if suitable default constructor was found; null otherwise.
    • getFactoryMethods

      public List<AnnotatedMethod> getFactoryMethods()
    • findSingleArgConstructor

      public Constructor<?> findSingleArgConstructor(Class<?>... argTypes)
      Method that can be called to locate a single-arg constructor that takes specified exact type (will not accept supertype constructors)
      Parameters:
      argTypes - Type(s) of the argument that we are looking for
    • findFactoryMethod

      public Method findFactoryMethod(Class<?>... expArgTypes)
      Method that can be called to find if introspected class declares a static "valueOf" factory method that returns an instance of introspected type, given one of acceptable types.
      Parameters:
      expArgTypes - Types that the matching single argument factory method can take: will also accept super types of these types (ie. arg just has to be assignable from expArgType)
    • isFactoryMethod

      protected boolean isFactoryMethod(AnnotatedMethod am)
    • findCreatorPropertyNames

      public List<String> findCreatorPropertyNames()
      Method for getting ordered list of named Creator properties. Returns an empty list is none found. If multiple Creator methods are defined, order between properties from different methods is undefined; however, properties for each such Creator are ordered properly relative to each other. For the usual case of just a single Creator, named properties are thus properly ordered.
    • findSerializationInclusion

      public JsonSerialize.Inclusion findSerializationInclusion(JsonSerialize.Inclusion defValue)
      Method for determining whether null properties should be written out for a Bean of introspected type. This is based on global feature (lowest priority, passed as argument) and per-class annotation (highest priority).
    • findAnyGetter

      public AnnotatedMethod findAnyGetter() throws IllegalArgumentException
      Method used to locate the method of introspected class that implements JsonAnyGetter. If no such method exists null is returned. If more than one are found, an exception is thrown.
      Specified by:
      findAnyGetter in class BeanDescription
      Throws:
      IllegalArgumentException
      Since:
      1.6
    • findBackReferenceProperties

      public Map<String,AnnotatedMember> findBackReferenceProperties()
      Method for locating all back-reference properties (setters, fields) bean has
      Since:
      1.6
    • _findPropertyFields

      public LinkedHashMap<String,AnnotatedField> _findPropertyFields(Collection<String> ignoredProperties, boolean forSerialization)
      Parameters:
      ignoredProperties - (optional) names of properties to ignore; any fields that would be recognized as one of these properties is ignored.
      forSerialization - If true, will collect serializable property fields; if false, deserializable
      Returns:
      Ordered Map with logical property name as key, and matching field as value.
    • findGetters

      public LinkedHashMap<String,AnnotatedMethod> findGetters(VisibilityChecker<?> visibilityChecker, Collection<String> ignoredProperties)
      Specified by:
      findGetters in class BeanDescription
    • findSetters

      public LinkedHashMap<String,AnnotatedMethod> findSetters(VisibilityChecker<?> visibilityChecker)
      Specified by:
      findSetters in class BeanDescription
    • findSerializableFields

      public LinkedHashMap<String,AnnotatedField> findSerializableFields(VisibilityChecker<?> visibilityChecker, Collection<String> ignoredProperties)
      Specified by:
      findSerializableFields in class BeanDescription
    • findDeserializableFields

      public LinkedHashMap<String,AnnotatedField> findDeserializableFields(VisibilityChecker<?> visibilityChecker, Collection<String> ignoredProperties)
      Specified by:
      findDeserializableFields in class BeanDescription