HHH-14575 Adapt BasicProxyFactoryImpl to be more native-image friendly
This commit is contained in:
parent
1023ee02b9
commit
0a4cd8e800
|
@ -6,6 +6,7 @@
|
||||||
*/
|
*/
|
||||||
package org.hibernate.bytecode.internal.bytebuddy;
|
package org.hibernate.bytecode.internal.bytebuddy;
|
||||||
|
|
||||||
|
import java.lang.reflect.Constructor;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
@ -28,6 +29,7 @@ public class BasicProxyFactoryImpl implements BasicProxyFactory {
|
||||||
|
|
||||||
private final Class proxyClass;
|
private final Class proxyClass;
|
||||||
private final ProxyConfiguration.Interceptor interceptor;
|
private final ProxyConfiguration.Interceptor interceptor;
|
||||||
|
private final Constructor proxyClassConstructor;
|
||||||
|
|
||||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||||
public BasicProxyFactoryImpl(Class superClass, Class[] interfaces, ByteBuddyState byteBuddyState) {
|
public BasicProxyFactoryImpl(Class superClass, Class[] interfaces, ByteBuddyState byteBuddyState) {
|
||||||
|
@ -49,12 +51,18 @@ public class BasicProxyFactoryImpl implements BasicProxyFactory {
|
||||||
.intercept( byteBuddyState.getProxyDefinitionHelpers().getInterceptorFieldAccessor() )
|
.intercept( byteBuddyState.getProxyDefinitionHelpers().getInterceptorFieldAccessor() )
|
||||||
);
|
);
|
||||||
this.interceptor = new PassThroughInterceptor( proxyClass.getName() );
|
this.interceptor = new PassThroughInterceptor( proxyClass.getName() );
|
||||||
|
try {
|
||||||
|
proxyClassConstructor = proxyClass.getConstructor();
|
||||||
|
}
|
||||||
|
catch (NoSuchMethodException e) {
|
||||||
|
throw new AssertionFailure( "Could not access default constructor from newly generated basic proxy" );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object getProxy() {
|
public Object getProxy() {
|
||||||
try {
|
try {
|
||||||
final ProxyConfiguration proxy = (ProxyConfiguration) proxyClass.newInstance();
|
final ProxyConfiguration proxy = (ProxyConfiguration) proxyClassConstructor.newInstance();
|
||||||
proxy.$$_hibernate_set_interceptor( this.interceptor );
|
proxy.$$_hibernate_set_interceptor( this.interceptor );
|
||||||
return proxy;
|
return proxy;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue