public class POJOPropertyBuilder extends BeanPropertyDefinition implements Comparable<POJOPropertyBuilder>
Modifier and Type | Class and Description |
---|---|
protected static class |
POJOPropertyBuilder.Linked<T>
Node used for creating simple linked lists to efficiently store small sets
of things.
|
protected static class |
POJOPropertyBuilder.MemberIterator<T extends AnnotatedMember> |
Modifier and Type | Field and Description |
---|---|
protected AnnotationIntrospector |
_annotationIntrospector |
protected MapperConfig<?> |
_config |
protected POJOPropertyBuilder.Linked<AnnotatedParameter> |
_ctorParameters |
protected POJOPropertyBuilder.Linked<AnnotatedField> |
_fields |
protected boolean |
_forSerialization
Whether property is being composed for serialization
(true) or deserialization (false)
|
protected POJOPropertyBuilder.Linked<AnnotatedMethod> |
_getters |
protected PropertyName |
_internalName
Original internal name, derived from accessor, of this
property.
|
protected PropertyMetadata |
_metadata |
protected PropertyName |
_name
External name of logical property; may change with
renaming (by new instance being constructed using
a new name)
|
protected AnnotationIntrospector.ReferenceProperty |
_referenceInfo
Lazily accessed information about this property iff it is a forward or
back reference.
|
protected POJOPropertyBuilder.Linked<AnnotatedMethod> |
_setters |
EMPTY_INCLUDE
Modifier | Constructor and Description |
---|---|
|
POJOPropertyBuilder(MapperConfig<?> config,
AnnotationIntrospector ai,
boolean forSerialization,
PropertyName internalName) |
protected |
POJOPropertyBuilder(MapperConfig<?> config,
AnnotationIntrospector ai,
boolean forSerialization,
PropertyName internalName,
PropertyName name) |
protected |
POJOPropertyBuilder(POJOPropertyBuilder src,
PropertyName newName) |
Modifier and Type | Method and Description |
---|---|
protected PropertyMetadata |
_getSetterInfo(PropertyMetadata metadata,
AnnotatedMember primary)
Helper method that contains logic for accessing and merging all setter
information that we needed, regarding things like possible merging
of property value, and handling of incoming nulls.
|
protected int |
_getterPriority(AnnotatedMethod m) |
protected Class<?> |
_rawTypeOf(AnnotatedMember m) |
protected AnnotatedMethod |
_selectSetter(AnnotatedMethod currM,
AnnotatedMethod nextM) |
protected AnnotatedMethod |
_selectSetterFromMultiple(POJOPropertyBuilder.Linked<AnnotatedMethod> curr,
POJOPropertyBuilder.Linked<AnnotatedMethod> next)
Helper method called in cases where we have encountered two setter methods
that have same precedence and cannot be resolved.
|
protected int |
_setterPriority(AnnotatedMethod m) |
void |
addAll(POJOPropertyBuilder src)
Method for adding all property members from specified collector into
this collector.
|
void |
addCtor(AnnotatedParameter a,
PropertyName name,
boolean explName,
boolean visible,
boolean ignored) |
void |
addField(AnnotatedField a,
PropertyName name,
boolean explName,
boolean visible,
boolean ignored) |
void |
addGetter(AnnotatedMethod a,
PropertyName name,
boolean explName,
boolean visible,
boolean ignored) |
void |
addSetter(AnnotatedMethod a,
PropertyName name,
boolean explName,
boolean visible,
boolean ignored) |
boolean |
anyExplicitsWithoutIgnoral() |
boolean |
anyIgnorals() |
boolean |
anyVisible() |
int |
compareTo(POJOPropertyBuilder other) |
boolean |
couldDeserialize() |
boolean |
couldSerialize() |
Collection<POJOPropertyBuilder> |
explode(Collection<PropertyName> newNames)
Method called when a previous call to
findExplicitNames() found
multiple distinct explicit names, and the property this builder represents
basically needs to be broken apart and replaced by a set of more than
one properties. |
JsonProperty.Access |
findAccess() |
Set<PropertyName> |
findExplicitNames()
Method called to find out set of explicit names for accessors
bound together due to implicit name.
|
JsonInclude.Value |
findInclusion()
Method used to check if this property has specific inclusion override
associated with it or not.
|
ObjectIdInfo |
findObjectIdInfo()
Method used to check whether this logical property indicates that
value POJOs should be written using additional Object Identifier
(or, when multiple references exist, all but first AS Object Identifier).
|
AnnotationIntrospector.ReferenceProperty |
findReferenceType()
Method used to find whether property is part of a bi-directional
reference.
|
Class<?>[] |
findViews()
Method used to find View-inclusion definitions for the property.
|
protected <T> T |
fromMemberAnnotations(com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder.WithMember<T> func)
Helper method used for finding annotation values, from accessors
relevant to current usage (deserialization, serialization)
|
protected <T> T |
fromMemberAnnotationsExcept(com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder.WithMember<T> func,
T defaultValue) |
AnnotatedParameter |
getConstructorParameter() |
Iterator<AnnotatedParameter> |
getConstructorParameters()
Additional method that may be called instead of
BeanPropertyDefinition.getConstructorParameter()
to get access to all constructor parameters, not just the highest priority one. |
AnnotatedField |
getField() |
protected AnnotatedField |
getFieldUnchecked()
Variant of
getField() that does NOT trigger pruning of
Field candidates. |
PropertyName |
getFullName() |
AnnotatedMethod |
getGetter() |
protected AnnotatedMethod |
getGetterUnchecked()
Variant of
getGetter() that does NOT trigger pruning of
getter candidates. |
String |
getInternalName()
Accessor that can be used to determine implicit name from underlying
element(s) before possible renaming.
|
PropertyMetadata |
getMetadata()
Method for accessing additional metadata.
|
String |
getName()
Accessor for name used for external representation (in JSON).
|
AnnotatedMember |
getPrimaryMember()
Method used to find the property member (getter, setter, field) that has
the highest precedence in current context (getter method when serializing,
if available, and so forth), if any.
|
protected AnnotatedMember |
getPrimaryMemberUnchecked() |
JavaType |
getPrimaryType()
Type determined from the primary member for the property being built,
considering precedence according to whether we are processing serialization
or deserialization.
|
Class<?> |
getRawPrimaryType() |
AnnotatedMethod |
getSetter() |
protected AnnotatedMethod |
getSetterUnchecked()
Variant of
getSetter() that does NOT trigger pruning of
setter candidates. |
PropertyName |
getWrapperName()
Accessor for finding wrapper name to use for property (if any).
|
boolean |
hasConstructorParameter() |
boolean |
hasField() |
boolean |
hasGetter() |
boolean |
hasName(PropertyName name) |
boolean |
hasSetter() |
boolean |
isExplicitlyIncluded()
Accessor that can be called to check whether property was included
due to an explicit marker (usually annotation), or just by naming
convention.
|
boolean |
isExplicitlyNamed()
Accessor that can be called to check whether property name was
due to an explicit marker (usually annotation), or just by naming
convention or use of "use-default-name" marker (annotation).
|
boolean |
isTypeId()
Method used to check whether this logical property has a marker
to indicate it should be used as the type id for polymorphic type
handling.
|
void |
mergeAnnotations(boolean forSerialization) |
void |
removeConstructors()
Mutator that will simply drop any constructor parameters property may have.
|
void |
removeIgnored()
Method called to remove all entries that are marked as
ignored.
|
JsonProperty.Access |
removeNonVisible(boolean inferMutators)
Deprecated.
|
JsonProperty.Access |
removeNonVisible(boolean inferMutators,
POJOPropertiesCollector parent) |
String |
toString() |
void |
trimByVisibility()
Method called to trim unnecessary entries, such as implicit
getter if there is an explict one available.
|
POJOPropertyBuilder |
withName(PropertyName newName)
Method that can be used to create a definition with
same settings as this one, but with different
(external) name; that is, one for which
BeanPropertyDefinition.getName() would return newName . |
POJOPropertyBuilder |
withSimpleName(String newSimpleName)
Alternate "mutant factory" that will only change simple name, but
leave other optional parts (like namespace) as is.
|
findReferenceName, getAccessor, getMutator, getNonConstructorMutator, isRequired
protected final boolean _forSerialization
protected final MapperConfig<?> _config
protected final AnnotationIntrospector _annotationIntrospector
protected final PropertyName _name
protected final PropertyName _internalName
protected POJOPropertyBuilder.Linked<AnnotatedField> _fields
protected POJOPropertyBuilder.Linked<AnnotatedParameter> _ctorParameters
protected POJOPropertyBuilder.Linked<AnnotatedMethod> _getters
protected POJOPropertyBuilder.Linked<AnnotatedMethod> _setters
protected transient PropertyMetadata _metadata
protected transient AnnotationIntrospector.ReferenceProperty _referenceInfo
public POJOPropertyBuilder(MapperConfig<?> config, AnnotationIntrospector ai, boolean forSerialization, PropertyName internalName)
protected POJOPropertyBuilder(MapperConfig<?> config, AnnotationIntrospector ai, boolean forSerialization, PropertyName internalName, PropertyName name)
protected POJOPropertyBuilder(POJOPropertyBuilder src, PropertyName newName)
public POJOPropertyBuilder withName(PropertyName newName)
BeanPropertyDefinition
BeanPropertyDefinition.getName()
would return newName
.withName
in class BeanPropertyDefinition
public POJOPropertyBuilder withSimpleName(String newSimpleName)
BeanPropertyDefinition
withSimpleName
in class BeanPropertyDefinition
public int compareTo(POJOPropertyBuilder other)
compareTo
in interface Comparable<POJOPropertyBuilder>
public String getName()
BeanPropertyDefinition
getName
in interface Named
getName
in class BeanPropertyDefinition
public PropertyName getFullName()
getFullName
in class BeanPropertyDefinition
public boolean hasName(PropertyName name)
hasName
in class BeanPropertyDefinition
public String getInternalName()
BeanPropertyDefinition
getInternalName
in class BeanPropertyDefinition
public PropertyName getWrapperName()
BeanPropertyDefinition
getWrapperName
in class BeanPropertyDefinition
public boolean isExplicitlyIncluded()
BeanPropertyDefinition
isExplicitlyIncluded
in class BeanPropertyDefinition
public boolean isExplicitlyNamed()
BeanPropertyDefinition
Note that entries that return true from this method will always
return true for BeanPropertyDefinition.isExplicitlyIncluded()
, but not necessarily
vice versa.
isExplicitlyNamed
in class BeanPropertyDefinition
public PropertyMetadata getMetadata()
BeanPropertyDefinition
getMetadata
in class BeanPropertyDefinition
protected PropertyMetadata _getSetterInfo(PropertyMetadata metadata, AnnotatedMember primary)
public JavaType getPrimaryType()
getPrimaryType
in class BeanPropertyDefinition
public Class<?> getRawPrimaryType()
getRawPrimaryType
in class BeanPropertyDefinition
public boolean hasGetter()
hasGetter
in class BeanPropertyDefinition
public boolean hasSetter()
hasSetter
in class BeanPropertyDefinition
public boolean hasField()
hasField
in class BeanPropertyDefinition
public boolean hasConstructorParameter()
hasConstructorParameter
in class BeanPropertyDefinition
public boolean couldDeserialize()
couldDeserialize
in class BeanPropertyDefinition
public boolean couldSerialize()
couldSerialize
in class BeanPropertyDefinition
public AnnotatedMethod getGetter()
getGetter
in class BeanPropertyDefinition
protected AnnotatedMethod getGetterUnchecked()
getGetter()
that does NOT trigger pruning of
getter candidates.public AnnotatedMethod getSetter()
getSetter
in class BeanPropertyDefinition
protected AnnotatedMethod getSetterUnchecked()
getSetter()
that does NOT trigger pruning of
setter candidates.protected AnnotatedMethod _selectSetterFromMultiple(POJOPropertyBuilder.Linked<AnnotatedMethod> curr, POJOPropertyBuilder.Linked<AnnotatedMethod> next)
curr
- next
- IllegalArgumentException
- If conflict could not be resolvedprotected AnnotatedMethod _selectSetter(AnnotatedMethod currM, AnnotatedMethod nextM)
public AnnotatedField getField()
getField
in class BeanPropertyDefinition
protected AnnotatedField getFieldUnchecked()
getField()
that does NOT trigger pruning of
Field candidates.public AnnotatedParameter getConstructorParameter()
getConstructorParameter
in class BeanPropertyDefinition
public Iterator<AnnotatedParameter> getConstructorParameters()
BeanPropertyDefinition
BeanPropertyDefinition.getConstructorParameter()
to get access to all constructor parameters, not just the highest priority one.getConstructorParameters
in class BeanPropertyDefinition
public AnnotatedMember getPrimaryMember()
BeanPropertyDefinition
Note: may throw IllegalArgumentException
in case problems are found
trying to getter or setter info.
Note: abstract since 2.5
getPrimaryMember
in class BeanPropertyDefinition
protected AnnotatedMember getPrimaryMemberUnchecked()
protected int _getterPriority(AnnotatedMethod m)
protected int _setterPriority(AnnotatedMethod m)
public Class<?>[] findViews()
BeanPropertyDefinition
findViews
in class BeanPropertyDefinition
public AnnotationIntrospector.ReferenceProperty findReferenceType()
BeanPropertyDefinition
findReferenceType
in class BeanPropertyDefinition
public boolean isTypeId()
BeanPropertyDefinition
isTypeId
in class BeanPropertyDefinition
public ObjectIdInfo findObjectIdInfo()
BeanPropertyDefinition
findObjectIdInfo
in class BeanPropertyDefinition
public JsonInclude.Value findInclusion()
BeanPropertyDefinition
findInclusion
in class BeanPropertyDefinition
public JsonProperty.Access findAccess()
public void addField(AnnotatedField a, PropertyName name, boolean explName, boolean visible, boolean ignored)
public void addCtor(AnnotatedParameter a, PropertyName name, boolean explName, boolean visible, boolean ignored)
public void addGetter(AnnotatedMethod a, PropertyName name, boolean explName, boolean visible, boolean ignored)
public void addSetter(AnnotatedMethod a, PropertyName name, boolean explName, boolean visible, boolean ignored)
public void addAll(POJOPropertyBuilder src)
public void removeIgnored()
@Deprecated public JsonProperty.Access removeNonVisible(boolean inferMutators)
public JsonProperty.Access removeNonVisible(boolean inferMutators, POJOPropertiesCollector parent)
inferMutators
- Whether mutators can be "pulled in" by visible
accessors or not.public void removeConstructors()
public void trimByVisibility()
public void mergeAnnotations(boolean forSerialization)
public boolean anyVisible()
public boolean anyIgnorals()
public boolean anyExplicitsWithoutIgnoral()
public Set<PropertyName> findExplicitNames()
public Collection<POJOPropertyBuilder> explode(Collection<PropertyName> newNames)
findExplicitNames()
found
multiple distinct explicit names, and the property this builder represents
basically needs to be broken apart and replaced by a set of more than
one properties.protected <T> T fromMemberAnnotations(com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder.WithMember<T> func)
protected <T> T fromMemberAnnotationsExcept(com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder.WithMember<T> func, T defaultValue)
protected Class<?> _rawTypeOf(AnnotatedMember m)
Copyright © 2008–2022 FasterXML. All rights reserved.