Class DataNucleusClassFileTransformer

java.lang.Object
org.datanucleus.enhancer.DataNucleusClassFileTransformer
All Implemented Interfaces:
ClassFileTransformer

public class DataNucleusClassFileTransformer extends Object implements 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 Details

    • enhancer

      protected RuntimeEnhancer enhancer
    • cmd

      private CommandLine cmd
      User input package name(s) (comma-separated) that should be processed.
  • Constructor Details

    • DataNucleusClassFileTransformer

      public DataNucleusClassFileTransformer(String arguments, Map contextProps)
  • Method Details

    • premain

      public static void premain(String agentArguments, Instrumentation instrumentation)
    • transform

      public byte[] transform(ClassLoader loader, String className, Class classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws 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 interface ClassFileTransformer
      Parameters:
      loader - The defining loader of the class to be transformed, may be null if the bootstrap loader
      className - The name of the class in the internal form of fully qualified class and interface names
      classBeingRedefined - If this is a redefine, the class being redefined, otherwise null
      protectionDomain - The protection domain of the class being defined or redefined
      classfileBuffer - 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:
      IllegalClassFormatException - If the input does not represent a well-formed class file