Package org.apache.openjpa.enhance
Class ManagedClassSubclasser
java.lang.Object
org.apache.openjpa.enhance.ManagedClassSubclasser
Redefines the method bodies of existing unenhanced classes to make them
notify state managers of mutations.
- Since:
- 1.0.0
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
debugBytecodes
(ClassNodeTracker cnt, byte[] classBytes) prepareUnenhancedClasses
(OpenJPAConfiguration conf, Collection<? extends Class<?>> classes, ClassLoader envLoader) For each element inclasses
, creates and registers a new subclass that implementsPersistenceCapable
, and prepares OpenJPA to handle new instances of the unenhanced type.
-
Constructor Details
-
ManagedClassSubclasser
public ManagedClassSubclasser()
-
-
Method Details
-
prepareUnenhancedClasses
public static List<Class<?>> prepareUnenhancedClasses(OpenJPAConfiguration conf, Collection<? extends Class<?>> classes, ClassLoader envLoader) For each element inclasses
, creates and registers a new subclass that implementsPersistenceCapable
, and prepares OpenJPA to handle new instances of the unenhanced type. If this is invoked in a Java 6 environment, this method will redefine the methods for each class in the argument list such that field accesses are intercepted in-line. If invoked in a Java 5 environment or very new Java versions, this redefinition is not possible; in these contexts, when using field access, OpenJPA will need to do state comparisons to detect any change to any instance at any time, and when using property access, OpenJPA will need to do state comparisons to detect changes to newly inserted instances after a flush has been called.- Returns:
- the new subclasses, or
null
ifclasses
isnull
. - Throws:
UserException
- ifconf
requires build-time enhancement andclasses
includes unenhanced types.- Since:
- 1.0.0
-
debugBytecodes
- Throws:
IOException
-