public class org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver implements org.springframework.instrument.classloading.LoadTimeWeaver
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver
super_class: java.lang.Object
{
private static final java.lang.String ADD_TRANSFORMER_METHOD_NAME;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "addTransformer"
private static final java.lang.String GET_THROWAWAY_CLASS_LOADER_METHOD_NAME;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "getThrowawayClassLoader"
private static final org.apache.commons.logging.Log logger;
descriptor: Lorg/apache/commons/logging/Log;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final java.lang.ClassLoader classLoader;
descriptor: Ljava/lang/ClassLoader;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.lang.reflect.Method addTransformerMethod;
descriptor: Ljava/lang/reflect/Method;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.lang.reflect.Method getThrowawayClassLoaderMethod;
descriptor: Ljava/lang/reflect/Method;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lorg/springframework/instrument/classloading/ReflectiveLoadTimeWeaver;
invokestatic org.apache.commons.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;
putstatic org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver.logger:Lorg/apache/commons/logging/Log;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokestatic org.springframework.util.ClassUtils.getDefaultClassLoader:()Ljava/lang/ClassLoader;
invokespecial org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver.<init>:(Ljava/lang/ClassLoader;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/springframework/instrument/classloading/ReflectiveLoadTimeWeaver;
public void <init>(java.lang.ClassLoader);
descriptor: (Ljava/lang/ClassLoader;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=4, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 1
ldc "ClassLoader must not be null"
invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
2: aload 0
aload 1
putfield org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver.classLoader:Ljava/lang/ClassLoader;
3: aload 0
getfield org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver.classLoader:Ljava/lang/ClassLoader;
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
ldc "addTransformer"
iconst_1
anewarray java.lang.Class
dup
iconst_0
ldc Ljava/lang/instrument/ClassFileTransformer;
aastore
4: invokestatic org.springframework.util.ClassUtils.getMethodIfAvailable:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
astore 2
start local 2 5: aload 2
ifnonnull 11
6: new java.lang.IllegalStateException
dup
7: new java.lang.StringBuilder
dup
ldc "ClassLoader ["
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "] does NOT provide an "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
8: ldc "'addTransformer(ClassFileTransformer)' method."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
9: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
10: invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
11: StackMap locals: org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver java.lang.ClassLoader java.lang.reflect.Method
StackMap stack:
aload 0
aload 2
putfield org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver.addTransformerMethod:Ljava/lang/reflect/Method;
12: aload 0
getfield org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver.classLoader:Ljava/lang/ClassLoader;
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
ldc "getThrowawayClassLoader"
iconst_0
anewarray java.lang.Class
13: invokestatic org.springframework.util.ClassUtils.getMethodIfAvailable:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
astore 3
start local 3 14: aload 3
ifnonnull 19
15: getstatic org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver.logger:Lorg/apache/commons/logging/Log;
invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
ifeq 19
16: getstatic org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver.logger:Lorg/apache/commons/logging/Log;
new java.lang.StringBuilder
dup
ldc "The ClassLoader ["
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "] does NOT provide a "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
17: ldc "'getThrowawayClassLoader()' method; SimpleThrowawayClassLoader will be used instead."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
18: invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
19: StackMap locals: java.lang.reflect.Method
StackMap stack:
aload 0
aload 3
putfield org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver.getThrowawayClassLoaderMethod:Ljava/lang/reflect/Method;
20: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lorg/springframework/instrument/classloading/ReflectiveLoadTimeWeaver;
0 21 1 classLoader Ljava/lang/ClassLoader;
5 21 2 addTransformerMethod Ljava/lang/reflect/Method;
14 21 3 getThrowawayClassLoaderMethod Ljava/lang/reflect/Method;
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=6, 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.ReflectiveLoadTimeWeaver.addTransformerMethod:Ljava/lang/reflect/Method;
aload 0
getfield org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver.classLoader:Ljava/lang/ClassLoader;
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 1
aastore
invokestatic org.springframework.util.ReflectionUtils.invokeMethod:(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
pop
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/springframework/instrument/classloading/ReflectiveLoadTimeWeaver;
0 3 1 transformer Ljava/lang/instrument/ClassFileTransformer;
MethodParameters:
Name Flags
transformer
public java.lang.ClassLoader getInstrumentableClassLoader();
descriptor: ()Ljava/lang/ClassLoader;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver.classLoader:Ljava/lang/ClassLoader;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/instrument/classloading/ReflectiveLoadTimeWeaver;
public java.lang.ClassLoader getThrowawayClassLoader();
descriptor: ()Ljava/lang/ClassLoader;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=1
start local 0 0: aload 0
getfield org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver.getThrowawayClassLoaderMethod:Ljava/lang/reflect/Method;
ifnull 6
1: aload 0
getfield org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver.getThrowawayClassLoaderMethod:Ljava/lang/reflect/Method;
aload 0
getfield org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver.classLoader:Ljava/lang/ClassLoader;
invokestatic org.springframework.util.ReflectionUtils.invokeMethod:(Ljava/lang/reflect/Method;Ljava/lang/Object;)Ljava/lang/Object;
2: checkcast java.lang.ClassLoader
astore 1
start local 1 3: aload 1
instanceof org.springframework.core.DecoratingClassLoader
ifeq 4
aload 1
goto 5
4: StackMap locals: java.lang.ClassLoader
StackMap stack:
new org.springframework.core.OverridingClassLoader
dup
aload 0
getfield org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver.classLoader:Ljava/lang/ClassLoader;
aload 1
invokespecial org.springframework.core.OverridingClassLoader.<init>:(Ljava/lang/ClassLoader;Ljava/lang/ClassLoader;)V
5: StackMap locals:
StackMap stack: java.lang.ClassLoader
areturn
end local 1 6: StackMap locals:
StackMap stack:
new org.springframework.instrument.classloading.SimpleThrowawayClassLoader
dup
aload 0
getfield org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver.classLoader:Ljava/lang/ClassLoader;
invokespecial org.springframework.instrument.classloading.SimpleThrowawayClassLoader.<init>:(Ljava/lang/ClassLoader;)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/springframework/instrument/classloading/ReflectiveLoadTimeWeaver;
3 6 1 target Ljava/lang/ClassLoader;
}
SourceFile: "ReflectiveLoadTimeWeaver.java"