org.hibernate.bytecode
Interface ClassTransformer

All Known Implementing Classes:
AbstractClassTransformerImpl, CglibClassTransformer, JavassistClassTransformer

public interface ClassTransformer

A persistence provider provides an instance of this interface to the PersistenceUnitInfo.addTransformer method. 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

Author:
Bill Burke, Emmanuel Bernard

Method Summary
 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 Detail

transform

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

Parameters:
loader - the defining class loaderof 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