public class org.springframework.instrument.classloading.WeavingTransformer
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.springframework.instrument.classloading.WeavingTransformer
super_class: java.lang.Object
{
private final java.lang.ClassLoader classLoader;
descriptor: Ljava/lang/ClassLoader;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
private final java.util.List<java.lang.instrument.ClassFileTransformer> transformers;
descriptor: Ljava/util/List;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/List<Ljava/lang/instrument/ClassFileTransformer;>;
public void <init>(java.lang.ClassLoader);
descriptor: (Ljava/lang/ClassLoader;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
putfield org.springframework.instrument.classloading.WeavingTransformer.transformers:Ljava/util/List;
2: aload 0
aload 1
putfield org.springframework.instrument.classloading.WeavingTransformer.classLoader:Ljava/lang/ClassLoader;
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/springframework/instrument/classloading/WeavingTransformer;
0 4 1 classLoader Ljava/lang/ClassLoader;
RuntimeVisibleParameterAnnotations:
0:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
classLoader
public void addTransformer(java.lang.instrument.ClassFileTransformer);
descriptor: (Ljava/lang/instrument/ClassFileTransformer;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ldc "Transformer must not be null"
invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
1: aload 0
getfield org.springframework.instrument.classloading.WeavingTransformer.transformers:Ljava/util/List;
aload 1
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/springframework/instrument/classloading/WeavingTransformer;
0 3 1 transformer Ljava/lang/instrument/ClassFileTransformer;
MethodParameters:
Name Flags
transformer
public byte[] transformIfNecessary(java.lang.String, byte[]);
descriptor: (Ljava/lang/String;[B)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 1
ldc "."
ldc "/"
invokestatic org.springframework.util.StringUtils.replace:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
astore 3
start local 3 1: aload 0
aload 1
aload 3
aload 2
aconst_null
invokevirtual org.springframework.instrument.classloading.WeavingTransformer.transformIfNecessary:(Ljava/lang/String;Ljava/lang/String;[BLjava/security/ProtectionDomain;)[B
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/springframework/instrument/classloading/WeavingTransformer;
0 2 1 className Ljava/lang/String;
0 2 2 bytes [B
1 2 3 internalName Ljava/lang/String;
MethodParameters:
Name Flags
className
bytes
public byte[] transformIfNecessary(java.lang.String, java.lang.String, byte[], java.security.ProtectionDomain);
descriptor: (Ljava/lang/String;Ljava/lang/String;[BLjava/security/ProtectionDomain;)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=9, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 3
astore 5
start local 5 1: aload 0
getfield org.springframework.instrument.classloading.WeavingTransformer.transformers:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 7
goto 9
StackMap locals: org.springframework.instrument.classloading.WeavingTransformer java.lang.String java.lang.String byte[] java.security.ProtectionDomain byte[] top java.util.Iterator
StackMap stack:
2: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.instrument.ClassFileTransformer
astore 6
start local 6 3: aload 6
aload 0
getfield org.springframework.instrument.classloading.WeavingTransformer.classLoader:Ljava/lang/ClassLoader;
aload 2
aconst_null
aload 4
aload 5
invokeinterface java.lang.instrument.ClassFileTransformer.transform:(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/Class;Ljava/security/ProtectionDomain;[B)[B
astore 8
start local 8 4: aload 8
ifnull 9
5: aload 8
astore 5
end local 8 6: goto 9
7: StackMap locals: org.springframework.instrument.classloading.WeavingTransformer java.lang.String java.lang.String byte[] java.security.ProtectionDomain byte[] java.lang.instrument.ClassFileTransformer java.util.Iterator
StackMap stack: java.lang.instrument.IllegalClassFormatException
astore 8
start local 8 8: new java.lang.IllegalStateException
dup
ldc "Class file transformation failed"
aload 8
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 8 end local 6 9: StackMap locals: org.springframework.instrument.classloading.WeavingTransformer java.lang.String java.lang.String byte[] java.security.ProtectionDomain byte[] top java.util.Iterator
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
10: aload 5
areturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lorg/springframework/instrument/classloading/WeavingTransformer;
0 11 1 className Ljava/lang/String;
0 11 2 internalName Ljava/lang/String;
0 11 3 bytes [B
0 11 4 pd Ljava/security/ProtectionDomain;
1 11 5 result [B
3 9 6 cft Ljava/lang/instrument/ClassFileTransformer;
4 6 8 transformed [B
8 9 8 ex Ljava/lang/instrument/IllegalClassFormatException;
Exception table:
from to target type
3 6 7 Class java.lang.instrument.IllegalClassFormatException
RuntimeVisibleParameterAnnotations:
0:
1:
2:
3:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
className
internalName
bytes
pd
}
SourceFile: "WeavingTransformer.java"