Class 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  
    • 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.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • cmd

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

      • DataNucleusClassFileTransformer

        public DataNucleusClassFileTransformer​(java.lang.String arguments,
                                               java.util.Map contextProps)
    • 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 interface java.lang.instrument.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:
        java.lang.instrument.IllegalClassFormatException - If the input does not represent a well-formed class file