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

Quick Search    Search Deep

Source code: org/hibernate/bytecode/javassist/AccessOptimizerAdapter.java


1   package org.hibernate.bytecode.javassist;
2   
3   import org.hibernate.bytecode.ReflectionOptimizer;
4   import org.hibernate.PropertyAccessException;
5   
6   import java.io.Serializable;
7   
8   /**
9    * The {@link ReflectionOptimizer.AccessOptimizer} implementation for Javassist
10   * which simply acts as an adpater to the {@link BulkAccessor} class.
11   *
12   * @author Steve Ebersole
13   */
14  public class AccessOptimizerAdapter implements ReflectionOptimizer.AccessOptimizer, Serializable {
15  
16    public static final String PROPERTY_GET_EXCEPTION =
17      "exception getting property value with Javassist (set hibernate.bytecode.use_reflection_optimizer=false for more info)";
18  
19    public static final String PROPERTY_SET_EXCEPTION =
20      "exception setting property value with Javassist (set hibernate.bytecode.use_reflection_optimizer=false for more info)";
21  
22    private final BulkAccessor bulkAccessor;
23    private final Class mappedClass;
24  
25    public AccessOptimizerAdapter(BulkAccessor bulkAccessor, Class mappedClass) {
26      this.bulkAccessor = bulkAccessor;
27      this.mappedClass = mappedClass;
28    }
29  
30    public String[] getPropertyNames() {
31      return bulkAccessor.getGetters();
32    }
33  
34    public Object[] getPropertyValues(Object object) {
35      try {
36        return bulkAccessor.getPropertyValues( object );
37      }
38      catch ( Throwable t ) {
39        throw new PropertyAccessException(
40            t,
41                PROPERTY_GET_EXCEPTION,
42                false,
43                mappedClass,
44                getterName( t, bulkAccessor )
45          );
46      }
47    }
48  
49    public void setPropertyValues(Object object, Object[] values) {
50      try {
51        bulkAccessor.setPropertyValues( object, values );
52      }
53      catch ( Throwable t ) {
54        throw new PropertyAccessException(
55            t,
56                PROPERTY_SET_EXCEPTION,
57                true,
58                mappedClass,
59                setterName( t, bulkAccessor )
60        );
61      }
62    }
63  
64    private static String setterName(Throwable t, BulkAccessor accessor) {
65      if (t instanceof BulkAccessorException ) {
66        return accessor.getSetters()[ ( (BulkAccessorException) t ).getIndex() ];
67      }
68      else {
69        return "?";
70      }
71    }
72  
73    private static String getterName(Throwable t, BulkAccessor accessor) {
74      if (t instanceof BulkAccessorException ) {
75        return accessor.getGetters()[ ( (BulkAccessorException) t ).getIndex() ];
76      }
77      else {
78        return "?";
79      }
80    }
81  }