com.fasterxml.jackson.module.jaxb
Class JaxbAnnotationIntrospector

java.lang.Object
  extended by com.fasterxml.jackson.databind.AnnotationIntrospector
      extended by com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector
All Implemented Interfaces:
com.fasterxml.jackson.core.Versioned

public class JaxbAnnotationIntrospector
extends com.fasterxml.jackson.databind.AnnotationIntrospector
implements com.fasterxml.jackson.core.Versioned

Annotation introspector that leverages JAXB annotations where applicable to JSON mapping. As of Jackson 2.0, most JAXB annotations are supported at least to some degree. Ones that are NOT yet supported are:

Note also the following limitations:

Author:
Ryan Heaton, Tatu Saloranta

Nested Class Summary
 
Nested classes/interfaces inherited from class com.fasterxml.jackson.databind.AnnotationIntrospector
com.fasterxml.jackson.databind.AnnotationIntrospector.Pair, com.fasterxml.jackson.databind.AnnotationIntrospector.ReferenceProperty
 
Field Summary
protected  com.fasterxml.jackson.databind.JsonDeserializer<?> _dataHandlerDeserializer
           
protected  com.fasterxml.jackson.databind.JsonSerializer<?> _dataHandlerSerializer
           
protected  boolean _ignoreXmlIDREF
           
protected  String _jaxbPackageName
           
protected  com.fasterxml.jackson.databind.type.TypeFactory _typeFactory
           
protected static boolean DEFAULT_IGNORE_XMLIDREF
           
protected static String MARKER_FOR_DEFAULT
           
 
Constructor Summary
JaxbAnnotationIntrospector()
          Deprecated. Since 2.1, use the ctor that takes TypeFactory
JaxbAnnotationIntrospector(com.fasterxml.jackson.databind.cfg.MapperConfig<?> config)
           
JaxbAnnotationIntrospector(com.fasterxml.jackson.databind.type.TypeFactory typeFactory)
           
JaxbAnnotationIntrospector(com.fasterxml.jackson.databind.type.TypeFactory typeFactory, boolean ignoreXmlIDREF)
           
 
Method Summary
protected  Class<?> _doFindDeserializationType(com.fasterxml.jackson.databind.introspect.Annotated a, com.fasterxml.jackson.databind.JavaType baseType)
           
protected  javax.xml.bind.annotation.adapters.XmlAdapter<?,?> _findContentAdapter(com.fasterxml.jackson.databind.introspect.Annotated ann)
           
protected  String _propertyNameToString(com.fasterxml.jackson.databind.PropertyName n)
           
protected  com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder<?> _typeResolverFromXmlElements(com.fasterxml.jackson.databind.introspect.AnnotatedMember am)
           
protected  javax.xml.bind.annotation.XmlAccessType findAccessType(com.fasterxml.jackson.databind.introspect.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).
 com.fasterxml.jackson.databind.introspect.VisibilityChecker<?> findAutoDetectVisibility(com.fasterxml.jackson.databind.introspect.AnnotatedClass ac, com.fasterxml.jackson.databind.introspect.VisibilityChecker<?> checker)
           
 Object findContentDeserializer(com.fasterxml.jackson.databind.introspect.Annotated am)
           
 Object findContentSerializer(com.fasterxml.jackson.databind.introspect.Annotated am)
           
 Class<?> findDeserializationContentType(com.fasterxml.jackson.databind.introspect.Annotated a, com.fasterxml.jackson.databind.JavaType baseContentType)
           
 String findDeserializationName(com.fasterxml.jackson.databind.introspect.AnnotatedField af)
          Deprecated. 
 String findDeserializationName(com.fasterxml.jackson.databind.introspect.AnnotatedMethod am)
          Deprecated. 
 Class<?> findDeserializationType(com.fasterxml.jackson.databind.introspect.Annotated a, com.fasterxml.jackson.databind.JavaType baseType)
          JAXB does allow specifying (more) concrete class for deserialization by using \@XmlElement annotation.
 Object findDeserializer(com.fasterxml.jackson.databind.introspect.Annotated am)
           
 String findEnumValue(Enum<?> e)
           !!! 12-Oct-2009, tatu: This is hideously slow implementation, called potentially for every single enum value being serialized.
 Boolean findIgnoreUnknownProperties(com.fasterxml.jackson.databind.introspect.AnnotatedClass ac)
           
 Object findKeyDeserializer(com.fasterxml.jackson.databind.introspect.Annotated am)
           
 com.fasterxml.jackson.databind.PropertyName findNameForDeserialization(com.fasterxml.jackson.databind.introspect.Annotated a)
           
 com.fasterxml.jackson.databind.PropertyName findNameForSerialization(com.fasterxml.jackson.databind.introspect.Annotated a)
           
 com.fasterxml.jackson.databind.introspect.ObjectIdInfo findObjectIdInfo(com.fasterxml.jackson.databind.introspect.Annotated ann)
           
 com.fasterxml.jackson.databind.introspect.ObjectIdInfo findObjectReferenceInfo(com.fasterxml.jackson.databind.introspect.Annotated ann, com.fasterxml.jackson.databind.introspect.ObjectIdInfo base)
           
 com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder<?> findPropertyContentTypeResolver(com.fasterxml.jackson.databind.cfg.MapperConfig<?> config, com.fasterxml.jackson.databind.introspect.AnnotatedMember am, com.fasterxml.jackson.databind.JavaType containerType)
           
 com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder<?> findPropertyTypeResolver(com.fasterxml.jackson.databind.cfg.MapperConfig<?> config, com.fasterxml.jackson.databind.introspect.AnnotatedMember am, com.fasterxml.jackson.databind.JavaType baseType)
           
 com.fasterxml.jackson.databind.PropertyName findRootName(com.fasterxml.jackson.databind.introspect.AnnotatedClass ac)
           
 com.fasterxml.jackson.annotation.JsonInclude.Include findSerializationInclusion(com.fasterxml.jackson.databind.introspect.Annotated a, com.fasterxml.jackson.annotation.JsonInclude.Include defValue)
          Implementation of this method is slightly tricky, given that JAXB defaults differ from Jackson defaults.
 String findSerializationName(com.fasterxml.jackson.databind.introspect.AnnotatedField af)
          Deprecated. 
 String findSerializationName(com.fasterxml.jackson.databind.introspect.AnnotatedMethod am)
          Deprecated. 
 String[] findSerializationPropertyOrder(com.fasterxml.jackson.databind.introspect.AnnotatedClass ac)
           
 Boolean findSerializationSortAlphabetically(com.fasterxml.jackson.databind.introspect.AnnotatedClass ac)
           
 Class<?> findSerializationType(com.fasterxml.jackson.databind.introspect.Annotated a)
           
 com.fasterxml.jackson.databind.JsonSerializer<?> findSerializer(com.fasterxml.jackson.databind.introspect.Annotated am)
           
 List<com.fasterxml.jackson.databind.jsontype.NamedType> findSubtypes(com.fasterxml.jackson.databind.introspect.Annotated a)
           
 String findTypeName(com.fasterxml.jackson.databind.introspect.AnnotatedClass ac)
           
 com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder<?> findTypeResolver(com.fasterxml.jackson.databind.cfg.MapperConfig<?> config, com.fasterxml.jackson.databind.introspect.AnnotatedClass ac, com.fasterxml.jackson.databind.JavaType baseType)
           
 com.fasterxml.jackson.databind.PropertyName findWrapperName(com.fasterxml.jackson.databind.introspect.Annotated ann)
           
protected  com.fasterxml.jackson.databind.type.TypeFactory getTypeFactory()
           
 boolean hasAnySetterAnnotation(com.fasterxml.jackson.databind.introspect.AnnotatedMethod am)
           
 boolean hasAsValueAnnotation(com.fasterxml.jackson.databind.introspect.AnnotatedMethod am)
           
 boolean hasCreatorAnnotation(com.fasterxml.jackson.databind.introspect.Annotated am)
           
 boolean hasIgnoreMarker(com.fasterxml.jackson.databind.introspect.AnnotatedMember m)
           
 Boolean hasRequiredMarker(com.fasterxml.jackson.databind.introspect.AnnotatedMember m)
           
 Boolean isIgnorableType(com.fasterxml.jackson.databind.introspect.AnnotatedClass ac)
           
protected  boolean isJAXBAnnotation(Annotation ann)
          An annotation is handled if it's in the same package as @XmlElement, including subpackages.
 com.fasterxml.jackson.core.Version version()
          Method that will return version information stored in and read from jar that contains this class.
 
Methods inherited from class com.fasterxml.jackson.databind.AnnotationIntrospector
allIntrospectors, allIntrospectors, findDeserializationKeyType, findDeserializationName, findFilterId, findFormat, findFormat, findInjectableValueId, findKeySerializer, findNamingStrategy, findPOJOBuilder, findPOJOBuilderConfig, findPropertiesToIgnore, findReferenceType, findSerializationContentType, findSerializationKeyType, findSerializationTyping, findUnwrappingNameTransformer, findValueInstantiator, findViews, hasAnyGetterAnnotation, isAnnotationBundle, isHandled, isTypeId, nopInstance, pair
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_IGNORE_XMLIDREF

protected static final boolean DEFAULT_IGNORE_XMLIDREF
See Also:
Constant Field Values

MARKER_FOR_DEFAULT

protected static final String MARKER_FOR_DEFAULT
See Also:
Constant Field Values

_jaxbPackageName

protected final String _jaxbPackageName

_dataHandlerSerializer

protected final com.fasterxml.jackson.databind.JsonSerializer<?> _dataHandlerSerializer

_dataHandlerDeserializer

protected final com.fasterxml.jackson.databind.JsonDeserializer<?> _dataHandlerDeserializer

_typeFactory

protected final com.fasterxml.jackson.databind.type.TypeFactory _typeFactory

_ignoreXmlIDREF

protected final boolean _ignoreXmlIDREF
Constructor Detail

JaxbAnnotationIntrospector

@Deprecated
public JaxbAnnotationIntrospector()
Deprecated. Since 2.1, use the ctor that takes TypeFactory


JaxbAnnotationIntrospector

public JaxbAnnotationIntrospector(com.fasterxml.jackson.databind.cfg.MapperConfig<?> config)

JaxbAnnotationIntrospector

public JaxbAnnotationIntrospector(com.fasterxml.jackson.databind.type.TypeFactory typeFactory)

JaxbAnnotationIntrospector

public JaxbAnnotationIntrospector(com.fasterxml.jackson.databind.type.TypeFactory typeFactory,
                                  boolean ignoreXmlIDREF)
Parameters:
typeFactory - Type factory used for resolving type information
ignoreXmlIDREF - 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)
Method Detail

version

public com.fasterxml.jackson.core.Version version()
Method that will return version information stored in and read from jar that contains this class.

Specified by:
version in interface com.fasterxml.jackson.core.Versioned
Specified by:
version in class com.fasterxml.jackson.databind.AnnotationIntrospector

findObjectIdInfo

public com.fasterxml.jackson.databind.introspect.ObjectIdInfo findObjectIdInfo(com.fasterxml.jackson.databind.introspect.Annotated ann)
Overrides:
findObjectIdInfo in class com.fasterxml.jackson.databind.AnnotationIntrospector

findObjectReferenceInfo

public com.fasterxml.jackson.databind.introspect.ObjectIdInfo findObjectReferenceInfo(com.fasterxml.jackson.databind.introspect.Annotated ann,
                                                                                      com.fasterxml.jackson.databind.introspect.ObjectIdInfo base)
Overrides:
findObjectReferenceInfo in class com.fasterxml.jackson.databind.AnnotationIntrospector

findRootName

public com.fasterxml.jackson.databind.PropertyName findRootName(com.fasterxml.jackson.databind.introspect.AnnotatedClass ac)
Overrides:
findRootName in class com.fasterxml.jackson.databind.AnnotationIntrospector

findIgnoreUnknownProperties

public Boolean findIgnoreUnknownProperties(com.fasterxml.jackson.databind.introspect.AnnotatedClass ac)
Overrides:
findIgnoreUnknownProperties in class com.fasterxml.jackson.databind.AnnotationIntrospector

isIgnorableType

public Boolean isIgnorableType(com.fasterxml.jackson.databind.introspect.AnnotatedClass ac)
Overrides:
isIgnorableType in class com.fasterxml.jackson.databind.AnnotationIntrospector

hasIgnoreMarker

public boolean hasIgnoreMarker(com.fasterxml.jackson.databind.introspect.AnnotatedMember m)
Overrides:
hasIgnoreMarker in class com.fasterxml.jackson.databind.AnnotationIntrospector

findWrapperName

public com.fasterxml.jackson.databind.PropertyName findWrapperName(com.fasterxml.jackson.databind.introspect.Annotated ann)
Overrides:
findWrapperName in class com.fasterxml.jackson.databind.AnnotationIntrospector

findAutoDetectVisibility

public com.fasterxml.jackson.databind.introspect.VisibilityChecker<?> findAutoDetectVisibility(com.fasterxml.jackson.databind.introspect.AnnotatedClass ac,
                                                                                               com.fasterxml.jackson.databind.introspect.VisibilityChecker<?> checker)
Overrides:
findAutoDetectVisibility in class com.fasterxml.jackson.databind.AnnotationIntrospector

findAccessType

protected javax.xml.bind.annotation.XmlAccessType findAccessType(com.fasterxml.jackson.databind.introspect.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). Returns null if nothing has been explicitly defined.


findTypeResolver

public com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder<?> findTypeResolver(com.fasterxml.jackson.databind.cfg.MapperConfig<?> config,
                                                                                       com.fasterxml.jackson.databind.introspect.AnnotatedClass ac,
                                                                                       com.fasterxml.jackson.databind.JavaType baseType)
Overrides:
findTypeResolver in class com.fasterxml.jackson.databind.AnnotationIntrospector

findPropertyTypeResolver

public com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder<?> findPropertyTypeResolver(com.fasterxml.jackson.databind.cfg.MapperConfig<?> config,
                                                                                               com.fasterxml.jackson.databind.introspect.AnnotatedMember am,
                                                                                               com.fasterxml.jackson.databind.JavaType baseType)
Overrides:
findPropertyTypeResolver in class com.fasterxml.jackson.databind.AnnotationIntrospector

findPropertyContentTypeResolver

public com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder<?> findPropertyContentTypeResolver(com.fasterxml.jackson.databind.cfg.MapperConfig<?> config,
                                                                                                      com.fasterxml.jackson.databind.introspect.AnnotatedMember am,
                                                                                                      com.fasterxml.jackson.databind.JavaType containerType)
Overrides:
findPropertyContentTypeResolver in class com.fasterxml.jackson.databind.AnnotationIntrospector

_typeResolverFromXmlElements

protected com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder<?> _typeResolverFromXmlElements(com.fasterxml.jackson.databind.introspect.AnnotatedMember am)

findSubtypes

public List<com.fasterxml.jackson.databind.jsontype.NamedType> findSubtypes(com.fasterxml.jackson.databind.introspect.Annotated a)
Overrides:
findSubtypes in class com.fasterxml.jackson.databind.AnnotationIntrospector

findTypeName

public String findTypeName(com.fasterxml.jackson.databind.introspect.AnnotatedClass ac)
Overrides:
findTypeName in class com.fasterxml.jackson.databind.AnnotationIntrospector

findSerializer

public com.fasterxml.jackson.databind.JsonSerializer<?> findSerializer(com.fasterxml.jackson.databind.introspect.Annotated am)
Overrides:
findSerializer in class com.fasterxml.jackson.databind.AnnotationIntrospector

findContentSerializer

public Object findContentSerializer(com.fasterxml.jackson.databind.introspect.Annotated am)
Overrides:
findContentSerializer in class com.fasterxml.jackson.databind.AnnotationIntrospector

findSerializationType

public Class<?> findSerializationType(com.fasterxml.jackson.databind.introspect.Annotated a)
Overrides:
findSerializationType in class com.fasterxml.jackson.databind.AnnotationIntrospector

findSerializationInclusion

public com.fasterxml.jackson.annotation.JsonInclude.Include findSerializationInclusion(com.fasterxml.jackson.databind.introspect.Annotated a,
                                                                                       com.fasterxml.jackson.annotation.JsonInclude.Include defValue)
Implementation of this method is slightly tricky, given that JAXB defaults differ from Jackson defaults. As of version 1.5 and above, this is resolved by honoring Jackson defaults (which are configurable), and only using JAXB explicit annotations.

Overrides:
findSerializationInclusion in class com.fasterxml.jackson.databind.AnnotationIntrospector

findSerializationPropertyOrder

public String[] findSerializationPropertyOrder(com.fasterxml.jackson.databind.introspect.AnnotatedClass ac)
Overrides:
findSerializationPropertyOrder in class com.fasterxml.jackson.databind.AnnotationIntrospector

findSerializationSortAlphabetically

public Boolean findSerializationSortAlphabetically(com.fasterxml.jackson.databind.introspect.AnnotatedClass ac)
Overrides:
findSerializationSortAlphabetically in class com.fasterxml.jackson.databind.AnnotationIntrospector

findNameForSerialization

public com.fasterxml.jackson.databind.PropertyName findNameForSerialization(com.fasterxml.jackson.databind.introspect.Annotated a)
Overrides:
findNameForSerialization in class com.fasterxml.jackson.databind.AnnotationIntrospector

findSerializationName

@Deprecated
public String findSerializationName(com.fasterxml.jackson.databind.introspect.AnnotatedMethod am)
Deprecated. 

Overrides:
findSerializationName in class com.fasterxml.jackson.databind.AnnotationIntrospector

findSerializationName

@Deprecated
public String findSerializationName(com.fasterxml.jackson.databind.introspect.AnnotatedField af)
Deprecated. 

Overrides:
findSerializationName in class com.fasterxml.jackson.databind.AnnotationIntrospector

hasAsValueAnnotation

public boolean hasAsValueAnnotation(com.fasterxml.jackson.databind.introspect.AnnotatedMethod am)
Overrides:
hasAsValueAnnotation in class com.fasterxml.jackson.databind.AnnotationIntrospector

findEnumValue

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

Overrides:
findEnumValue in class com.fasterxml.jackson.databind.AnnotationIntrospector

findDeserializer

public Object findDeserializer(com.fasterxml.jackson.databind.introspect.Annotated am)
Overrides:
findDeserializer in class com.fasterxml.jackson.databind.AnnotationIntrospector

findKeyDeserializer

public Object findKeyDeserializer(com.fasterxml.jackson.databind.introspect.Annotated am)
Overrides:
findKeyDeserializer in class com.fasterxml.jackson.databind.AnnotationIntrospector

findContentDeserializer

public Object findContentDeserializer(com.fasterxml.jackson.databind.introspect.Annotated am)
Overrides:
findContentDeserializer in class com.fasterxml.jackson.databind.AnnotationIntrospector

findDeserializationType

public Class<?> findDeserializationType(com.fasterxml.jackson.databind.introspect.Annotated a,
                                        com.fasterxml.jackson.databind.JavaType baseType)
JAXB does allow specifying (more) concrete class for deserialization by using \@XmlElement annotation.

Overrides:
findDeserializationType in class com.fasterxml.jackson.databind.AnnotationIntrospector

findDeserializationContentType

public Class<?> findDeserializationContentType(com.fasterxml.jackson.databind.introspect.Annotated a,
                                               com.fasterxml.jackson.databind.JavaType baseContentType)
Overrides:
findDeserializationContentType in class com.fasterxml.jackson.databind.AnnotationIntrospector

_doFindDeserializationType

protected Class<?> _doFindDeserializationType(com.fasterxml.jackson.databind.introspect.Annotated a,
                                              com.fasterxml.jackson.databind.JavaType baseType)

findNameForDeserialization

public com.fasterxml.jackson.databind.PropertyName findNameForDeserialization(com.fasterxml.jackson.databind.introspect.Annotated a)
Overrides:
findNameForDeserialization in class com.fasterxml.jackson.databind.AnnotationIntrospector

findDeserializationName

@Deprecated
public String findDeserializationName(com.fasterxml.jackson.databind.introspect.AnnotatedMethod am)
Deprecated. 

Overrides:
findDeserializationName in class com.fasterxml.jackson.databind.AnnotationIntrospector

findDeserializationName

@Deprecated
public String findDeserializationName(com.fasterxml.jackson.databind.introspect.AnnotatedField af)
Deprecated. 

Overrides:
findDeserializationName in class com.fasterxml.jackson.databind.AnnotationIntrospector

hasAnySetterAnnotation

public boolean hasAnySetterAnnotation(com.fasterxml.jackson.databind.introspect.AnnotatedMethod am)
Overrides:
hasAnySetterAnnotation in class com.fasterxml.jackson.databind.AnnotationIntrospector

hasCreatorAnnotation

public boolean hasCreatorAnnotation(com.fasterxml.jackson.databind.introspect.Annotated am)
Overrides:
hasCreatorAnnotation in class com.fasterxml.jackson.databind.AnnotationIntrospector

hasRequiredMarker

public Boolean hasRequiredMarker(com.fasterxml.jackson.databind.introspect.AnnotatedMember m)
Overrides:
hasRequiredMarker in class com.fasterxml.jackson.databind.AnnotationIntrospector

isJAXBAnnotation

protected boolean isJAXBAnnotation(Annotation ann)
An annotation is handled if it's in the same package as @XmlElement, including subpackages.

Parameters:
ann - The annotation.
Returns:
Whether the annotation is in the JAXB package.

getTypeFactory

protected final com.fasterxml.jackson.databind.type.TypeFactory getTypeFactory()

_findContentAdapter

protected javax.xml.bind.annotation.adapters.XmlAdapter<?,?> _findContentAdapter(com.fasterxml.jackson.databind.introspect.Annotated ann)

_propertyNameToString

protected String _propertyNameToString(com.fasterxml.jackson.databind.PropertyName n)


Copyright © 2012 FasterXML. All Rights Reserved.