com.fasterxml.jackson.databind.introspect
Class BasicBeanDescription

java.lang.Object
  extended by com.fasterxml.jackson.databind.BeanDescription
      extended by com.fasterxml.jackson.databind.introspect.BasicBeanDescription

public class BasicBeanDescription
extends BeanDescription

Default BeanDescription implementation. Can theoretically be subclassed to customize some aspects of property introspection.


Field Summary
protected  AnnotationIntrospector _annotationIntrospector
           
protected  AnnotatedMember _anyGetter
           
protected  AnnotatedMethod _anySetterMethod
           
protected  TypeBindings _bindings
          We may need type bindings for the bean type.
protected  AnnotatedClass _classInfo
          Information collected about the class introspected.
protected  MapperConfig<?> _config
           
protected  Set<String> _ignoredPropertyNames
          Set of properties that can be ignored during deserialization, due to being marked as ignored.
protected  Map<Object,AnnotatedMember> _injectables
           
protected  AnnotatedMethod _jsonValueMethod
           
protected  ObjectIdInfo _objectIdInfo
          Details of Object Id to include, if any
protected  List<BeanPropertyDefinition> _properties
          Properties collected for the POJO.
 
Fields inherited from class com.fasterxml.jackson.databind.BeanDescription
_type
 
Constructor Summary
protected BasicBeanDescription(MapperConfig<?> config, JavaType type, AnnotatedClass classDef, List<BeanPropertyDefinition> props)
           
protected BasicBeanDescription(POJOPropertiesCollector coll)
           
 
Method Summary
 LinkedHashMap<String,AnnotatedField> _findPropertyFields(Collection<String> ignoredProperties, boolean forSerialization)
           
 TypeBindings bindingsForBeanType()
          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.
 AnnotatedMember findAnyGetter()
          Method used to locate the method of introspected class that implements JsonAnyGetter.
 AnnotatedMethod findAnySetter()
          Method used to locate the method of introspected class that implements JsonAnySetter.
 Map<String,AnnotatedMember> findBackReferenceProperties()
          Method for locating all back-reference properties (setters, fields) bean has
 List<String> findCreatorPropertyNames()
          Method for getting ordered list of named Creator properties.
 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.
 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.
 Map<Object,AnnotatedMember> findInjectables()
           
 AnnotatedMethod findJsonValueMethod()
          Method for locating the getter method that is annotated with JsonValue annotation, if any.
 AnnotatedMethod findMethod(String name, Class<?>[] paramTypes)
           
 Class<?> findPOJOBuilder()
          Method for checking if the POJO type has annotations to indicate that a builder is to be used for instantiating instances and handling data binding, instead of standard bean deserializer.
 JsonPOJOBuilder.Value findPOJOBuilderConfig()
          Method for finding configuration for POJO Builder class.
 List<BeanPropertyDefinition> findProperties()
           
 com.fasterxml.jackson.annotation.JsonInclude.Include findSerializationInclusion(com.fasterxml.jackson.annotation.JsonInclude.Include defValue)
          Method for determining whether null properties should be written out for a Bean of introspected type.
 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)
static BasicBeanDescription forDeserialization(POJOPropertiesCollector coll)
          Factory method to use for constructing an instance to use for building deserializers.
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.
static BasicBeanDescription forSerialization(POJOPropertiesCollector coll)
          Factory method to use for constructing an instance to use for building serializers.
 Annotations getClassAnnotations()
          Method for accessing collection of annotations the bean class has.
 AnnotatedClass getClassInfo()
          Method for accessing low-level information about Class this item describes.
 List<AnnotatedConstructor> getConstructors()
           
 List<AnnotatedMethod> getFactoryMethods()
           
 Set<String> getIgnoredPropertyNames()
           
 ObjectIdInfo getObjectIdInfo()
          Accessor for getting information about Object Id expected to be used for this POJO type, if any.
 boolean hasKnownClassAnnotations()
          Method for checking whether class being described has any annotations recognized by registered annotation introspector.
 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".
protected  boolean isFactoryMethod(AnnotatedMethod am)
           
 JavaType resolveType(Type jdkType)
          Method for resolving given JDK type, using this bean as the generic type resolution context.
 
Methods inherited from class com.fasterxml.jackson.databind.BeanDescription
getBeanClass, getType
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

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


_objectIdInfo

protected ObjectIdInfo _objectIdInfo
Details of Object Id to include, if any


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


_jsonValueMethod

protected AnnotatedMethod _jsonValueMethod

_anyGetter

protected AnnotatedMember _anyGetter
Constructor Detail

BasicBeanDescription

protected BasicBeanDescription(MapperConfig<?> config,
                               JavaType type,
                               AnnotatedClass classDef,
                               List<BeanPropertyDefinition> props)

BasicBeanDescription

protected BasicBeanDescription(POJOPropertiesCollector coll)
Method Detail

forDeserialization

public static BasicBeanDescription forDeserialization(POJOPropertiesCollector coll)
Factory method to use for constructing an instance to use for building deserializers.


forSerialization

public static BasicBeanDescription forSerialization(POJOPropertiesCollector coll)
Factory method to use for constructing an instance to use for building serializers.


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.


getClassInfo

public AnnotatedClass getClassInfo()
Description copied from class: BeanDescription
Method for accessing low-level information about Class this item describes.

Specified by:
getClassInfo in class BeanDescription

getObjectIdInfo

public ObjectIdInfo getObjectIdInfo()
Description copied from class: BeanDescription
Accessor for getting information about Object Id expected to be used for this POJO type, if any.

Specified by:
getObjectIdInfo in class BeanDescription

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()
Description copied from class: BeanDescription
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

hasKnownClassAnnotations

public boolean hasKnownClassAnnotations()
Description copied from class: BeanDescription
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()
Description copied from class: BeanDescription
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

findAnySetter

public AnnotatedMethod findAnySetter()
                              throws IllegalArgumentException
Description copied from class: BeanDescription
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()
Specified by:
getConstructors in class BeanDescription

instantiateBean

public Object instantiateBean(boolean fixAccess)
Description copied from class: BeanDescription
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".

Specified by:
instantiateBean in class BeanDescription
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.

findMethod

public AnnotatedMethod findMethod(String name,
                                  Class<?>[] paramTypes)
Specified by:
findMethod in class BeanDescription

getFactoryMethods

public List<AnnotatedMethod> getFactoryMethods()
Specified by:
getFactoryMethods in class BeanDescription

findSingleArgConstructor

public Constructor<?> findSingleArgConstructor(Class<?>... argTypes)
Description copied from class: BeanDescription
Method that can be called to locate a single-arg constructor that takes specified exact type (will not accept supertype constructors)

Specified by:
findSingleArgConstructor in class BeanDescription
Parameters:
argTypes - Type(s) of the argument that we are looking for

findFactoryMethod

public Method findFactoryMethod(Class<?>... expArgTypes)
Description copied from class: BeanDescription
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.

Specified by:
findFactoryMethod in class BeanDescription
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 com.fasterxml.jackson.annotation.JsonInclude.Include findSerializationInclusion(com.fasterxml.jackson.annotation.JsonInclude.Include 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).

Specified by:
findSerializationInclusion in class BeanDescription

findAnyGetter

public AnnotatedMember 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

findBackReferenceProperties

public Map<String,AnnotatedMember> findBackReferenceProperties()
Description copied from class: BeanDescription
Method for locating all back-reference properties (setters, fields) bean has

Specified by:
findBackReferenceProperties in class BeanDescription

findPOJOBuilder

public Class<?> findPOJOBuilder()
Description copied from class: BeanDescription
Method for checking if the POJO type has annotations to indicate that a builder is to be used for instantiating instances and handling data binding, instead of standard bean deserializer.

Specified by:
findPOJOBuilder in class BeanDescription

findPOJOBuilderConfig

public JsonPOJOBuilder.Value findPOJOBuilderConfig()
Description copied from class: BeanDescription
Method for finding configuration for POJO Builder class.

Specified by:
findPOJOBuilderConfig in class BeanDescription

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


Copyright © 2012 fasterxml.com. All Rights Reserved.