org.hibernate.bytecode

Class AbstractClassTransformerImpl

Implemented Interfaces:
ClassTransformer
Known Direct Subclasses:
CglibClassTransformer, JavassistClassTransformer

public abstract class AbstractClassTransformerImpl
extends java.lang.Object
implements ClassTransformer

Authors:
Emmanuel Bernard
Steve Ebersole

Field Summary

protected ClassFilter
classFilter
protected FieldFilter
fieldFilter

Constructor Summary

AbstractClassTransformerImpl(ClassFilter classFilter, FieldFilter fieldFilter)

Method Summary

protected abstract byte[]
doTransform(ClassLoader loader, String className, Class classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer)
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

Field Details

classFilter

protected final ClassFilter classFilter

fieldFilter

protected final FieldFilter fieldFilter

Constructor Details

AbstractClassTransformerImpl

protected AbstractClassTransformerImpl(ClassFilter classFilter,
                                       FieldFilter fieldFilter)

Method Details

doTransform

protected abstract byte[] doTransform(ClassLoader loader,
                                      String className,
                                      Class classBeingRedefined,
                                      ProtectionDomain protectionDomain,
                                      byte[] classfileBuffer)

transform

public 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
Specified by:
transform in interface ClassTransformer
Parameters:
loader - the defining class loaderof the class being transformed. It may be null if using bootstrap loader
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