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  String _jaxbPackageName
           
protected  com.fasterxml.jackson.databind.type.TypeFactory _typeFactory
           
protected static String MARKER_FOR_DEFAULT
           
 
Constructor Summary
JaxbAnnotationIntrospector()
           
JaxbAnnotationIntrospector(com.fasterxml.jackson.databind.cfg.MapperConfig<?> config)
           
JaxbAnnotationIntrospector(com.fasterxml.jackson.databind.type.TypeFactory typeFactory)
           
 
Method Summary
protected  Class<?> _doFindDeserializationType(com.fasterxml.jackson.databind.introspect.Annotated a, com.fasterxml.jackson.databind.JavaType baseType)
           
protected  XmlAdapter<?,?> _findContentAdapter(com.fasterxml.jackson.databind.introspect.Annotated ann)
           
protected  com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder<?> _typeResolverFromXmlElements(com.fasterxml.jackson.databind.introspect.AnnotatedMember am)
           
protected  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)
           
 String findDeserializationName(com.fasterxml.jackson.databind.introspect.AnnotatedMethod am)
           
 String findDeserializationName(com.fasterxml.jackson.databind.introspect.AnnotatedParameter param)
           
 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.introspect.ObjectIdInfo findObjectIdInfo(com.fasterxml.jackson.databind.introspect.Annotated ann)
           
 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)
           
 String 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)
           
 String findSerializationName(com.fasterxml.jackson.databind.introspect.AnnotatedMethod am)
           
 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)
           
 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 isHandled(Annotation ann)
          An annotation is handled if it's in the same package as @XmlElement, including subpackages.
 Boolean isIgnorableType(com.fasterxml.jackson.databind.introspect.AnnotatedClass ac)
           
 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, findFilterId, findFormat, findInjectableValueId, findKeySerializer, findPOJOBuilder, findPOJOBuilderConfig, findPropertiesToIgnore, findReferenceType, findSerializationContentType, findSerializationKeyType, findSerializationTyping, findUnwrappingNameTransformer, findValueInstantiator, findViews, hasAnyGetterAnnotation, hasRequiredMarker, isAnnotationBundle, isTypeId, nopInstance, pair
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

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
Constructor Detail

JaxbAnnotationIntrospector

public JaxbAnnotationIntrospector()

JaxbAnnotationIntrospector

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

JaxbAnnotationIntrospector

public JaxbAnnotationIntrospector(com.fasterxml.jackson.databind.type.TypeFactory typeFactory)
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

isHandled

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

Overrides:
isHandled in class com.fasterxml.jackson.databind.AnnotationIntrospector
Parameters:
ann - The annotation.
Returns:
Whether the annotation is in the JAXB package.

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

findRootName

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

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

findSerializationName

public String findSerializationName(com.fasterxml.jackson.databind.introspect.AnnotatedMethod am)
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

findSerializationName

public String findSerializationName(com.fasterxml.jackson.databind.introspect.AnnotatedField af)
Overrides:
findSerializationName 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)

findDeserializationName

public String findDeserializationName(com.fasterxml.jackson.databind.introspect.AnnotatedMethod am)
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

findDeserializationName

public String findDeserializationName(com.fasterxml.jackson.databind.introspect.AnnotatedField af)
Overrides:
findDeserializationName in class com.fasterxml.jackson.databind.AnnotationIntrospector

findDeserializationName

public String findDeserializationName(com.fasterxml.jackson.databind.introspect.AnnotatedParameter param)
Overrides:
findDeserializationName in class com.fasterxml.jackson.databind.AnnotationIntrospector

_findContentAdapter

protected XmlAdapter<?,?> _findContentAdapter(com.fasterxml.jackson.databind.introspect.Annotated ann)


Copyright © 2012 fasterxml.com. All Rights Reserved.