Class ClassDetails


  • public class ClassDetails
    extends Object
    Internal helper class that holds details of a persistent class. Used by PersistenceWeaver
    • Field Detail

      • className

        protected String className
        Name of this class.
      • superClassName

        protected String superClassName
        Superclass' name.
      • superClassDetails

        protected ClassDetails superClassDetails
        Superclass' ClassDetails - only populated if superclass is also persistent.
      • shouldWeaveValueHolders

        protected boolean shouldWeaveValueHolders
        Define if lazy value holders should be weaved in this class.
      • shouldWeaveChangeTracking

        protected boolean shouldWeaveChangeTracking
        Define if change tracking should be weaved in this class.
      • shouldWeaveFetchGroups

        protected boolean shouldWeaveFetchGroups
        Define if fetch groups should be weaved in this class.
      • shouldWeaveInternal

        protected boolean shouldWeaveInternal
        Define if internal optimizations should be weaved in this class.
      • shouldWeaveRest

        protected boolean shouldWeaveRest
        Define if this class should be weaved for our REST support
      • attributesMap

        protected Map<String,​AttributeDetails> attributesMap
        Map of this class' persistent attributes where the key is the Attribute name.
      • getterMethodToAttributeDetails

        protected Map<String,​AttributeDetails> getterMethodToAttributeDetails
        Map of this class' persistent get methods where the key is the getMethod name.
      • setterMethodToAttributeDetails

        protected Map<String,​AttributeDetails> setterMethodToAttributeDetails
        Map of this class' persistent set methods where the key is the setMethod name.
      • isMappedSuperClass

        protected boolean isMappedSuperClass
        Determine if a JPA "mapped superclass".
      • isEmbedable

        protected boolean isEmbedable
        Determine if a JPA "embedable" (aggregate).
      • usesAttributeAccess

        protected boolean usesAttributeAccess
        Determine if class uses attribute access, lazily initialized.
      • implementsCloneMethod

        protected boolean implementsCloneMethod
        Determine if this class specifically implements a clone method
      • shouldWeaveConstructorOptimization

        protected boolean shouldWeaveConstructorOptimization
        Determine if a new constructor can be used to bypass setting variables to default values.
      • virtualAccessMethods

        protected List<VirtualAttributeMethodInfo> virtualAccessMethods
        The methods that are used by virtual attributes as getter methods. These will be used by our weaver to properly weave those methods This list should be kept in sync with virtualSetMethodNames. Every time a value is added, one should be added to virtualSetMethodNames so that at a particular index, the virtualGetMethodName and the virtualSetMethodCoorespond
    • Constructor Detail

      • ClassDetails

        public ClassDetails()
    • Method Detail

      • getClassName

        public String getClassName()
      • setDescribedClass

        public void setDescribedClass​(MetadataClass describedClass)
      • setClassName

        public void setClassName​(String className)
      • getSuperClassName

        public String getSuperClassName()
      • setSuperClassName

        public void setSuperClassName​(String superClassName)
      • getSuperClassDetails

        public ClassDetails getSuperClassDetails()
      • setSuperClassDetails

        public void setSuperClassDetails​(ClassDetails superClassDetails)
      • shouldWeaveValueHolders

        public boolean shouldWeaveValueHolders()
      • setShouldWeaveValueHolders

        public void setShouldWeaveValueHolders​(boolean shouldWeaveValueHolders)
      • shouldWeaveChangeTracking

        public boolean shouldWeaveChangeTracking()
      • setShouldWeaveChangeTracking

        public void setShouldWeaveChangeTracking​(boolean shouldWeaveChangeTracking)
      • setShouldWeaveConstructorOptimization

        public void setShouldWeaveConstructorOptimization​(boolean shouldWeaveConstructorOptimization)
      • shouldWeaveFetchGroups

        public boolean shouldWeaveFetchGroups()
      • setShouldWeaveFetchGroups

        public void setShouldWeaveFetchGroups​(boolean shouldWeaveFetchGroups)
      • shouldWeaveInternal

        public boolean shouldWeaveInternal()
      • setShouldWeaveInternal

        public void setShouldWeaveInternal​(boolean shouldWeaveInternal)
      • shouldWeaveREST

        public boolean shouldWeaveREST()
      • setShouldWeaveREST

        public void setShouldWeaveREST​(boolean shouldWeaveRest)
      • getImplementsCloneMethod

        public boolean getImplementsCloneMethod()
      • getInfoForVirtualGetMethod

        public VirtualAttributeMethodInfo getInfoForVirtualGetMethod​(String getMethodName)
        INTERNAL: Search the list of virtualAccessMethods for a VirtualAttributeMethodInfo with the given getMethodName. Return the VirtualAttributeMethodInfo if there is one, else return null
        Parameters:
        getMethodName -
        Returns:
      • getInfoForVirtualSetMethod

        public VirtualAttributeMethodInfo getInfoForVirtualSetMethod​(String setMethodName)
        INTERNAL: Search the list of virtualAccessMethods for a VirtualAttributeMethodInfo with the given setMethodName. Return the VirtualAttributeMethodInfo if there is one, else return null
        Parameters:
        setMethodName -
        Returns:
      • setImplementsCloneMethod

        public void setImplementsCloneMethod​(boolean implementsCloneMethod)
      • getNameOfSuperclassImplementingCloneMethod

        public String getNameOfSuperclassImplementingCloneMethod()
        Return the name of the most direct superclass that has a direct implementation of a clone method. If there is not one, return null
        Returns:
      • isMappedSuperClass

        public boolean isMappedSuperClass()
      • setIsMappedSuperClass

        public void setIsMappedSuperClass​(boolean isMappedSuperClass)
      • isEmbedable

        public boolean isEmbedable()
      • setIsEmbedable

        public void setIsEmbedable​(boolean isEmbedable)
      • setSetterMethodToAttributeDetails

        public void setSetterMethodToAttributeDetails​(Map map)
      • usesAttributeAccess

        public boolean usesAttributeAccess()
        If one attribute of this class uses attribute access, by the JPA specification, all attributes must use attribute access This method assumes it is called when this class details is completely initialized.
      • useAttributeAccess

        public void useAttributeAccess()
      • getAttributeDetailsFromClassOrSuperClass

        public AttributeDetails getAttributeDetailsFromClassOrSuperClass​(String attributeName)
      • doesSuperclassWeaveChangeTracking

        public boolean doesSuperclassWeaveChangeTracking()
      • canWeaveChangeTracking

        public boolean canWeaveChangeTracking()
      • canWeaveConstructorOptimization

        public boolean canWeaveConstructorOptimization()
        Returns true if Used with field access, and is set to false if transient variables are discovered
      • isInMetadataHierarchy

        public boolean isInMetadataHierarchy​(String className)
        Returns true if the given class name represents this class, or any superclass that can be navigated to by recursively navigating up the structure of superClassDetails stored in this class. Assume java.lang.Object is in the hierarchy
        Parameters:
        className -
        Returns:
      • isInSuperclassHierarchy

        public boolean isInSuperclassHierarchy​(String className)
        Returns true if the given class name represents this class, or any superclass that can be navigated to by recursively navigating up the structure of superClassDetails stored in this class. Assume java.lang.Object is in the hierarchy
        Parameters:
        className -
        Returns: