org.hibernate.bytecode.javassist
Class BytecodeProviderImpl

java.lang.Object
  extended byorg.hibernate.bytecode.javassist.BytecodeProviderImpl
All Implemented Interfaces:
BytecodeProvider

public class BytecodeProviderImpl
extends Object
implements BytecodeProvider

Bytecode provider implementation for Javassist.

Author:
Steve Ebersole

Constructor Summary
BytecodeProviderImpl()
           
 
Method Summary
 ClassLoader generateDynamicFieldInterceptionClassLoader(ClassLoader parent, String[] classpath, String[] packages)
          Generate a ClassLoader capable of performing dynamic bytecode manipulation on classes as they are loaded for the purpose of field-level interception.
 ProxyFactoryFactory getProxyFactoryFactory()
          Retrieve the specific factory for this provider capable of generating run-time proxies for lazy-loading purposes.
 ReflectionOptimizer getReflectionOptimizer(Class clazz, String[] getterNames, String[] setterNames, Class[] types)
          Retrieve the ReflectionOptimizer delegate for this provider capable of generating reflection optimization components.
 void releaseDynamicFieldInterceptionClassLoader(ClassLoader classLoader)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BytecodeProviderImpl

public BytecodeProviderImpl()
Method Detail

getProxyFactoryFactory

public ProxyFactoryFactory getProxyFactoryFactory()
Description copied from interface: BytecodeProvider
Retrieve the specific factory for this provider capable of generating run-time proxies for lazy-loading purposes.

Specified by:
getProxyFactoryFactory in interface BytecodeProvider
Returns:
The provider specifc factory.

getReflectionOptimizer

public ReflectionOptimizer getReflectionOptimizer(Class clazz,
                                                  String[] getterNames,
                                                  String[] setterNames,
                                                  Class[] types)
Description copied from interface: BytecodeProvider
Retrieve the ReflectionOptimizer delegate for this provider capable of generating reflection optimization components.

Specified by:
getReflectionOptimizer in interface BytecodeProvider
Parameters:
clazz - The class to be reflected upon.
getterNames - Names of all property getters to be accessed via reflection.
setterNames - Names of all property setters to be accessed via reflection.
types - The types of all properties to be accessed.
Returns:
The reflection optimization delegate.

generateDynamicFieldInterceptionClassLoader

public ClassLoader generateDynamicFieldInterceptionClassLoader(ClassLoader parent,
                                                               String[] classpath,
                                                               String[] packages)
Description copied from interface: BytecodeProvider
Generate a ClassLoader capable of performing dynamic bytecode manipulation on classes as they are loaded for the purpose of field-level interception. The returned ClassLoader is used for run-time bytecode manipulation as opposed to the more common build-time manipulation, since here we get into SecurityManager issues and such.

Currently used only from the Hibernate test suite, although conceivably (SecurityManager concerns aside) could be used somehow in running systems.

Specified by:
generateDynamicFieldInterceptionClassLoader in interface BytecodeProvider
Parameters:
parent - The parent classloader
classpath - The classpath to be searched
packages - can be null; use to limnit the packages to be loaded via this classloader (and transformed).
Returns:
The appropriate ClassLoader.

releaseDynamicFieldInterceptionClassLoader

public void releaseDynamicFieldInterceptionClassLoader(ClassLoader classLoader)
Specified by:
releaseDynamicFieldInterceptionClassLoader in interface BytecodeProvider