mirror of
https://github.com/hibernate/hibernate-orm
synced 2025-02-17 16:44:57 +00:00
HHH-13097 Cache a static ByteBuddy matcher
This commit is contained in:
parent
38e48ef0bc
commit
af519e3c12
@ -26,6 +26,7 @@
|
||||
|
||||
import net.bytebuddy.asm.Advice;
|
||||
import net.bytebuddy.asm.AsmVisitorWrapper;
|
||||
import net.bytebuddy.description.NamedElement;
|
||||
import net.bytebuddy.description.field.FieldDescription;
|
||||
import net.bytebuddy.description.method.MethodDescription;
|
||||
import net.bytebuddy.description.modifier.Visibility;
|
||||
@ -39,12 +40,15 @@
|
||||
import net.bytebuddy.jar.asm.MethodVisitor;
|
||||
import net.bytebuddy.jar.asm.Opcodes;
|
||||
import net.bytebuddy.jar.asm.Type;
|
||||
import net.bytebuddy.matcher.ElementMatcher.Junction;
|
||||
import net.bytebuddy.pool.TypePool;
|
||||
|
||||
final class PersistentAttributeTransformer implements AsmVisitorWrapper.ForDeclaredMethods.MethodVisitorWrapper {
|
||||
|
||||
private static final CoreMessageLogger log = CoreLogging.messageLogger( PersistentAttributeTransformer.class );
|
||||
|
||||
private static final Junction<MethodDescription> NOT_HIBERNATE_GENERATED = not( nameStartsWith( "$$_hibernate_" ) );
|
||||
|
||||
private final TypeDescription managedCtClass;
|
||||
|
||||
private final ByteBuddyEnhancementContext enhancementContext;
|
||||
@ -172,7 +176,7 @@ private boolean isEnhanced(String owner, String name, String desc) {
|
||||
DynamicType.Builder<?> applyTo(DynamicType.Builder<?> builder, boolean accessor) {
|
||||
boolean compositeOwner = false;
|
||||
|
||||
builder = builder.visit( new AsmVisitorWrapper.ForDeclaredMethods().invokable( not( nameStartsWith( "$$_hibernate_" ) ), this ) );
|
||||
builder = builder.visit( new AsmVisitorWrapper.ForDeclaredMethods().invokable( NOT_HIBERNATE_GENERATED, this ) );
|
||||
for ( AnnotatedFieldDescription enhancedField : enhancedFields ) {
|
||||
builder = builder
|
||||
.defineMethod(
|
||||
@ -254,7 +258,7 @@ private Implementation fieldWriter(AnnotatedFieldDescription enhancedField) {
|
||||
|
||||
DynamicType.Builder<?> applyExtended(DynamicType.Builder<?> builder) {
|
||||
AsmVisitorWrapper.ForDeclaredMethods.MethodVisitorWrapper enhancer = new FieldAccessEnhancer( managedCtClass, enhancementContext, classPool );
|
||||
return builder.visit( new AsmVisitorWrapper.ForDeclaredMethods().invokable( not( nameStartsWith( "$$_hibernate_" ) ), enhancer ) );
|
||||
return builder.visit( new AsmVisitorWrapper.ForDeclaredMethods().invokable( NOT_HIBERNATE_GENERATED, enhancer ) );
|
||||
}
|
||||
|
||||
private static class FieldMethodReader implements ByteCodeAppender {
|
||||
|
Loading…
x
Reference in New Issue
Block a user