Class ClassDetails
- java.lang.Object
-
- org.eclipse.persistence.internal.jpa.weaving.ClassDetails
-
public class ClassDetails extends Object
Internal helper class that holds details of a persistent class. Used byPersistenceWeaver
-
-
Field Summary
Fields Modifier and Type Field Description protected Map<String,AttributeDetails>
attributesMap
Map of this class' persistent attributes where the key is the Attribute name.protected String
className
Name of this class.protected MetadataClass
describedClass
protected Map<String,AttributeDetails>
getterMethodToAttributeDetails
Map of this class' persistent get methods where the key is the getMethod name.protected boolean
implementsCloneMethod
Determine if this class specifically implements a clone methodprotected boolean
isEmbedable
Determine if a JPA "embedable" (aggregate).protected boolean
isMappedSuperClass
Determine if a JPA "mapped superclass".protected Map<String,AttributeDetails>
setterMethodToAttributeDetails
Map of this class' persistent set methods where the key is the setMethod name.protected boolean
shouldWeaveChangeTracking
Define if change tracking should be weaved in this class.protected boolean
shouldWeaveConstructorOptimization
Determine if a new constructor can be used to bypass setting variables to default values.protected boolean
shouldWeaveFetchGroups
Define if fetch groups should be weaved in this class.protected boolean
shouldWeaveInternal
Define if internal optimizations should be weaved in this class.protected boolean
shouldWeaveRest
Define if this class should be weaved for our REST supportprotected boolean
shouldWeaveValueHolders
Define if lazy value holders should be weaved in this class.protected ClassDetails
superClassDetails
Superclass' ClassDetails - only populated if superclass is also persistent.protected String
superClassName
Superclass' name.protected boolean
usesAttributeAccess
Determine if class uses attribute access, lazily initialized.protected List<VirtualAttributeMethodInfo>
virtualAccessMethods
The methods that are used by virtual attributes as getter methods.
-
Constructor Summary
Constructors Constructor Description ClassDetails()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
canWeaveChangeTracking()
boolean
canWeaveConstructorOptimization()
Returns true if Used with field access, and is set to false if transient variables are discoveredboolean
doesSuperclassWeaveChangeTracking()
AttributeDetails
getAttributeDetailsFromClassOrSuperClass(String attributeName)
Map<String,AttributeDetails>
getAttributesMap()
String
getClassName()
MetadataClass
getDescribedClass()
Map<String,AttributeDetails>
getGetterMethodToAttributeDetails()
boolean
getImplementsCloneMethod()
VirtualAttributeMethodInfo
getInfoForVirtualGetMethod(String getMethodName)
INTERNAL: Search the list of virtualAccessMethods for a VirtualAttributeMethodInfo with the given getMethodName.VirtualAttributeMethodInfo
getInfoForVirtualSetMethod(String setMethodName)
INTERNAL: Search the list of virtualAccessMethods for a VirtualAttributeMethodInfo with the given setMethodName.String
getNameOfSuperclassImplementingCloneMethod()
Return the name of the most direct superclass that has a direct implementation of a clone method.Map<String,AttributeDetails>
getSetterMethodToAttributeDetails()
ClassDetails
getSuperClassDetails()
String
getSuperClassName()
List<VirtualAttributeMethodInfo>
getVirtualAccessMethods()
boolean
isEmbedable()
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.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.boolean
isMappedSuperClass()
void
setAttributesMap(Map<String,AttributeDetails> attributesMap)
void
setClassName(String className)
void
setDescribedClass(MetadataClass describedClass)
void
setGetterMethodToAttributeDetails(Map<String,AttributeDetails> map)
void
setImplementsCloneMethod(boolean implementsCloneMethod)
void
setIsEmbedable(boolean isEmbedable)
void
setIsMappedSuperClass(boolean isMappedSuperClass)
void
setSetterMethodToAttributeDetails(Map map)
void
setShouldWeaveChangeTracking(boolean shouldWeaveChangeTracking)
void
setShouldWeaveConstructorOptimization(boolean shouldWeaveConstructorOptimization)
void
setShouldWeaveFetchGroups(boolean shouldWeaveFetchGroups)
void
setShouldWeaveInternal(boolean shouldWeaveInternal)
void
setShouldWeaveREST(boolean shouldWeaveRest)
void
setShouldWeaveValueHolders(boolean shouldWeaveValueHolders)
void
setSuperClassDetails(ClassDetails superClassDetails)
void
setSuperClassName(String superClassName)
void
setVirtualAccessMethods(List<VirtualAttributeMethodInfo> virtualAccessMethods)
boolean
shouldWeaveChangeTracking()
boolean
shouldWeaveFetchGroups()
boolean
shouldWeaveInternal()
boolean
shouldWeaveREST()
boolean
shouldWeaveValueHolders()
void
useAttributeAccess()
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.
-
-
-
Field Detail
-
describedClass
protected MetadataClass describedClass
-
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
-
-
Method Detail
-
getDescribedClass
public MetadataClass getDescribedClass()
-
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)
-
getAttributesMap
public Map<String,AttributeDetails> getAttributesMap()
-
getGetterMethodToAttributeDetails
public Map<String,AttributeDetails> getGetterMethodToAttributeDetails()
-
getSetterMethodToAttributeDetails
public Map<String,AttributeDetails> getSetterMethodToAttributeDetails()
-
setAttributesMap
public void setAttributesMap(Map<String,AttributeDetails> attributesMap)
-
setGetterMethodToAttributeDetails
public void setGetterMethodToAttributeDetails(Map<String,AttributeDetails> map)
-
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:
-
getVirtualAccessMethods
public List<VirtualAttributeMethodInfo> getVirtualAccessMethods()
-
setVirtualAccessMethods
public void setVirtualAccessMethods(List<VirtualAttributeMethodInfo> virtualAccessMethods)
-
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:
-
-