Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/hibernate/test/bytecode/cglib/ReflectionOptimizerTest.java


1   package org.hibernate.test.bytecode.cglib;
2   
3   import junit.framework.TestCase;
4   import junit.framework.TestSuite;
5   import org.hibernate.bytecode.cglib.BytecodeProviderImpl;
6   import org.hibernate.bytecode.ReflectionOptimizer;
7   import org.hibernate.test.bytecode.Bean;
8   import org.hibernate.test.bytecode.BeanReflectionHelper;
9   
10  /**
11   * @author Steve Ebersole
12   */
13  public class ReflectionOptimizerTest extends TestCase {
14    public void testReflectionOptimization() {
15      BytecodeProviderImpl provider = new BytecodeProviderImpl();
16      ReflectionOptimizer optimizer = provider.getReflectionOptimizer(
17          Bean.class,
18              BeanReflectionHelper.getGetterNames(),
19              BeanReflectionHelper.getSetterNames(),
20              BeanReflectionHelper.getTypes()
21      );
22      assertNotNull( optimizer );
23      assertNotNull( optimizer.getInstantiationOptimizer() );
24      assertNotNull( optimizer.getAccessOptimizer() );
25  
26      Object instance = optimizer.getInstantiationOptimizer().newInstance();
27      assertEquals( instance.getClass(), Bean.class );
28      Bean bean = ( Bean ) instance;
29  
30      optimizer.getAccessOptimizer().setPropertyValues( bean, BeanReflectionHelper.TEST_VALUES );
31      assertEquals( bean.getSomeString(), BeanReflectionHelper.TEST_VALUES[0] );
32      Object[] values = optimizer.getAccessOptimizer().getPropertyValues( bean );
33      assertEquivalent( values, BeanReflectionHelper.TEST_VALUES );
34    }
35  
36    private void assertEquivalent(Object[] checkValues, Object[] values) {
37      assertEquals( "Different lengths", checkValues.length, values.length );
38      for ( int i = 0; i < checkValues.length; i++ ) {
39        assertEquals( "different values at index [" + i + "]", checkValues[i], values[i] );
40      }
41    }
42  
43    public static TestSuite suite() {
44      return new TestSuite( ReflectionOptimizerTest.class );
45    }
46  }