Class AnnotationsProcessor
- java.lang.Object
-
- org.eclipse.persistence.jaxb.compiler.AnnotationsProcessor
-
public final class AnnotationsProcessor extends Object
INTERNAL: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
Responsibilities:
- 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:
Generator
- Author:
- mmacivor
- Since:
- Oracle TopLink 11.1.1.0.0
-
-
Constructor Summary
Constructors Constructor Description AnnotationsProcessor(Helper helper)
-
Method Summary
-
-
-
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.- Parameters:
javaClasses
-- Returns:
-
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.- Parameters:
javaClasses
-- Returns:
- updated array of JavaClasses, made up of the original classes plus any additional ones
-
finalizeProperties
public void finalizeProperties()
Perform any final generation and/or validation operations on TypeInfo properties.
-
shouldGenerateTypeInfo
public boolean shouldGenerateTypeInfo(JavaClass javaClass)
-
getPropertiesForClass
public ArrayList<Property> getPropertiesForClass(JavaClass cls, TypeInfo info)
-
getFieldPropertiesForClass
public ArrayList<Property> getFieldPropertiesForClass(JavaClass cls, TypeInfo info, boolean onlyPublic)
-
getFieldPropertiesForClass
public ArrayList<Property> getFieldPropertiesForClass(JavaClass cls, TypeInfo info, boolean onlyPublic, boolean onlyExplicit)
-
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.- Parameters:
src
-tgt
-- Returns:
-
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.- Parameters:
src
-tgtCanonicalName
-- Returns:
-
getPropertyPropertiesForClass
public ArrayList<Property> getPropertyPropertiesForClass(JavaClass cls, TypeInfo info, boolean onlyPublic)
-
getPropertyPropertiesForClass
public ArrayList<Property> getPropertyPropertiesForClass(JavaClass cls, TypeInfo info, boolean onlyPublic, boolean onlyExplicit)
-
getPublicMemberPropertiesForClass
public ArrayList getPublicMemberPropertiesForClass(JavaClass cls, TypeInfo info)
-
getPropertyMapFromArrayList
public HashMap<String,Property> getPropertyMapFromArrayList(ArrayList<Property> props)
-
getNoAccessTypePropertiesForClass
public ArrayList getNoAccessTypePropertiesForClass(JavaClass cls, TypeInfo info)
-
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.- Parameters:
name
-namespace
-jClassQualifiedName
-
-
processSchemaType
public void processSchemaType(jakarta.xml.bind.annotation.XmlSchemaType type)
-
addEnumTypeInfo
public void addEnumTypeInfo(JavaClass javaClass, EnumTypeInfo info)
-
processNamespaceInformation
public NamespaceInfo processNamespaceInformation(jakarta.xml.bind.annotation.XmlSchema xmlSchema)
-
getQNameForProperty
public QName getQNameForProperty(Property property, String defaultName, JavaHasAnnotations element, NamespaceInfo namespaceInfo, TypeInfo info)
-
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)
-
getPackageInfoForPackage
public PackageInfo getPackageInfoForPackage(JavaClass javaClass)
-
getPackageInfoForPackage
public PackageInfo getPackageInfoForPackage(JavaPackage pack, String packageName)
-
findInfoForNamespace
public NamespaceInfo findInfoForNamespace(String namespace)
-
getMarshalCallbacks
public Map<String,MarshalCallback> getMarshalCallbacks()
-
getUnmarshalCallbacks
public Map<String,UnmarshalCallback> getUnmarshalCallbacks()
-
processObjectFactory
public JavaClass[] processObjectFactory(JavaClass objectFactoryClass, List<JavaClass> classes)
-
getGlobalElements
public Map<QName,ElementDeclaration> getGlobalElements()
Lazy load and return the map of global elements.- Returns:
-
updateGlobalElements
public void updateGlobalElements(JavaClass[] classesToProcess)
-
getCollectionClassesToGeneratedClasses
public Map<Type,Class> getCollectionClassesToGeneratedClasses()
-
getGeneratedClassesToCollectionClasses
public Map<Class,Type> getGeneratedClassesToCollectionClasses()
-
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>>- Parameters:
packageName
-- Returns:
- 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.- Parameters:
packageToNamespaceMappings
-
-
setPackageToPackageInfoMappings
public void setPackageToPackageInfoMappings(HashMap<String,PackageInfo> packageToPackageInfoMappings)
-
addClass
public SchemaTypeInfo addClass(JavaClass javaClass)
-
buildNewTypeInfo
public void buildNewTypeInfo(JavaClass[] javaClasses)
Convenience method which class pre and postBuildTypeInfo for a given set of JavaClasses.- Parameters:
javaClasses
-
-
isDefaultNamespaceAllowed
public boolean isDefaultNamespaceAllowed()
-
getLocalElements
public List<ElementDeclaration> getLocalElements()
-
getTypeMappingInfosToGeneratedClasses
public Map<TypeMappingInfo,Class> getTypeMappingInfosToGeneratedClasses()
-
getTypeMappingInfoToAdapterClasses
public Map<TypeMappingInfo,Class> getTypeMappingInfoToAdapterClasses()
-
addXmlRegistry
public void addXmlRegistry(String factoryClassName, XmlRegistry xmlReg)
Add an XmlRegistry to ObjectFactory class name pair to the map.- Parameters:
factoryClassName
- ObjectFactory class namexmlReg
- org.eclipse.persistence.jaxb.xmlmodel.XmlRegistry instance
-
getTypeMappingInfosToSchemaTypes
public Map<TypeMappingInfo,QName> getTypeMappingInfosToSchemaTypes()
-
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- Parameters:
property
-- Returns:
-
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:
- "com.sun.xml.bind.XmlAccessorFactory"
-
setXmlAccessorFactorySupport
public void setXmlAccessorFactorySupport(boolean value)
Sets whether this AnnotationsProcessor should process XmlAccessorFactory annotations.- See Also:
- "com.sun.xml.bind.XmlAccessorFactory"
-
setHasXmlBindings
public void setHasXmlBindings(boolean b)
-
hasXmlBindings
public boolean hasXmlBindings()
-
-