Interface ClassTransformer


  • public interface ClassTransformer
    A persistence provider supplies an instance of this interface to the PersistenceUnitInfo.addTransformer(jakarta.persistence.spi.ClassTransformer) method. The supplied transformer instance will get called to transform entity class files when they are loaded or redefined. The transformation occurs before the class is defined by the JVM.
    Since:
    1.0
    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      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.
    • Method Detail

      • transform

        byte[] transform​(java.lang.ClassLoader loader,
                         java.lang.String className,
                         java.lang.Class<?> classBeingRedefined,
                         java.security.ProtectionDomain protectionDomain,
                         byte[] classfileBuffer)
                  throws TransformerException
        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.
        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:
        TransformerException - if the input does not represent a well-formed class file