private final Enhancer enhancer = Environment.getBytecodeProvider().getEnhancer( context );
@Test @TestForIssue(jiraKey = "HHH-12584") public void testAbstractClass() { BytecodeProvider provider = Environment.getBytecodeProvider(); ReflectionOptimizer reflectionOptimizer = provider.getReflectionOptimizer( AbstractClass.class, new String[]{ "getProperty" }, new String[]{ "setProperty" }, new Class[]{ String.class } ); assertNotNull( reflectionOptimizer ); }
public ProxiedInstantiator(Class componentClass) { proxiedClass = componentClass; if ( proxiedClass.isInterface() ) { factory = Environment.getBytecodeProvider() .getProxyFactoryFactory() .buildBasicProxyFactory( null, new Class[] { proxiedClass } ); } else { factory = Environment.getBytecodeProvider() .getProxyFactoryFactory() .buildBasicProxyFactory( proxiedClass, null ); } }
? Environment.getBytecodeProvider().getEntityInstrumentationMetadata( persistentClass.getMappedClass() ) : new NonPojoInstrumentationMetadata( persistentClass.getEntityName() );
Environment.getBytecodeProvider().resetCaches(); synchronized (this) { if ( isClosed ) {
public InterceptFieldClassFileTransformer(List<String> entities) { final List<String> copyEntities = new ArrayList<String>( entities.size() ); copyEntities.addAll( entities ); classTransformer = Environment.getBytecodeProvider().getTransformer( //TODO change it to a static class to make it faster? new ClassFilter() { public boolean shouldInstrumentClass(String className) { return copyEntities.contains( className ); } }, //TODO change it to a static class to make it faster? new FieldFilter() { public boolean shouldInstrumentField(String className, String fieldName) { return true; } public boolean shouldTransformFieldAccess( String transformingClassName, String fieldOwnerClassName, String fieldName ) { return true; } } ); }
? Environment.getBytecodeProvider().getEntityInstrumentationMetadata( persistentClass.getMappedClass() ) : new NonPojoInstrumentationMetadata( persistentClass.getEntityName() );
Environment.getBytecodeProvider().resetCaches(); synchronized (this) { if ( isClosed ) {
@Test @TestForIssue(jiraKey = "HHH-12584") public void testInterface() { BytecodeProvider provider = Environment.getBytecodeProvider(); ReflectionOptimizer reflectionOptimizer = provider.getReflectionOptimizer( Interface.class, new String[]{ "getProperty" }, new String[]{ "setProperty" }, new Class[]{ String.class } ); assertNotNull( reflectionOptimizer ); }
@Override public byte[] transform( ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException { // The first design had the enhancer as a class variable. That approach had some goods and bads. // We don't had to create an enhancer for each class, but on the other end it would stay in memory forever. // It also assumed that all calls come from the same class loader, which is fair, but this makes it more robust. try { Enhancer enhancer = Environment.getBytecodeProvider().getEnhancer( new EnhancementContextWrapper( enhancementContext, loader ) ); return enhancer.enhance( className, classfileBuffer ); } catch (final Exception e) { throw new IllegalClassFormatException( "Error performing enhancement of " + className ) { @Override public synchronized Throwable getCause() { return e; } }; } }
protected ProxyFactory buildProxyFactoryInternal( PersistentClass persistentClass, Getter idGetter, Setter idSetter) { // TODO : YUCK!!! fix after HHH-1907 is complete return Environment.getBytecodeProvider().getProxyFactoryFactory().buildProxyFactory( getFactory() ); // return getFactory().getSettings().getBytecodeProvider().getProxyFactoryFactory().buildProxyFactory(); }
proxyInterfaceClass = entityBinding.getProxyInterfaceType().getValue(); instrumentationMetadata = Environment.getBytecodeProvider().getEntityInstrumentationMetadata( mappedClass );
optimizer = Environment.getBytecodeProvider().getReflectionOptimizer( mappedClass, getterNames,
final Enhancer enhancer = Environment.getBytecodeProvider().getEnhancer( enhancementContext );
protected ProxyFactory buildProxyFactoryInternal(EntityBinding entityBinding, Getter idGetter, Setter idSetter) { // TODO : YUCK!!! fix after HHH-1907 is complete return Environment.getBytecodeProvider().getProxyFactoryFactory().buildProxyFactory(); // return getFactory().getSettings().getBytecodeProvider().getProxyFactoryFactory().buildProxyFactory(); }
proxyInterfaceClass = entityBinding.getProxyInterfaceType().getValue(); instrumentationMetadata = Environment.getBytecodeProvider().getEntityInstrumentationMetadata( mappedClass );
optimizer = Environment.getBytecodeProvider().getReflectionOptimizer( componentClass, getterNames, setterNames, propTypes );
Enhancer enhancer = Environment.getBytecodeProvider().getEnhancer( enhancementContext );
protected ProxyFactory buildProxyFactoryInternal(PersistentClass persistentClass, Getter idGetter, Setter idSetter) { // TODO : YUCK!!! fix after HHH-1907 is complete return Environment.getBytecodeProvider().getProxyFactoryFactory().buildProxyFactory(); // return getFactory().getSettings().getBytecodeProvider().getProxyFactoryFactory().buildProxyFactory(); }
@Test public void testReflectionOptimization() { BytecodeProvider provider = Environment.getBytecodeProvider(); ReflectionOptimizer optimizer = provider.getReflectionOptimizer( Bean.class, BeanReflectionHelper.getGetterNames(), BeanReflectionHelper.getSetterNames(), BeanReflectionHelper.getTypes() ); assertNotNull( optimizer ); assertNotNull( optimizer.getInstantiationOptimizer() ); assertNotNull( optimizer.getAccessOptimizer() ); Object instance = optimizer.getInstantiationOptimizer().newInstance(); assertEquals( instance.getClass(), Bean.class ); Bean bean = ( Bean ) instance; optimizer.getAccessOptimizer().setPropertyValues( bean, BeanReflectionHelper.TEST_VALUES ); assertEquals( bean.getSomeString(), BeanReflectionHelper.TEST_VALUES[0] ); Object[] values = optimizer.getAccessOptimizer().getPropertyValues( bean ); assertEquivalent( values, BeanReflectionHelper.TEST_VALUES ); }