Interface ClassTransformer

All Superinterfaces:
ClassTransformer

public interface ClassTransformer extends ClassTransformer
A persistence provider provides an instance of this interface to the container. The supplied transformer instance will get called to transform entity class files when they are loaded and redefined. The transformation occurs before the class is defined by the JVM.
See Also:
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    discoverTypes(ClassLoader loader, String className)
     
    byte[]
    transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer)
    Invoked when a class is being loaded or redefined to add hooks for persistence bytecode manipulation.
  • Method Details

    • transform

      byte[] transform(@Nullable ClassLoader loader, String className, @Nullable Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws TransformerException
      Invoked when a class is being loaded or redefined to add hooks for persistence bytecode manipulation.
      Specified by:
      transform in interface ClassTransformer
      Parameters:
      loader - The defining class loader of the class being transformed. It may be null if using bootstrap loader
      className - The name of the class being transformed
      classBeingRedefined - If an already loaded class is being redefined, then pass this as a parameter
      protectionDomain - ProtectionDomain of the class being (re)-defined
      classfileBuffer - The input byte buffer in class file format
      Returns:
      A well-formed class file that can be loaded
      Throws:
      TransformerException
    • discoverTypes

      void discoverTypes(ClassLoader loader, String className)