Class AnnotationIntrospector


  • public class AnnotationIntrospector
    extends java.lang.Object
    Introspects configuration on classes and their properties by reading annotations.
    • Field Detail

      • TRANSIENT_INCOMPATIBLE

        public static final java.util.List<java.lang.Class<? extends java.lang.annotation.Annotation>> TRANSIENT_INCOMPATIBLE
        Annotations to report exception when used in combination with JsonbTransient.
    • Constructor Detail

      • AnnotationIntrospector

        public AnnotationIntrospector​(JsonbContext jsonbContext)
        Creates annotation introspecting component passing JsonbContext inside.
        Parameters:
        jsonbContext - mandatory
    • Method Detail

      • getJsonbPropertyJsonWriteName

        public java.lang.String getJsonbPropertyJsonWriteName​(Property property)
        Gets a name of property for JSON marshalling. Can be different writeName for same property.
        Parameters:
        property - property representation - field, getter, setter (not null)
        Returns:
        read name
      • getJsonbPropertyJsonReadName

        public java.lang.String getJsonbPropertyJsonReadName​(Property property)
        Gets a name of property for JSON unmarshalling. Can be different from writeName for same property.
        Parameters:
        property - property representation - field, getter, setter (not null)
        Returns:
        write name
      • getCreator

        public JsonbCreator getCreator​(java.lang.Class<?> clazz)
        Searches for JsonbCreator annotation on constructors and static methods.
        Parameters:
        clazz - class to search
        Returns:
        JsonbCreator metadata object
      • getAdapterBinding

        public AdapterBinding getAdapterBinding​(Property property)
        Checks for JsonbAdapter on a property.
        Parameters:
        property - property not null
        Returns:
        components info
      • getAdapterBinding

        public AdapterBinding getAdapterBinding​(JsonbAnnotatedElement<java.lang.Class<?>> clsElement)
        Checks for JsonbAdapter on a type.
        Parameters:
        clsElement - type not null
        Returns:
        components info
      • getDeserializerBinding

        public DeserializerBinding getDeserializerBinding​(Property property)
        Checks for JsonbDeserializer on a property.
        Parameters:
        property - property not null
        Returns:
        components info
      • getDeserializerBinding

        public DeserializerBinding getDeserializerBinding​(JsonbAnnotatedElement<java.lang.Class<?>> clsElement)
        Checks for JsonbDeserializer on a type.
        Parameters:
        clsElement - type not null
        Returns:
        components info
      • getSerializerBinding

        public SerializerBinding getSerializerBinding​(Property property)
        Checks for JsonbSerializer on a property.
        Parameters:
        property - property not null
        Returns:
        components info
      • getSerializerBinding

        public SerializerBinding getSerializerBinding​(JsonbAnnotatedElement<java.lang.Class<?>> clsElement)
        Checks for JsonbSerializer on a type.
        Parameters:
        clsElement - type not null
        Returns:
        components info
      • isPropertyNillable

        public java.util.Optional<java.lang.Boolean> isPropertyNillable​(Property property)
        Checks if property is nillable. Looks for JsonbProperty nillable attribute only. JsonbNillable is checked only for ClassModels.
        Parameters:
        property - property to search in, not null
        Returns:
        True if property should be serialized when null.
      • isClassNillable

        public boolean isClassNillable​(JsonbAnnotatedElement<java.lang.Class<?>> clazzElement)
        Checks for JsonbNillable annotation on a class, its superclasses and interfaces.
        Parameters:
        clazzElement - class to search JsonbNillable in.
        Returns:
        true if found
      • getPropertyOrder

        public java.lang.String[] getPropertyOrder​(JsonbAnnotatedElement<java.lang.Class<?>> clazzElement)
        Checks for JsonbPropertyOrder annotation.
        Parameters:
        clazzElement - class to search on
        Returns:
        ordered properties names or null if not found
      • getJsonbTransientCategorized

        public java.util.EnumSet<AnnotationTarget> getJsonbTransientCategorized​(Property property)
        Checks if property is annotated transient. If JsonbTransient annotation is present on field getter or setter, and other annotation is present on either of it, JsonbException is thrown with message describing collision.
        Parameters:
        property - The property to inspect if there is any JsonbTransient annotation defined for it
        Returns:
        Set of AnnotationTargets specifying in which scope the JsonbTransient is applied
      • getJsonbDateFormatCategorized

        public java.util.Map<AnnotationTarget,​JsonbDateFormatter> getJsonbDateFormatCategorized​(Property property)
        Search JsonbDateFormat on property, if not found looks at annotations declared on property type class.
        Parameters:
        property - Property to search on.
        Returns:
        Map of JsonbDateFormatter instances categorized by their scopes (class, property, getter or setter). If there is no date formatter specified for given property, an empty map would be returned
      • getJsonbDateFormat

        public JsonbDateFormatter getJsonbDateFormat​(JsonbAnnotatedElement<java.lang.Class<?>> clazzElement)
        Search for JsonbDateFormat annotation on java class and construct JsonbDateFormatter. If not found looks at annotations declared on property type class.
        Parameters:
        clazzElement - class to search not null
        Returns:
        formatter to use
      • getJsonbNumberFormat

        public JsonbNumberFormatter getJsonbNumberFormat​(JsonbAnnotatedElement<java.lang.Class<?>> clazzElement)
        Search for JsonbNumberFormat annotation on java class.
        Parameters:
        clazzElement - class to search not null
        Returns:
        formatter to use
      • getJsonNumberFormatter

        public java.util.Map<AnnotationTarget,​JsonbNumberFormatter> getJsonNumberFormatter​(Property property)
        Search JsonbNumberFormat on property, if not found looks at annotations declared on property type class.
        Parameters:
        property - Property to search on.
        Returns:
        Map of JsonbNumberFormatter instances categorized by their scopes (class, property, getter or setter). If there is no number formatter specified for given property, an empty map would be returned
      • getConstructorNumberFormatter

        public JsonbNumberFormatter getConstructorNumberFormatter​(JsonbAnnotatedElement<java.lang.reflect.Parameter> param)
        Returns JsonbNumberFormatter instance if JsonbNumberFormat annotation is present.
        Parameters:
        param - annotated method parameter
        Returns:
        formatter instance if JsonbNumberFormat is present otherwise null
      • getConstructorDateFormatter

        public JsonbDateFormatter getConstructorDateFormatter​(JsonbAnnotatedElement<java.lang.reflect.Parameter> param)
        Returns JsonbDateFormatter instance if JsonbDateFormat annotation is present.
        Parameters:
        param - annotated method parameter
        Returns:
        formatter instance if JsonbDateFormat is present otherwise null
      • getPropertyVisibilityStrategy

        public javax.json.bind.config.PropertyVisibilityStrategy getPropertyVisibilityStrategy​(java.lang.Class<?> clazz)
        Get a @JsonbVisibility annotation from a class or its package.
        Parameters:
        clazz - Class to lookup annotation
        Returns:
        Instantiated PropertyVisibilityStrategy if annotation is present
      • checkTransientIncompatible

        public void checkTransientIncompatible​(JsonbAnnotatedElement<?> target)
        Finds annotations incompatible with JsonbTransient annotation.
        Parameters:
        target - target to check
      • collectInterfaces

        public java.util.Set<java.lang.Class<?>> collectInterfaces​(java.lang.Class<?> cls)
        Get class interfaces recursively.
        Parameters:
        cls - Class to process.
        Returns:
        A list of all class interfaces.
      • getImplementationClass

        public java.lang.Class<?> getImplementationClass​(Property property)
        Returns class if ImplementationClass annotation is present.
        Parameters:
        property - annotated property
        Returns:
        Class if ImplementationClass is present otherwise null
      • collectAnnotations

        public JsonbAnnotatedElement<java.lang.Class<?>> collectAnnotations​(java.lang.Class<?> clazz)
        Collect annotations of given class, its interfaces and the package.
        Parameters:
        clazz - Class to process.
        Returns:
        Element with class and annotations.