public class JaxbAnnotationIntrospector extends AnnotationIntrospector implements Versioned
XmlAnyAttribute
not yet used (as of 1.5) but may be in future (as an alias for @JsonAnySetter?)
XmlAnyElement
not yet used, may be as per [JACKSON-253]
XmlAttachmentRef
: JSON does not support external attachments
XmlElementDecl
XmlElementRefs
because Jackson doesn't have any support for 'named' collection items -- however,
this may become partially supported as per [JACKSON-253].
XmlInlineBinaryData
since the underlying concepts
(like XOP) do not exist in JSON -- Jackson will always use inline base64 encoding as the method
XmlList
because JSON does have (or necessarily need)
method of serializing list of values as space-separated Strings
XmlMimeType
XmlMixed
since JSON has no concept of mixed content
XmlRegistry
XmlSchema
not used, unlikely to be used
XmlSchemaType
not used, unlikely to be used
XmlSchemaTypes
not used, unlikely to be used
XmlSeeAlso
not yet supported, but [ISSUE-1] filed to use it, so may be supported.
XmlValue
will have implicit property named 'value' on
its JSON object; although (as of 2.4) it should be possible to override this name
A note on compatibility with Jackson XML module: since this module does not depend on Jackson XML module, it is bit difficult to make sure we will properly expose all information. But effort is made (as of version 2.3.3) to expose this information, even without using a specific sub-class from that project.
AnnotationIntrospector.ReferenceProperty
Modifier and Type | Field and Description |
---|---|
protected JsonDeserializer<?> |
_dataHandlerDeserializer |
protected JsonSerializer<?> |
_dataHandlerSerializer |
protected boolean |
_ignoreXmlIDREF |
protected String |
_jaxbPackageName |
protected TypeFactory |
_typeFactory |
protected String |
_xmlValueName
When using
@XmlValue annotation, a placeholder name is assigned
to property (unless overridden by explicit name); this configuration
value specified what that name is. |
protected static boolean |
DEFAULT_IGNORE_XMLIDREF |
protected static String |
DEFAULT_NAME_FOR_XML_VALUE |
protected static JsonFormat.Value |
FORMAT_INT |
protected static JsonFormat.Value |
FORMAT_STRING |
protected static String |
MARKER_FOR_DEFAULT |
Constructor and Description |
---|
JaxbAnnotationIntrospector()
Deprecated.
Since 2.1, use the ctor that takes TypeFactory
|
JaxbAnnotationIntrospector(MapperConfig<?> config) |
JaxbAnnotationIntrospector(TypeFactory typeFactory) |
JaxbAnnotationIntrospector(TypeFactory typeFactory,
boolean ignoreXmlIDREF) |
Modifier and Type | Method and Description |
---|---|
protected Converter<Object,Object> |
_converter(XmlAdapter<?,?> adapter,
boolean forSerialization) |
protected Class<?> |
_doFindDeserializationType(Annotated a,
JavaType baseType) |
protected XmlAdapter<?,?> |
_findContentAdapter(Annotated ann,
boolean forSerialization) |
protected JavaType |
_fullDeserializationType(AnnotatedMember am) |
protected JavaType |
_fullSerializationType(AnnotatedMember am) |
protected String |
_propertyNameToString(PropertyName n) |
protected Class<?> |
_rawDeserializationType(Annotated a) |
protected Class<?> |
_rawSerializationType(Annotated a) |
protected TypeResolverBuilder<?> |
_typeResolverFromXmlElements(AnnotatedMember am) |
protected XmlAccessType |
findAccessType(Annotated ac)
Method for locating JAXB
XmlAccessType annotation value
for given annotated entity, if it has one, or inherits one from
its ancestors (in JAXB sense, package etc). |
VisibilityChecker<?> |
findAutoDetectVisibility(AnnotatedClass ac,
VisibilityChecker<?> checker)
Method for checking if annotations indicate changes to minimum visibility levels
needed for auto-detecting property elements (fields, methods, constructors).
|
Object |
findContentDeserializer(Annotated a)
Method for getting a deserializer definition for content (values) of
associated
Collection , array or
Map property. |
Object |
findContentSerializer(Annotated a)
Method for getting a serializer definition for content (values) of
associated
Collection , array or Map property. |
Object |
findDeserializationContentConverter(AnnotatedMember a)
Method for finding
Converter that annotated property
has indicated needs to be used for values of container type
(this also means that method should only be called for properties
of container types, List/Map/array properties). |
Class<?> |
findDeserializationContentType(Annotated a,
JavaType baseContentType)
Method for accessing additional narrowing type definition that a
method can have, to define more specific content type to use;
content refers to Map values and Collection/array elements.
|
Object |
findDeserializationConverter(Annotated a)
Method for finding
Converter that annotated entity
(property or class) has indicated to be used as part of
deserialization. |
Class<?> |
findDeserializationType(Annotated a,
JavaType baseType)
JAXB does allow specifying (more) concrete class for
deserialization by using \@XmlElement annotation.
|
Object |
findDeserializer(Annotated am)
Method for getting a deserializer definition on specified method
or field.
|
String |
findEnumValue(Enum<?> e)
!!! 12-Oct-2009, tatu: This is hideously slow implementation,
called potentially for every single enum value being
serialized.
|
JsonFormat.Value |
findFormat(Annotated m)
Method for finding format annotations for property or class.
|
Boolean |
findIgnoreUnknownProperties(AnnotatedClass ac)
Method for checking whether an annotation indicates that all unknown properties
|
String |
findImplicitPropertyName(AnnotatedMember m)
Method for finding implicit name for a property that given annotated
member (field, method, creator parameter) may represent.
|
Object |
findKeyDeserializer(Annotated am)
Method for getting a deserializer definition for keys of
associated
Map property. |
PropertyName |
findNameForDeserialization(Annotated a)
Method for checking whether given property accessors (method,
field) has an annotation that suggests property name to use
for deserialization (reading JSON into POJOs).
|
PropertyName |
findNameForSerialization(Annotated a)
Method for checking whether given property accessors (method,
field) has an annotation that suggests property name to use
for serialization.
|
String |
findNamespace(Annotated ann) |
ObjectIdInfo |
findObjectIdInfo(Annotated ann)
Method for checking whether given annotated thing
(type, or accessor) indicates that values
referenced (values of type of annotated class, or
values referenced by annotated property; latter
having precedence) should include Object Identifier,
and if so, specify details of Object Identity used.
|
ObjectIdInfo |
findObjectReferenceInfo(Annotated ann,
ObjectIdInfo base)
Method for figuring out additional properties of an Object Identity reference
|
TypeResolverBuilder<?> |
findPropertyContentTypeResolver(MapperConfig<?> config,
AnnotatedMember am,
JavaType containerType)
Method for checking if given structured property entity (field or method that
has nominal value of Map, Collection or array type) has annotations
that indicate that specific type resolver is to be used for handling type
information of contained values.
|
TypeResolverBuilder<?> |
findPropertyTypeResolver(MapperConfig<?> config,
AnnotatedMember am,
JavaType baseType)
Method for checking if given property entity (field or method) has annotations
that indicate that specific type resolver is to be used for handling instances.
|
PropertyName |
findRootName(AnnotatedClass ac)
Method for locating name used as "root name" (for use by
some serializers when outputting root-level object -- mostly
for XML compatibility purposes) for given class, if one
is defined.
|
Object |
findSerializationContentConverter(AnnotatedMember a)
Method for finding
Converter that annotated property
has indicated needs to be used for values of container type
(this also means that method should only be called for properties
of container types, List/Map/array properties). |
Object |
findSerializationConverter(Annotated a)
Method for finding
Converter that annotated entity
(property or class) has indicated to be used as part of
serialization. |
JsonInclude.Include |
findSerializationInclusion(Annotated a,
JsonInclude.Include defValue)
Implementation of this method is slightly tricky, given that JAXB defaults differ
from Jackson defaults.
|
String[] |
findSerializationPropertyOrder(AnnotatedClass ac)
Method for accessing defined property serialization order (which may be
partial).
|
Boolean |
findSerializationSortAlphabetically(Annotated ann)
Method for checking whether an annotation indicates that serialized properties
for which no explicit is defined should be alphabetically (lexicograpically)
ordered
|
Boolean |
findSerializationSortAlphabetically(AnnotatedClass ac)
Deprecated.
|
Class<?> |
findSerializationType(Annotated a)
Method for accessing annotated type definition that a
method/field can have, to be used as the type for serialization
instead of the runtime type.
|
JsonSerializer<?> |
findSerializer(Annotated am)
Method for getting a serializer definition on specified method
or field.
|
List<NamedType> |
findSubtypes(Annotated a)
Method for locating annotation-specified subtypes related to annotated
entity (class, method, field).
|
String |
findTypeName(AnnotatedClass ac)
Method for checking if specified type has explicit name.
|
TypeResolverBuilder<?> |
findTypeResolver(MapperConfig<?> config,
AnnotatedClass ac,
JavaType baseType)
Method for checking if given class has annotations that indicate
that specific type resolver is to be used for handling instances.
|
PropertyName |
findWrapperName(Annotated ann)
Method used to check if specified property has annotation that indicates
that it should be wrapped in an element; and if so, name to use.
|
String |
getNameUsedForXmlValue()
Accessor for getting currently configured placeholder named
used for property annotated with
XmlValue . |
protected TypeFactory |
getTypeFactory() |
boolean |
hasAnySetterAnnotation(AnnotatedMethod am)
Method for checking whether given method has an annotation
that suggests that the method is to serve as "any setter";
method to be used for setting values of any properties for
which no dedicated setter method is found.
|
boolean |
hasAsValueAnnotation(AnnotatedMethod am)
Method for checking whether given method has an annotation
that suggests that the return value of annotated method
should be used as "the value" of the object instance; usually
serialized as a primitive value such as String or number.
|
boolean |
hasCreatorAnnotation(Annotated am)
Method for checking whether given annotated item (method, constructor)
has an annotation
that suggests that the method is a "creator" (aka factory)
method to be used for construct new instances of deserialized
values.
|
boolean |
hasIgnoreMarker(AnnotatedMember m)
Method called to check whether given property is marked to
be ignored.
|
Boolean |
hasRequiredMarker(AnnotatedMember m)
Method that can be called to check whether this member has
an annotation that suggests whether value for matching property
is required or not.
|
Boolean |
isIgnorableType(AnnotatedClass ac)
Method for checking whether properties that have specified type
(class, not generics aware) should be completely ignored for
serialization and deserialization purposes.
|
protected boolean |
isJAXBAnnotation(Annotation ann)
An annotation is handled if it's in the same package as @XmlElement, including subpackages.
|
Boolean |
isOutputAsAttribute(Annotated ann)
Here we assume fairly simple logic; if there is
XmlAttribute to be found,
we consider it an attribute; if XmlElement , not-an-attribute; and otherwise
we will consider there to be no information. |
Boolean |
isOutputAsText(Annotated ann) |
void |
setNameUsedForXmlValue(String name)
Configuration method that can be used to change default name
("value") used for properties annotated with
XmlValue ;
note that setting it to null will actually avoid
name override, and name will instead be derived from underlying
method name using standard bean name introspection. |
Version |
version()
Method that will return version information stored in and read from jar
that contains this class.
|
_findAnnotation, _hasAnnotation, allIntrospectors, allIntrospectors, findAndAddVirtualProperties, findCreatorBinding, findDeserializationKeyType, findFilterId, findFilterId, findInjectableValueId, findKeySerializer, findNamingStrategy, findNullSerializer, findPOJOBuilder, findPOJOBuilderConfig, findPropertiesToIgnore, findPropertyDefaultValue, findPropertyDescription, findPropertyIndex, findReferenceType, findSerializationContentType, findSerializationInclusionForContent, findSerializationKeyType, findSerializationTyping, findUnwrappingNameTransformer, findValueInstantiator, findViews, hasAnyGetterAnnotation, isAnnotationBundle, isTypeId, nopInstance, pair
protected static final String DEFAULT_NAME_FOR_XML_VALUE
protected static final boolean DEFAULT_IGNORE_XMLIDREF
protected static final String MARKER_FOR_DEFAULT
protected static final JsonFormat.Value FORMAT_STRING
protected static final JsonFormat.Value FORMAT_INT
protected final String _jaxbPackageName
protected final JsonSerializer<?> _dataHandlerSerializer
protected final JsonDeserializer<?> _dataHandlerDeserializer
protected final TypeFactory _typeFactory
protected final boolean _ignoreXmlIDREF
protected String _xmlValueName
@XmlValue
annotation, a placeholder name is assigned
to property (unless overridden by explicit name); this configuration
value specified what that name is.@Deprecated public JaxbAnnotationIntrospector()
public JaxbAnnotationIntrospector(MapperConfig<?> config)
public JaxbAnnotationIntrospector(TypeFactory typeFactory)
public JaxbAnnotationIntrospector(TypeFactory typeFactory, boolean ignoreXmlIDREF)
typeFactory
- Type factory used for resolving type informationignoreXmlIDREF
- Whether XmlIDREF
annotation should be processed
JAXB style (meaning that references are always serialized using id), or
not (first reference as full POJO, others as ids)public Version version()
version
in interface Versioned
version
in class AnnotationIntrospector
public void setNameUsedForXmlValue(String name)
XmlValue
;
note that setting it to null
will actually avoid
name override, and name will instead be derived from underlying
method name using standard bean name introspection.public String getNameUsedForXmlValue()
XmlValue
.public Boolean isOutputAsAttribute(Annotated ann)
XmlAttribute
to be found,
we consider it an attribute; if XmlElement
, not-an-attribute; and otherwise
we will consider there to be no information.
Caller is likely to default to considering things as elements.public ObjectIdInfo findObjectIdInfo(Annotated ann)
AnnotationIntrospector
findObjectIdInfo
in class AnnotationIntrospector
public ObjectIdInfo findObjectReferenceInfo(Annotated ann, ObjectIdInfo base)
AnnotationIntrospector
findObjectReferenceInfo
in class AnnotationIntrospector
public PropertyName findRootName(AnnotatedClass ac)
AnnotationIntrospector
NOTE: method signature changed in 2.1, to return PropertyName
instead of String.
findRootName
in class AnnotationIntrospector
public Boolean findIgnoreUnknownProperties(AnnotatedClass ac)
AnnotationIntrospector
findIgnoreUnknownProperties
in class AnnotationIntrospector
public Boolean isIgnorableType(AnnotatedClass ac)
AnnotationIntrospector
isIgnorableType
in class AnnotationIntrospector
ac
- Type to checkpublic boolean hasIgnoreMarker(AnnotatedMember m)
AnnotationIntrospector
hasIgnoreMarker
in class AnnotationIntrospector
public PropertyName findWrapperName(Annotated ann)
AnnotationIntrospector
findWrapperName
in class AnnotationIntrospector
PropertyName.USE_DEFAULT
to indicate that no wrapper element should be used.public String findImplicitPropertyName(AnnotatedMember m)
AnnotationIntrospector
findImplicitPropertyName
in class AnnotationIntrospector
public JsonFormat.Value findFormat(Annotated m)
AnnotationIntrospector
findFormat
in class AnnotationIntrospector
public VisibilityChecker<?> findAutoDetectVisibility(AnnotatedClass ac, VisibilityChecker<?> checker)
AnnotationIntrospector
findAutoDetectVisibility
in class AnnotationIntrospector
protected XmlAccessType findAccessType(Annotated ac)
XmlAccessType
annotation value
for given annotated entity, if it has one, or inherits one from
its ancestors (in JAXB sense, package etc). Returns null if
nothing has been explicitly defined.public TypeResolverBuilder<?> findTypeResolver(MapperConfig<?> config, AnnotatedClass ac, JavaType baseType)
AnnotationIntrospector
AnnotationIntrospector.findSubtypes(com.fasterxml.jackson.databind.introspect.Annotated)
findTypeResolver
in class AnnotationIntrospector
config
- Configuration settings in effect (for serialization or deserialization)ac
- Annotated class to check for annotationsbaseType
- Base java type of value for which resolver is to be foundpublic TypeResolverBuilder<?> findPropertyTypeResolver(MapperConfig<?> config, AnnotatedMember am, JavaType baseType)
AnnotationIntrospector
AnnotationIntrospector.findSubtypes(com.fasterxml.jackson.databind.introspect.Annotated)
findPropertyTypeResolver
in class AnnotationIntrospector
config
- Configuration settings in effect (for serialization or deserialization)am
- Annotated member (field or method) to check for annotationsbaseType
- Base java type of property for which resolver is to be foundpublic TypeResolverBuilder<?> findPropertyContentTypeResolver(MapperConfig<?> config, AnnotatedMember am, JavaType containerType)
AnnotationIntrospector
AnnotationIntrospector.findSubtypes(com.fasterxml.jackson.databind.introspect.Annotated)
findPropertyContentTypeResolver
in class AnnotationIntrospector
config
- Configuration settings in effect (for serialization or deserialization)am
- Annotated member (field or method) to check for annotationscontainerType
- Type of property for which resolver is to be found (must be a container type)protected TypeResolverBuilder<?> _typeResolverFromXmlElements(AnnotatedMember am)
public List<NamedType> findSubtypes(Annotated a)
AnnotationIntrospector
findSubtypes
in class AnnotationIntrospector
a
- Annotated entity (class, field/method) to check for annotationspublic String findTypeName(AnnotatedClass ac)
AnnotationIntrospector
findTypeName
in class AnnotationIntrospector
ac
- Class to check for type name annotationspublic JsonSerializer<?> findSerializer(Annotated am)
AnnotationIntrospector
JsonSerializer
) or Class (of type
Class
); if value of different
type is returned, a runtime exception may be thrown by caller.findSerializer
in class AnnotationIntrospector
public Object findContentSerializer(Annotated a)
AnnotationIntrospector
Collection
, array
or Map
property.
Type of definition is either instance (of type
JsonSerializer
) or Class (of type
Class
); if value of different
type is returned, a runtime exception may be thrown by caller.findContentSerializer
in class AnnotationIntrospector
public Class<?> findSerializationType(Annotated a)
AnnotationIntrospector
findSerializationType
in class AnnotationIntrospector
public JsonInclude.Include findSerializationInclusion(Annotated a, JsonInclude.Include defValue)
findSerializationInclusion
in class AnnotationIntrospector
public String[] findSerializationPropertyOrder(AnnotatedClass ac)
AnnotationIntrospector
findSerializationPropertyOrder
in class AnnotationIntrospector
@Deprecated public Boolean findSerializationSortAlphabetically(AnnotatedClass ac)
findSerializationSortAlphabetically
in class AnnotationIntrospector
public Boolean findSerializationSortAlphabetically(Annotated ann)
AnnotationIntrospector
findSerializationSortAlphabetically
in class AnnotationIntrospector
public Object findSerializationConverter(Annotated a)
AnnotationIntrospector
Converter
that annotated entity
(property or class) has indicated to be used as part of
serialization. If not null, either has to be actual
Converter
instance, or class for such converter;
and resulting converter will be used first to convert property
value to converter target type, and then serializer for that
type is used for actual serialization.
This feature is typically used to convert internal values into types that Jackson can convert.
Note also that this feature does not necessarily work well with polymorphic type handling, or object identity handling; if such features are needed an explicit serializer is usually better way to handle serialization.
findSerializationConverter
in class AnnotationIntrospector
a
- Annotated property (field, method) or class to check for
annotationspublic Object findSerializationContentConverter(AnnotatedMember a)
AnnotationIntrospector
Converter
that annotated property
has indicated needs to be used for values of container type
(this also means that method should only be called for properties
of container types, List/Map/array properties).
If not null, either has to be actual
Converter
instance, or class for such converter;
and resulting converter will be used first to convert property
value to converter target type, and then serializer for that
type is used for actual serialization.
Other notes are same as those for AnnotationIntrospector.findSerializationConverter(com.fasterxml.jackson.databind.introspect.Annotated)
findSerializationContentConverter
in class AnnotationIntrospector
a
- Annotated property (field, method) to check.public PropertyName findNameForSerialization(Annotated a)
AnnotationIntrospector
PropertyName.USE_DEFAULT
, which means "use default heuristics").findNameForSerialization
in class AnnotationIntrospector
a
- Property accessor to checkpublic boolean hasAsValueAnnotation(AnnotatedMethod am)
AnnotationIntrospector
hasAsValueAnnotation
in class AnnotationIntrospector
public String findEnumValue(Enum<?> e)
!!! 12-Oct-2009, tatu: This is hideously slow implementation, called potentially for every single enum value being serialized. Should improve...
findEnumValue
in class AnnotationIntrospector
public Object findDeserializer(Annotated am)
AnnotationIntrospector
JsonDeserializer
) or Class (of type
Class
); if value of different
type is returned, a runtime exception may be thrown by caller.findDeserializer
in class AnnotationIntrospector
public Object findKeyDeserializer(Annotated am)
AnnotationIntrospector
Map
property.
Type of definition is either instance (of type
JsonDeserializer
) or Class (of type
Class
); if value of different
type is returned, a runtime exception may be thrown by caller.findKeyDeserializer
in class AnnotationIntrospector
public Object findContentDeserializer(Annotated a)
AnnotationIntrospector
Collection
, array
or
Map
property.
Type of definition is either instance (of type
JsonDeserializer
) or Class (of type
Class
); if value of different
type is returned, a runtime exception may be thrown by caller.findContentDeserializer
in class AnnotationIntrospector
public Class<?> findDeserializationType(Annotated a, JavaType baseType)
findDeserializationType
in class AnnotationIntrospector
baseType
- Assumed type before considering annotationspublic Class<?> findDeserializationContentType(Annotated a, JavaType baseContentType)
AnnotationIntrospector
findDeserializationContentType
in class AnnotationIntrospector
baseContentType
- Assumed content (value) type before considering annotationsprotected Class<?> _doFindDeserializationType(Annotated a, JavaType baseType)
public PropertyName findNameForDeserialization(Annotated a)
AnnotationIntrospector
PropertyName.USE_DEFAULT
, which means "use default heuristics").findNameForDeserialization
in class AnnotationIntrospector
a
- Property accessor to checkpublic boolean hasAnySetterAnnotation(AnnotatedMethod am)
AnnotationIntrospector
hasAnySetterAnnotation
in class AnnotationIntrospector
public boolean hasCreatorAnnotation(Annotated am)
AnnotationIntrospector
hasCreatorAnnotation
in class AnnotationIntrospector
public Boolean hasRequiredMarker(AnnotatedMember m)
AnnotationIntrospector
hasRequiredMarker
in class AnnotationIntrospector
public Object findDeserializationConverter(Annotated a)
AnnotationIntrospector
Converter
that annotated entity
(property or class) has indicated to be used as part of
deserialization.
If not null, either has to be actual
Converter
instance, or class for such converter;
and resulting converter will be used after Jackson has deserializer
data into intermediate type (Converter input type), and Converter
needs to convert this into its target type to be set as property value.
This feature is typically used to convert intermediate Jackson types (that default deserializers can produce) into custom type instances.
Note also that this feature does not necessarily work well with polymorphic type handling, or object identity handling; if such features are needed an explicit deserializer is usually better way to handle deserialization.
findDeserializationConverter
in class AnnotationIntrospector
a
- Annotated property (field, method) or class to check for
annotationspublic Object findDeserializationContentConverter(AnnotatedMember a)
AnnotationIntrospector
Converter
that annotated property
has indicated needs to be used for values of container type
(this also means that method should only be called for properties
of container types, List/Map/array properties).
If not null, either has to be actual
Converter
instance, or class for such converter;
and resulting converter will be used after Jackson has deserializer
data into intermediate type (Converter input type), and Converter
needs to convert this into its target type to be set as property value.
Other notes are same as those for AnnotationIntrospector.findDeserializationConverter(com.fasterxml.jackson.databind.introspect.Annotated)
findDeserializationContentConverter
in class AnnotationIntrospector
a
- Annotated property (field, method) to check.protected boolean isJAXBAnnotation(Annotation ann)
ann
- The annotation.protected final TypeFactory getTypeFactory()
protected XmlAdapter<?,?> _findContentAdapter(Annotated ann, boolean forSerialization)
protected String _propertyNameToString(PropertyName n)
protected JavaType _fullDeserializationType(AnnotatedMember am)
protected JavaType _fullSerializationType(AnnotatedMember am)
protected Converter<Object,Object> _converter(XmlAdapter<?,?> adapter, boolean forSerialization)
Copyright © 2016 JBoss by Red Hat. All rights reserved.