## org.hibernate.bytecode
Interface BytecodeProvider

All Known Implementing Classes:
  BytecodeProviderImpl, BytecodeProviderImpl

    public interface BytecodeProvider

Contract for providers of bytecode services to Hibernate.

Bytecode requirements break down into basically 3 areas

1. proxy generation (both for runtime-lazy-loading and basic proxy generation) `getProxyFactoryFactory()`
2. bean reflection optimization `getReflectionOptimizer(java.lang.Class, java.lang.String[], java.lang.String[], java.lang.Class[])`
3. field-access instrumentation `getTransformer(org.hibernate.bytecode.util.ClassFilter, org.hibernate.bytecode.util.FieldFilter)`

Author:
  Steve Ebersole

Method Summary
`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.
`ClassTransformer` `getTransformer(ClassFilter classFilter, FieldFilter fieldFilter)` Generate a ClassTransformer capable of performing bytecode manipulation.

Method Detail

### getProxyFactoryFactory

    ProxyFactoryFactory getProxyFactoryFactory()

  Retrieve the specific factory for this provider capable of generating run-time proxies for lazy-loading purposes.

  Returns:
    The provider specific factory.

### getReflectionOptimizer

    ReflectionOptimizer getReflectionOptimizer(Class clazz,
                                               String[] getterNames,
                                               String[] setterNames,
                                               Class[] types)

  Retrieve the ReflectionOptimizer delegate for this provider capable of generating reflection optimization components.

  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.

### getTransformer

    ClassTransformer getTransformer(ClassFilter classFilter,
                                    FieldFilter fieldFilter)

  Generate a ClassTransformer capable of performing bytecode manipulation.

  Parameters:
    `classFilter` - filter used to limit which classes are to be instrumented via this ClassTransformer.
    `fieldFilter` - filter used to limit which fields are to be instrumented via this ClassTransformer.
  Returns:
    The appropriate ClassTransformer.

Copyright © 2001-2010 Red Hat, Inc. All Rights Reserved.