Package org.datanucleus.enhancer
Class DataNucleusClassFileTransformer
- java.lang.Object
-
- org.datanucleus.enhancer.DataNucleusClassFileTransformer
-
- All Implemented Interfaces:
java.lang.instrument.ClassFileTransformer
public class DataNucleusClassFileTransformer extends java.lang.Object implements java.lang.instrument.ClassFileTransformer
Entry Point (as per Java) for transforming classes at runtime. Before loading classes, the JVM invokes the ClassFileTranformer to transform the class. Will never process classes in packages "java.", "javax.", "org.datanucleus." (when not "test" or "samples"). Accepts the following (optional) arguments- api : JDO, JPA, Jakarta - default=JDO
- generatePK : true, false - default=true
- generateConstructor : true, false - default=true
- detachListener : true, false - default=false
- default args : package names of classes to be enhanced when encountered
-
-
Field Summary
Fields Modifier and Type Field Description private CommandLine
cmd
User input package name(s) (comma-separated) that should be processed.protected RuntimeEnhancer
enhancer
-
Constructor Summary
Constructors Constructor Description DataNucleusClassFileTransformer(java.lang.String arguments, java.util.Map contextProps)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static void
premain(java.lang.String agentArguments, java.lang.instrument.Instrumentation instrumentation)
byte[]
transform(java.lang.ClassLoader loader, java.lang.String className, java.lang.Class classBeingRedefined, java.security.ProtectionDomain protectionDomain, byte[] classfileBuffer)
Invoked when a class is being loaded or redefined.
-
-
-
Field Detail
-
enhancer
protected RuntimeEnhancer enhancer
-
cmd
private CommandLine cmd
User input package name(s) (comma-separated) that should be processed.
-
-
Method Detail
-
premain
public static void premain(java.lang.String agentArguments, java.lang.instrument.Instrumentation instrumentation)
-
transform
public byte[] transform(java.lang.ClassLoader loader, java.lang.String className, java.lang.Class classBeingRedefined, java.security.ProtectionDomain protectionDomain, byte[] classfileBuffer) throws java.lang.instrument.IllegalClassFormatException
Invoked when a class is being loaded or redefined. The implementation of this method may transform the supplied class file and return a new replacement class file.- Specified by:
transform
in interfacejava.lang.instrument.ClassFileTransformer
- Parameters:
loader
- The defining loader of the class to be transformed, may be null if the bootstrap loaderclassName
- The name of the class in the internal form of fully qualified class and interface namesclassBeingRedefined
- If this is a redefine, the class being redefined, otherwise nullprotectionDomain
- The protection domain of the class being defined or redefinedclassfileBuffer
- The input byte buffer in class file format - must not be modified- Returns:
- A well-formed class file buffer (the result of the transform), or null if no transform is performed
- Throws:
java.lang.instrument.IllegalClassFormatException
- If the input does not represent a well-formed class file
-
-