22
22
import org .hibernate .property .access .spi .Getter ;
23
23
import org .hibernate .property .access .spi .PropertyAccess ;
24
24
import org .hibernate .property .access .spi .Setter ;
25
- import org .hibernate .service .ServiceRegistry ;
26
25
import org .hibernate .tuple .Instantiator ;
27
26
import org .hibernate .tuple .PojoInstantiator ;
28
27
33
32
* @author Steve Ebersole
34
33
*/
35
34
public class PojoComponentTuplizer extends AbstractComponentTuplizer {
36
- private final Class componentClass ;
35
+ private Class componentClass ;
37
36
private ReflectionOptimizer optimizer ;
38
37
private final Getter parentGetter ;
39
38
private final Setter parentSetter ;
40
39
41
40
public PojoComponentTuplizer (Component component ) {
42
41
super ( component );
43
42
44
- this .componentClass = component .getComponentClass ();
45
-
46
43
String [] getterNames = new String [propertySpan ];
47
44
String [] setterNames = new String [propertySpan ];
48
45
Class [] propTypes = new Class [propertySpan ];
@@ -58,8 +55,6 @@ public PojoComponentTuplizer(Component component) {
58
55
parentGetter = null ;
59
56
}
60
57
else {
61
- final ServiceRegistry serviceRegistry =
62
- component .getMetadata ().getMetadataBuildingOptions ().getServiceRegistry ();
63
58
final PropertyAccess propertyAccess = PropertyAccessStrategyBasicImpl .INSTANCE .buildPropertyAccess (
64
59
componentClass ,
65
60
parentPropertyName
@@ -128,31 +123,36 @@ public void setParent(Object component, Object parent, SessionFactoryImplementor
128
123
}
129
124
130
125
protected Instantiator buildInstantiator (Component component ) {
131
- if ( component .isEmbedded () && ReflectHelper .isAbstractClass ( component . getComponentClass () ) ) {
132
- return new ProxiedInstantiator ( component );
126
+ if ( component .isEmbedded () && ReflectHelper .isAbstractClass ( this . componentClass ) ) {
127
+ return new ProxiedInstantiator ( this . componentClass );
133
128
}
134
129
if ( optimizer == null ) {
135
- return new PojoInstantiator ( component , null );
130
+ return new PojoInstantiator ( this . componentClass , null );
136
131
}
137
132
else {
138
- return new PojoInstantiator ( component , optimizer .getInstantiationOptimizer () );
133
+ return new PojoInstantiator ( this . componentClass , optimizer .getInstantiationOptimizer () );
139
134
}
140
135
}
141
136
142
137
protected Getter buildGetter (Component component , Property prop ) {
143
- return prop .getGetter ( component . getComponentClass () );
138
+ return prop .getGetter ( this . componentClass );
144
139
}
145
140
146
141
protected Setter buildSetter (Component component , Property prop ) {
147
- return prop .getSetter ( component .getComponentClass () );
142
+ return prop .getSetter ( this .componentClass );
143
+ }
144
+
145
+ @ Override
146
+ protected void setComponentClass (Component component ) {
147
+ this .componentClass = component .getComponentClass ();
148
148
}
149
149
150
150
private static class ProxiedInstantiator implements Instantiator {
151
151
private final Class proxiedClass ;
152
152
private final BasicProxyFactory factory ;
153
153
154
- public ProxiedInstantiator (Component component ) {
155
- proxiedClass = component . getComponentClass () ;
154
+ public ProxiedInstantiator (Class componentClass ) {
155
+ proxiedClass = componentClass ;
156
156
if ( proxiedClass .isInterface () ) {
157
157
factory = Environment .getBytecodeProvider ()
158
158
.getProxyFactoryFactory ()
0 commit comments