Interface EnhancementContext
-
- All Known Implementing Classes:
DefaultEnhancementContext,EnhancementContextWrapper,EnhancerTestContext
public interface EnhancementContextThe context for performing an enhancement. Enhancement can happen in any number of ways:- Build time, via Ant
- Build time, via Maven
- Build time, via Gradle
- Runtime, via agent
- Runtime, via JPA constructs
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description booleandoBiDirectionalAssociationManagement(UnloadedField field)Should we manage association of bi-directional persistent attributes for this field?booleandoDirtyCheckingInline(UnloadedClass classDescriptor)Should we in-line dirty checking for persistent attributes for this class?booleandoExtendedEnhancement(UnloadedClass classDescriptor)Should we enhance field access to entities from this class?java.lang.ClassLoadergetLoadingClassLoader()Obtain access to the ClassLoader that can be used to load Class references.booleanhasLazyLoadableAttributes(UnloadedClass classDescriptor)Does the given class define any lazy loadable attributes?booleanisCompositeClass(UnloadedClass classDescriptor)Does the given class name represent an embeddable/component class?booleanisEntityClass(UnloadedClass classDescriptor)Does the given class descriptor represent an entity class?booleanisLazyLoadable(UnloadedField field)Determine if a field is lazy loadable.booleanisMappedCollection(UnloadedField field)booleanisMappedSuperclassClass(UnloadedClass classDescriptor)Does the given class name represent a MappedSuperclass class?booleanisPersistentField(UnloadedField ctField)Does the field represent persistent state? Persistent fields will be "enhanced".UnloadedField[]order(UnloadedField[] persistentFields)For fields which are persistent (according toisPersistentField(org.hibernate.bytecode.enhance.spi.UnloadedField)), determine the corresponding ordering maintained within the Hibernate metamodel.
-
-
-
Method Detail
-
getLoadingClassLoader
java.lang.ClassLoader getLoadingClassLoader()
Obtain access to the ClassLoader that can be used to load Class references. In JPA SPI terms, this should be a "temporary class loader" as defined byPersistenceUnitInfo.getNewTempClassLoader()- Returns:
- The class loader that the enhancer can use.
-
isEntityClass
boolean isEntityClass(UnloadedClass classDescriptor)
Does the given class descriptor represent an entity class?- Parameters:
classDescriptor- The descriptor of the class to check.- Returns:
trueif the class is an entity;falseotherwise.
-
isCompositeClass
boolean isCompositeClass(UnloadedClass classDescriptor)
Does the given class name represent an embeddable/component class?- Parameters:
classDescriptor- The descriptor of the class to check.- Returns:
trueif the class is an embeddable/component;falseotherwise.
-
isMappedSuperclassClass
boolean isMappedSuperclassClass(UnloadedClass classDescriptor)
Does the given class name represent a MappedSuperclass class?- Parameters:
classDescriptor- The descriptor of the class to check.- Returns:
trueif the class is a mapped super class;falseotherwise.
-
doBiDirectionalAssociationManagement
boolean doBiDirectionalAssociationManagement(UnloadedField field)
Should we manage association of bi-directional persistent attributes for this field?- Parameters:
field- The field to check.- Returns:
trueindicates that the field is enhanced so that for bi-directional persistent fields the association is managed, i.e. the associations are automatically set;falseindicates that the management is handled by the user.
-
doDirtyCheckingInline
boolean doDirtyCheckingInline(UnloadedClass classDescriptor)
Should we in-line dirty checking for persistent attributes for this class?- Parameters:
classDescriptor- The descriptor of the class to check.- Returns:
trueindicates that dirty checking should be in-lined within the entity;falseindicates it should not. In-lined is more easily serializable and probably more performant.
-
doExtendedEnhancement
boolean doExtendedEnhancement(UnloadedClass classDescriptor)
Should we enhance field access to entities from this class?- Parameters:
classDescriptor- The descriptor of the class to check.- Returns:
trueindicates that any direct access to fields of entities should be routed to the enhanced getter / setter method.
-
hasLazyLoadableAttributes
boolean hasLazyLoadableAttributes(UnloadedClass classDescriptor)
Does the given class define any lazy loadable attributes?- Parameters:
classDescriptor- The class to check- Returns:
- true/false
-
isPersistentField
boolean isPersistentField(UnloadedField ctField)
Does the field represent persistent state? Persistent fields will be "enhanced". may be better to perform basic checks in the caller (non-static, etc) and call out with just the Class name and field name...- Parameters:
ctField- The field reference.- Returns:
trueif the field is ;falseotherwise.
-
order
UnloadedField[] order(UnloadedField[] persistentFields)
For fields which are persistent (according toisPersistentField(org.hibernate.bytecode.enhance.spi.UnloadedField)), determine the corresponding ordering maintained within the Hibernate metamodel.- Parameters:
persistentFields- The persistent field references.- Returns:
- The ordered references.
-
isLazyLoadable
boolean isLazyLoadable(UnloadedField field)
Determine if a field is lazy loadable.- Parameters:
field- The field to check- Returns:
trueif the field is lazy loadable;falseotherwise.
-
isMappedCollection
boolean isMappedCollection(UnloadedField field)
- Parameters:
field- the field to check- Returns:
trueif the field is mapped
-
-