protected void setPropertyValuesWithOptimizer(Object object, Object[] values) { optimizer.getAccessOptimizer().setPropertyValues( object, values ); }
protected Object[] getPropertyValuesWithOptimizer(Object object) { return optimizer.getAccessOptimizer().getPropertyValues( object ); }
/** * Whether or not this class can be lazy (ie intercepted) */ public boolean isInstrumented() { return bytecodeEnhancementMetadata.isEnhancedForLazyLoading(); }
@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 ); }
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(); }
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 ); } }
/** * Read class definition from a file. * * @param file The file to read. * * @return The class bytes * * @throws IOException Indicates a problem accessing the given stream. */ public static byte[] readByteCode(File file) throws IOException { return ByteCodeHelper.readByteCode( new FileInputStream( file ) ); }
@Override protected Instantiator buildInstantiator(EntityMetamodel entityMetamodel, PersistentClass persistentClass) { if ( optimizer == null ) { return new PojoEntityInstantiator( entityMetamodel, persistentClass, null ); } else { return new PojoEntityInstantiator( entityMetamodel, persistentClass, optimizer.getInstantiationOptimizer() ); } }
@Override public LazyAttributeLoadingInterceptor injectInterceptor( Object entity, SharedSessionContractImplementor session) throws NotInstrumentedException { throw new NotInstrumentedException( errorMsg ); }
@Override public Object[] getPropertyValues(Object entity) throws HibernateException { if ( shouldGetAllProperties( entity ) && optimizer != null && optimizer.getAccessOptimizer() != null ) { return getPropertyValuesWithOptimizer( entity ); } else { return super.getPropertyValues( entity ); } }
protected boolean shouldGetAllProperties(Object entity) { if ( !getEntityMetamodel().getBytecodeEnhancementMetadata().isEnhancedForLazyLoading() ) { return true; } return !getEntityMetamodel().getBytecodeEnhancementMetadata().hasUnFetchedAttributes( entity ); }
public Object instantiate() { return factory.getProxy(); }
@Override public boolean hasUninitializedLazyProperties(Object object) { return entityMetamodel.getBytecodeEnhancementMetadata().hasUnFetchedAttributes( object ); }
public void setPropertyValues(Object component, Object[] values) throws HibernateException { if ( optimizer != null && optimizer.getAccessOptimizer() != null ) { optimizer.getAccessOptimizer().setPropertyValues( component, values ); } else { super.setPropertyValues( component, values ); } }
public Object[] getPropertyValues(Object component) throws HibernateException { if ( component == PropertyAccessStrategyBackRefImpl.UNKNOWN ) { return new Object[propertySpan]; } else if ( optimizer != null && optimizer.getAccessOptimizer() != null ) { return optimizer.getAccessOptimizer().getPropertyValues( component ); } else { return super.getPropertyValues( component ); } }
@Override public LazyAttributeLoadingInterceptor extractInterceptor(Object entity) throws NotInstrumentedException { throw new NotInstrumentedException( errorMsg ); }
@Override public Object[] getPropertyValuesToInsert(Object entity, Map mergeMap, SharedSessionContractImplementor session) { if ( shouldGetAllProperties( entity ) && optimizer != null && optimizer.getAccessOptimizer() != null ) { return getPropertyValuesWithOptimizer( entity ); } else { return super.getPropertyValuesToInsert( entity, mergeMap, session ); } }
public boolean isInstrumented() { return entityMetamodel.getBytecodeEnhancementMetadata().isEnhancedForLazyLoading(); }
@Override public boolean hasProxy() { return entityMetamodel.isLazy() && !entityMetamodel.getBytecodeEnhancementMetadata().isEnhancedForLazyLoading(); }
public boolean hasProxy() { // skip proxy instantiation if entity is bytecode enhanced return entityMetamodel.isLazy() && !entityMetamodel.getBytecodeEnhancementMetadata().isEnhancedForLazyLoading(); }