Class AnnotationsProcessor

  • public final class AnnotationsProcessor
    extends Object

    Purpose:To perform some initial processing of Java classes and JAXB 2.0 Annotations and generate meta data that can be used by the Mappings Generator and Schema Generator


    • Generate a map of TypeInfo objects, keyed on class name
    • Generate a map of user defined schema types
    • Identify any class-based JAXB 2.0 callback methods, and create MarshalCallback and UnmarshalCallback objects to wrap them.
    • Centralize processing which is common to both Schema Generation and Mapping Generation tasks

    This class does the initial processing of the JAXB 2.0 Generation. It generates meta data that can be used by the later Schema Generation and Mapping Generation steps.

    See Also:
    Oracle TopLink
    • Constructor Detail

      • AnnotationsProcessor

        public AnnotationsProcessor​(Helper helper)
    • Method Detail

      • createElementsForTypeMappingInfo

        public void createElementsForTypeMappingInfo()
      • preBuildTypeInfo

        public Map<String,​TypeInfo> preBuildTypeInfo​(JavaClass[] javaClasses)
        Process class level annotations only. It is assumed that a call to init() has been made prior to calling this method. After the types created via this method have been modified (if necessary) postBuildTypeInfo and processJavaClasses should be called to finish processing.
        javaClasses -
      • postBuildTypeInfo

        public JavaClass[] postBuildTypeInfo​(JavaClass[] javaClasses)
        Process any additional classes (i.e. inner classes, @XmlSeeAlso, @XmlRegistry, etc.) for a given set of JavaClasses, then complete building all of the required TypeInfo objects. This method is typically called after init and preBuildTypeInfo have been called.
        javaClasses -
        updated array of JavaClasses, made up of the original classes plus any additional ones
      • processPropertiesSuperClass

        public void processPropertiesSuperClass​(JavaClass cls,
                                                TypeInfo info)
      • finalizeProperties

        public void finalizeProperties()
        Perform any final generation and/or validation operations on TypeInfo properties.
      • shouldGenerateTypeInfo

        public boolean shouldGenerateTypeInfo​(JavaClass javaClass)
      • areEquals

        protected boolean areEquals​(JavaClass src,
                                    Class tgt)
        Compares a JavaModel JavaClass to a Class. Equality is based on the raw name of the JavaClass compared to the canonical name of the Class.
        src -
        tgt -
      • areEquals

        protected boolean areEquals​(JavaClass src,
                                    String tgtCanonicalName)
        Compares a JavaModel JavaClass to a Class. Equality is based on the raw name of the JavaClass compared to the canonical name of the Class.
        src -
        tgtCanonicalName -
      • processSchemaType

        public void processSchemaType​(String name,
                                      String namespace,
                                      String jClassQualifiedName)
        Use name, namespace and type information to setup a user-defined schema type. This method will typically be called when processing an @XmlSchemaType(s) annotation or xml-schema-type(s) metadata.
        name -
        namespace -
        jClassQualifiedName -
      • processSchemaType

        public void processSchemaType​(jakarta.xml.bind.annotation.XmlSchemaType type)
      • getSchemaTypeOrNullFor

        public QName getSchemaTypeOrNullFor​(JavaClass javaClass)
      • getSchemaTypeFor

        public QName getSchemaTypeFor​(JavaClass javaClass)
      • processNamespaceInformation

        public NamespaceInfo processNamespaceInformation​(jakarta.xml.bind.annotation.XmlSchema xmlSchema)
      • getTypeInfoClasses

        public List<JavaClass> getTypeInfoClasses()
      • getUserDefinedSchemaTypes

        public Map<String,​QName> getUserDefinedSchemaTypes()
      • getPackageToPackageInfoMappings

        public Map<String,​PackageInfo> getPackageToPackageInfoMappings()
      • addPackageToNamespaceMapping

        public void addPackageToNamespaceMapping​(String packageName,
                                                 NamespaceInfo nsInfo)
        Add a package name/NamespaceInfo entry to the map. This method will lazy-load the map if necessary.
      • addPackageToXmlElementNillable

        public void addPackageToXmlElementNillable​(String packageName,
                                                   XmlElementNillable xmlElementNillable)
        Add a package name/XmlElementNillable entry to the map. This method will lazy-load the map if necessary.
      • addPackageToXmlNullPolicy

        public void addPackageToXmlNullPolicy​(String packageName,
                                              XmlNullPolicy xmlNullPolicy)
        Add a package name/XmlNullPolicy entry to the map. This method will lazy-load the map if necessary.
      • addPackageToPackageInfoMapping

        public void addPackageToPackageInfoMapping​(String packageName,
                                                   PackageInfo packageInfo)
      • getGlobalElements

        public Map<QName,​ElementDeclaration> getGlobalElements()
        Lazy load and return the map of global elements.
      • updateGlobalElements

        public void updateGlobalElements​(JavaClass[] classesToProcess)
      • getCollectionClassesToGeneratedClasses

        public Map<Type,​Class> getCollectionClassesToGeneratedClasses()
      • getArrayClassesToGeneratedClasses

        public Map<String,​Class> getArrayClassesToGeneratedClasses()
      • getGeneratedClassesToCollectionClasses

        public Map<Class,​Type> getGeneratedClassesToCollectionClasses()
      • getGeneratedClassesToArrayClasses

        public Map<Class,​JavaClass> getGeneratedClassesToArrayClasses()
      • getTypeInfosForPackage

        public Map<String,​TypeInfo> getTypeInfosForPackage​(String packageName)
        Convenience method for returning all of the TypeInfo objects for a given package name. This method is inefficient as we need to iterate over the entire typeinfo map for each call. We should eventually store the TypeInfos in a Map based on package name, i.e.: Map <String, Map<String, TypeInfo>>
        packageName -
        List of TypeInfo objects for a given package name
      • setPackageToNamespaceMappings

        public void setPackageToNamespaceMappings​(HashMap<String,​NamespaceInfo> packageToNamespaceMappings)
        Set namespace override info from XML bindings file. This will typically be called from the XMLProcessor.
        packageToNamespaceMappings -
      • setPackageToPackageInfoMappings

        public void setPackageToPackageInfoMappings​(HashMap<String,​PackageInfo> packageToPackageInfoMappings)
      • buildNewTypeInfo

        public void buildNewTypeInfo​(JavaClass[] javaClasses)
        Convenience method which class pre and postBuildTypeInfo for a given set of JavaClasses.
        javaClasses -
      • isDefaultNamespaceAllowed

        public boolean isDefaultNamespaceAllowed()
      • getTypeMappingInfosToGeneratedClasses

        public Map<TypeMappingInfo,​Class> getTypeMappingInfosToGeneratedClasses()
      • addXmlRegistry

        public void addXmlRegistry​(String factoryClassName,
                                   XmlRegistry xmlReg)
        Add an XmlRegistry to ObjectFactory class name pair to the map.
        factoryClassName - ObjectFactory class name
        xmlReg - org.eclipse.persistence.jaxb.xmlmodel.XmlRegistry instance
      • setDefaultNamespaceAllowed

        public void setDefaultNamespaceAllowed​(boolean isDefaultNamespaceAllowed)
      • isMtomAttachment

        public boolean isMtomAttachment​(Property property)
        Indicates if a given Property represents an MTOM attachment. Will return true if the given Property's actual type is one of: - DataHandler - byte[] - Byte[] - Image - Source - MimeMultipart
        property -
      • hasSwaRef

        public boolean hasSwaRef()
      • setHasSwaRef

        public void setHasSwaRef​(boolean swaRef)
      • getReferencedByTransformer

        public List getReferencedByTransformer()
      • isXmlAccessorFactorySupport

        public boolean isXmlAccessorFactorySupport()
        Indicates whether this AnnotationsProcessor has been configured to enable processing of XmlAccessorFactory annotations.
        See Also:
      • setXmlAccessorFactorySupport

        public void setXmlAccessorFactorySupport​(boolean value)
        Sets whether this AnnotationsProcessor should process XmlAccessorFactory annotations.
        See Also:
      • setHasXmlBindings

        public void setHasXmlBindings​(boolean b)
      • hasXmlBindings

        public boolean hasXmlBindings()