public class org.springframework.expression.spel.support.ReflectivePropertyAccessor implements org.springframework.expression.PropertyAccessor
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.springframework.expression.spel.support.ReflectivePropertyAccessor
super_class: java.lang.Object
{
private static final java.util.Set<java.lang.Class<?>> ANY_TYPES;
descriptor: Ljava/util/Set;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/Set<Ljava/lang/Class<*>;>;
private static final java.util.Set<java.lang.Class<?>> BOOLEAN_TYPES;
descriptor: Ljava/util/Set;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/Set<Ljava/lang/Class<*>;>;
private final boolean allowWrite;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.Map<org.springframework.expression.spel.support.ReflectivePropertyAccessor$PropertyCacheKey, org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair> readerCache;
descriptor: Ljava/util/Map;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Map<Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor$PropertyCacheKey;Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor$InvokerPair;>;
private final java.util.Map<org.springframework.expression.spel.support.ReflectivePropertyAccessor$PropertyCacheKey, java.lang.reflect.Member> writerCache;
descriptor: Ljava/util/Map;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Map<Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor$PropertyCacheKey;Ljava/lang/reflect/Member;>;
private final java.util.Map<org.springframework.expression.spel.support.ReflectivePropertyAccessor$PropertyCacheKey, org.springframework.core.convert.TypeDescriptor> typeDescriptorCache;
descriptor: Ljava/util/Map;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Map<Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor$PropertyCacheKey;Lorg/springframework/core/convert/TypeDescriptor;>;
private final java.util.Map<java.lang.Class<?>, java.lang.reflect.Method[]> sortedMethodsCache;
descriptor: Ljava/util/Map;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Map<Ljava/lang/Class<*>;[Ljava/lang/reflect/Method;>;
private volatile org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair lastReadInvokerPair;
descriptor: Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor$InvokerPair;
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=1, args_size=0
0: invokestatic java.util.Collections.emptySet:()Ljava/util/Set;
putstatic org.springframework.expression.spel.support.ReflectivePropertyAccessor.ANY_TYPES:Ljava/util/Set;
1: new java.util.HashSet
dup
iconst_4
invokespecial java.util.HashSet.<init>:(I)V
astore 0
start local 0 2: aload 0
ldc Ljava/lang/Boolean;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
3: aload 0
getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
4: aload 0
invokestatic java.util.Collections.unmodifiableSet:(Ljava/util/Set;)Ljava/util/Set;
putstatic org.springframework.expression.spel.support.ReflectivePropertyAccessor.BOOLEAN_TYPES:Ljava/util/Set;
end local 0 5: return
LocalVariableTable:
Start End Slot Name Signature
2 5 0 booleanTypes Ljava/util/Set<Ljava/lang/Class<*>;>;
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.concurrent.ConcurrentHashMap
dup
bipush 64
invokespecial java.util.concurrent.ConcurrentHashMap.<init>:(I)V
putfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.readerCache:Ljava/util/Map;
2: aload 0
new java.util.concurrent.ConcurrentHashMap
dup
bipush 64
invokespecial java.util.concurrent.ConcurrentHashMap.<init>:(I)V
putfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.writerCache:Ljava/util/Map;
3: aload 0
new java.util.concurrent.ConcurrentHashMap
dup
bipush 64
invokespecial java.util.concurrent.ConcurrentHashMap.<init>:(I)V
putfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.typeDescriptorCache:Ljava/util/Map;
4: aload 0
new java.util.concurrent.ConcurrentHashMap
dup
bipush 64
invokespecial java.util.concurrent.ConcurrentHashMap.<init>:(I)V
putfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.sortedMethodsCache:Ljava/util/Map;
5: aload 0
iconst_1
putfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.allowWrite:Z
6: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor;
public void <init>(boolean);
descriptor: (Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, 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.concurrent.ConcurrentHashMap
dup
bipush 64
invokespecial java.util.concurrent.ConcurrentHashMap.<init>:(I)V
putfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.readerCache:Ljava/util/Map;
2: aload 0
new java.util.concurrent.ConcurrentHashMap
dup
bipush 64
invokespecial java.util.concurrent.ConcurrentHashMap.<init>:(I)V
putfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.writerCache:Ljava/util/Map;
3: aload 0
new java.util.concurrent.ConcurrentHashMap
dup
bipush 64
invokespecial java.util.concurrent.ConcurrentHashMap.<init>:(I)V
putfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.typeDescriptorCache:Ljava/util/Map;
4: aload 0
new java.util.concurrent.ConcurrentHashMap
dup
bipush 64
invokespecial java.util.concurrent.ConcurrentHashMap.<init>:(I)V
putfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.sortedMethodsCache:Ljava/util/Map;
5: aload 0
iload 1
putfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.allowWrite:Z
6: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor;
0 7 1 allowWrite Z
MethodParameters:
Name Flags
allowWrite
public java.lang.Class<?>[] getSpecificTargetClasses();
descriptor: ()[Ljava/lang/Class;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aconst_null
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor;
Signature: ()[Ljava/lang/Class<*>;
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
public boolean canRead(org.springframework.expression.EvaluationContext, java.lang.Object, java.lang.String);
descriptor: (Lorg/springframework/expression/EvaluationContext;Ljava/lang/Object;Ljava/lang/String;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
ifnonnull 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 2
instanceof java.lang.Class
ifeq 3
aload 2
checkcast java.lang.Class
goto 4
StackMap locals:
StackMap stack:
3: aload 2
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
StackMap locals:
StackMap stack: java.lang.Class
4: astore 4
start local 4 5: aload 4
invokevirtual java.lang.Class.isArray:()Z
ifeq 7
aload 3
ldc "length"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 7
6: iconst_1
ireturn
7: StackMap locals: java.lang.Class
StackMap stack:
new org.springframework.expression.spel.support.ReflectivePropertyAccessor$PropertyCacheKey
dup
aload 4
aload 3
aload 2
instanceof java.lang.Class
invokespecial org.springframework.expression.spel.support.ReflectivePropertyAccessor$PropertyCacheKey.<init>:(Ljava/lang/Class;Ljava/lang/String;Z)V
astore 5
start local 5 8: aload 0
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.readerCache:Ljava/util/Map;
aload 5
invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
ifeq 10
9: iconst_1
ireturn
10: StackMap locals: org.springframework.expression.spel.support.ReflectivePropertyAccessor$PropertyCacheKey
StackMap stack:
aload 0
aload 3
aload 4
aload 2
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.findGetterForProperty:(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/reflect/Method;
astore 6
start local 6 11: aload 6
ifnull 17
12: new org.springframework.core.convert.Property
dup
aload 4
aload 6
aconst_null
invokespecial org.springframework.core.convert.Property.<init>:(Ljava/lang/Class;Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)V
astore 7
start local 7 13: new org.springframework.core.convert.TypeDescriptor
dup
aload 7
invokespecial org.springframework.core.convert.TypeDescriptor.<init>:(Lorg/springframework/core/convert/Property;)V
astore 8
start local 8 14: aload 0
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.readerCache:Ljava/util/Map;
aload 5
new org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair
dup
aload 6
aload 8
invokespecial org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair.<init>:(Ljava/lang/reflect/Member;Lorg/springframework/core/convert/TypeDescriptor;)V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
15: aload 0
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.typeDescriptorCache:Ljava/util/Map;
aload 5
aload 8
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
16: iconst_1
ireturn
end local 8 end local 7 17: StackMap locals: java.lang.reflect.Method
StackMap stack:
aload 0
aload 3
aload 4
aload 2
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.findField:(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/reflect/Field;
astore 7
start local 7 18: aload 7
ifnull 23
19: new org.springframework.core.convert.TypeDescriptor
dup
aload 7
invokespecial org.springframework.core.convert.TypeDescriptor.<init>:(Ljava/lang/reflect/Field;)V
astore 8
start local 8 20: aload 0
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.readerCache:Ljava/util/Map;
aload 5
new org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair
dup
aload 7
aload 8
invokespecial org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair.<init>:(Ljava/lang/reflect/Member;Lorg/springframework/core/convert/TypeDescriptor;)V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
21: aload 0
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.typeDescriptorCache:Ljava/util/Map;
aload 5
aload 8
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
22: iconst_1
ireturn
end local 8 end local 7 23: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 6 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 24 0 this Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor;
0 24 1 context Lorg/springframework/expression/EvaluationContext;
0 24 2 target Ljava/lang/Object;
0 24 3 name Ljava/lang/String;
5 24 4 type Ljava/lang/Class<*>;
8 24 5 cacheKey Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor$PropertyCacheKey;
11 24 6 method Ljava/lang/reflect/Method;
13 17 7 property Lorg/springframework/core/convert/Property;
14 17 8 typeDescriptor Lorg/springframework/core/convert/TypeDescriptor;
18 23 7 field Ljava/lang/reflect/Field;
20 23 8 typeDescriptor Lorg/springframework/core/convert/TypeDescriptor;
Exceptions:
throws org.springframework.expression.AccessException
RuntimeVisibleParameterAnnotations:
0:
1:
org.springframework.lang.Nullable()
2:
MethodParameters:
Name Flags
context
target
name
public org.springframework.expression.TypedValue read(org.springframework.expression.EvaluationContext, java.lang.Object, java.lang.String);
descriptor: (Lorg/springframework/expression/EvaluationContext;Ljava/lang/Object;Ljava/lang/String;)Lorg/springframework/expression/TypedValue;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=10, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
ifnull 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: ldc "Target must not be null"
invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
3: aload 2
instanceof java.lang.Class
ifeq 4
aload 2
checkcast java.lang.Class
goto 5
StackMap locals:
StackMap stack:
4: aload 2
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
StackMap locals:
StackMap stack: java.lang.Class
5: astore 4
start local 4 6: aload 4
invokevirtual java.lang.Class.isArray:()Z
ifeq 10
aload 3
ldc "length"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 10
7: aload 2
instanceof java.lang.Class
ifeq 9
8: new org.springframework.expression.AccessException
dup
ldc "Cannot access length on array class itself"
invokespecial org.springframework.expression.AccessException.<init>:(Ljava/lang/String;)V
athrow
9: StackMap locals: java.lang.Class
StackMap stack:
new org.springframework.expression.TypedValue
dup
aload 2
invokestatic java.lang.reflect.Array.getLength:(Ljava/lang/Object;)I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokespecial org.springframework.expression.TypedValue.<init>:(Ljava/lang/Object;)V
areturn
10: StackMap locals:
StackMap stack:
new org.springframework.expression.spel.support.ReflectivePropertyAccessor$PropertyCacheKey
dup
aload 4
aload 3
aload 2
instanceof java.lang.Class
invokespecial org.springframework.expression.spel.support.ReflectivePropertyAccessor$PropertyCacheKey.<init>:(Ljava/lang/Class;Ljava/lang/String;Z)V
astore 5
start local 5 11: aload 0
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.readerCache:Ljava/util/Map;
aload 5
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair
astore 6
start local 6 12: aload 0
aload 6
putfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.lastReadInvokerPair:Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor$InvokerPair;
13: aload 6
ifnull 14
aload 6
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair.member:Ljava/lang/reflect/Member;
instanceof java.lang.reflect.Method
ifeq 32
14: StackMap locals: org.springframework.expression.spel.support.ReflectivePropertyAccessor$PropertyCacheKey org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair
StackMap stack:
aload 6
ifnull 15
aload 6
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair.member:Ljava/lang/reflect/Member;
goto 16
StackMap locals:
StackMap stack:
15: aconst_null
StackMap locals:
StackMap stack: java.lang.reflect.Member
16: checkcast java.lang.reflect.Method
astore 7
start local 7 17: aload 7
ifnonnull 25
18: aload 0
aload 3
aload 4
aload 2
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.findGetterForProperty:(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/reflect/Method;
astore 7
19: aload 7
ifnull 25
20: new org.springframework.core.convert.Property
dup
aload 4
aload 7
aconst_null
invokespecial org.springframework.core.convert.Property.<init>:(Ljava/lang/Class;Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)V
astore 8
start local 8 21: new org.springframework.core.convert.TypeDescriptor
dup
aload 8
invokespecial org.springframework.core.convert.TypeDescriptor.<init>:(Lorg/springframework/core/convert/Property;)V
astore 9
start local 9 22: new org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair
dup
aload 7
aload 9
invokespecial org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair.<init>:(Ljava/lang/reflect/Member;Lorg/springframework/core/convert/TypeDescriptor;)V
astore 6
23: aload 0
aload 6
putfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.lastReadInvokerPair:Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor$InvokerPair;
24: aload 0
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.readerCache:Ljava/util/Map;
aload 5
aload 6
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 9 end local 8 25: StackMap locals: java.lang.reflect.Method
StackMap stack:
aload 7
ifnull 32
26: aload 7
invokestatic org.springframework.util.ReflectionUtils.makeAccessible:(Ljava/lang/reflect/Method;)V
27: aload 7
aload 2
iconst_0
anewarray java.lang.Object
invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
astore 8
start local 8 28: new org.springframework.expression.TypedValue
dup
aload 8
aload 6
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair.typeDescriptor:Lorg/springframework/core/convert/TypeDescriptor;
aload 8
invokevirtual org.springframework.core.convert.TypeDescriptor.narrow:(Ljava/lang/Object;)Lorg/springframework/core/convert/TypeDescriptor;
invokespecial org.springframework.expression.TypedValue.<init>:(Ljava/lang/Object;Lorg/springframework/core/convert/TypeDescriptor;)V
29: areturn
end local 8 30: StackMap locals:
StackMap stack: java.lang.Exception
astore 8
start local 8 31: new org.springframework.expression.AccessException
dup
new java.lang.StringBuilder
dup
ldc "Unable to access property '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "' through getter method"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 8
invokespecial org.springframework.expression.AccessException.<init>:(Ljava/lang/String;Ljava/lang/Exception;)V
athrow
end local 8 end local 7 32: StackMap locals:
StackMap stack:
aload 6
ifnull 33
aload 6
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair.member:Ljava/lang/reflect/Member;
instanceof java.lang.reflect.Field
ifeq 49
33: StackMap locals:
StackMap stack:
aload 6
ifnonnull 34
aconst_null
goto 35
StackMap locals:
StackMap stack:
34: aload 6
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair.member:Ljava/lang/reflect/Member;
StackMap locals:
StackMap stack: java.lang.reflect.Member
35: checkcast java.lang.reflect.Field
astore 7
start local 7 36: aload 7
ifnonnull 42
37: aload 0
aload 3
aload 4
aload 2
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.findField:(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/reflect/Field;
astore 7
38: aload 7
ifnull 42
39: new org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair
dup
aload 7
new org.springframework.core.convert.TypeDescriptor
dup
aload 7
invokespecial org.springframework.core.convert.TypeDescriptor.<init>:(Ljava/lang/reflect/Field;)V
invokespecial org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair.<init>:(Ljava/lang/reflect/Member;Lorg/springframework/core/convert/TypeDescriptor;)V
astore 6
40: aload 0
aload 6
putfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.lastReadInvokerPair:Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor$InvokerPair;
41: aload 0
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.readerCache:Ljava/util/Map;
aload 5
aload 6
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
42: StackMap locals: java.lang.reflect.Field
StackMap stack:
aload 7
ifnull 49
43: aload 7
invokestatic org.springframework.util.ReflectionUtils.makeAccessible:(Ljava/lang/reflect/Field;)V
44: aload 7
aload 2
invokevirtual java.lang.reflect.Field.get:(Ljava/lang/Object;)Ljava/lang/Object;
astore 8
start local 8 45: new org.springframework.expression.TypedValue
dup
aload 8
aload 6
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair.typeDescriptor:Lorg/springframework/core/convert/TypeDescriptor;
aload 8
invokevirtual org.springframework.core.convert.TypeDescriptor.narrow:(Ljava/lang/Object;)Lorg/springframework/core/convert/TypeDescriptor;
invokespecial org.springframework.expression.TypedValue.<init>:(Ljava/lang/Object;Lorg/springframework/core/convert/TypeDescriptor;)V
46: areturn
end local 8 47: StackMap locals:
StackMap stack: java.lang.Exception
astore 8
start local 8 48: new org.springframework.expression.AccessException
dup
new java.lang.StringBuilder
dup
ldc "Unable to access field '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "'"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 8
invokespecial org.springframework.expression.AccessException.<init>:(Ljava/lang/String;Ljava/lang/Exception;)V
athrow
end local 8 end local 7 49: StackMap locals:
StackMap stack:
new org.springframework.expression.AccessException
dup
new java.lang.StringBuilder
dup
ldc "Neither getter method nor field found for property '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "'"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial org.springframework.expression.AccessException.<init>:(Ljava/lang/String;)V
athrow
end local 6 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 50 0 this Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor;
0 50 1 context Lorg/springframework/expression/EvaluationContext;
0 50 2 target Ljava/lang/Object;
0 50 3 name Ljava/lang/String;
6 50 4 type Ljava/lang/Class<*>;
11 50 5 cacheKey Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor$PropertyCacheKey;
12 50 6 invoker Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor$InvokerPair;
17 32 7 method Ljava/lang/reflect/Method;
21 25 8 property Lorg/springframework/core/convert/Property;
22 25 9 typeDescriptor Lorg/springframework/core/convert/TypeDescriptor;
28 30 8 value Ljava/lang/Object;
31 32 8 ex Ljava/lang/Exception;
36 49 7 field Ljava/lang/reflect/Field;
45 47 8 value Ljava/lang/Object;
48 49 8 ex Ljava/lang/Exception;
Exception table:
from to target type
26 29 30 Class java.lang.Exception
43 46 47 Class java.lang.Exception
Exceptions:
throws org.springframework.expression.AccessException
RuntimeVisibleParameterAnnotations:
0:
1:
org.springframework.lang.Nullable()
2:
MethodParameters:
Name Flags
context
target
name
public boolean canWrite(org.springframework.expression.EvaluationContext, java.lang.Object, java.lang.String);
descriptor: (Lorg/springframework/expression/EvaluationContext;Ljava/lang/Object;Ljava/lang/String;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.allowWrite:Z
ifeq 1
aload 2
ifnonnull 2
1: StackMap locals:
StackMap stack:
iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 2
instanceof java.lang.Class
ifeq 3
aload 2
checkcast java.lang.Class
goto 4
StackMap locals:
StackMap stack:
3: aload 2
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
StackMap locals:
StackMap stack: java.lang.Class
4: astore 4
start local 4 5: new org.springframework.expression.spel.support.ReflectivePropertyAccessor$PropertyCacheKey
dup
aload 4
aload 3
aload 2
instanceof java.lang.Class
invokespecial org.springframework.expression.spel.support.ReflectivePropertyAccessor$PropertyCacheKey.<init>:(Ljava/lang/Class;Ljava/lang/String;Z)V
astore 5
start local 5 6: aload 0
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.writerCache:Ljava/util/Map;
aload 5
invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
ifeq 8
7: iconst_1
ireturn
8: StackMap locals: java.lang.Class org.springframework.expression.spel.support.ReflectivePropertyAccessor$PropertyCacheKey
StackMap stack:
aload 0
aload 3
aload 4
aload 2
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.findSetterForProperty:(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/reflect/Method;
astore 6
start local 6 9: aload 6
ifnull 15
10: new org.springframework.core.convert.Property
dup
aload 4
aconst_null
aload 6
invokespecial org.springframework.core.convert.Property.<init>:(Ljava/lang/Class;Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)V
astore 7
start local 7 11: new org.springframework.core.convert.TypeDescriptor
dup
aload 7
invokespecial org.springframework.core.convert.TypeDescriptor.<init>:(Lorg/springframework/core/convert/Property;)V
astore 8
start local 8 12: aload 0
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.writerCache:Ljava/util/Map;
aload 5
aload 6
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
13: aload 0
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.typeDescriptorCache:Ljava/util/Map;
aload 5
aload 8
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
14: iconst_1
ireturn
end local 8 end local 7 15: StackMap locals: java.lang.reflect.Method
StackMap stack:
aload 0
aload 3
aload 4
aload 2
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.findField:(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/reflect/Field;
astore 7
start local 7 16: aload 7
ifnull 20
17: aload 0
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.writerCache:Ljava/util/Map;
aload 5
aload 7
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
18: aload 0
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.typeDescriptorCache:Ljava/util/Map;
aload 5
new org.springframework.core.convert.TypeDescriptor
dup
aload 7
invokespecial org.springframework.core.convert.TypeDescriptor.<init>:(Ljava/lang/reflect/Field;)V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
19: iconst_1
ireturn
end local 7 20: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 6 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 21 0 this Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor;
0 21 1 context Lorg/springframework/expression/EvaluationContext;
0 21 2 target Ljava/lang/Object;
0 21 3 name Ljava/lang/String;
5 21 4 type Ljava/lang/Class<*>;
6 21 5 cacheKey Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor$PropertyCacheKey;
9 21 6 method Ljava/lang/reflect/Method;
11 15 7 property Lorg/springframework/core/convert/Property;
12 15 8 typeDescriptor Lorg/springframework/core/convert/TypeDescriptor;
16 20 7 field Ljava/lang/reflect/Field;
Exceptions:
throws org.springframework.expression.AccessException
RuntimeVisibleParameterAnnotations:
0:
1:
org.springframework.lang.Nullable()
2:
MethodParameters:
Name Flags
context
target
name
public void write(org.springframework.expression.EvaluationContext, java.lang.Object, java.lang.String, java.lang.Object);
descriptor: (Lorg/springframework/expression/EvaluationContext;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=12, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.allowWrite:Z
ifne 4
1: new org.springframework.expression.AccessException
dup
new java.lang.StringBuilder
dup
ldc "PropertyAccessor for property '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
2: ldc "' on target ["
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "] does not allow write operations"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
3: invokespecial org.springframework.expression.AccessException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 2
ifnull 5
iconst_1
goto 6
StackMap locals:
StackMap stack:
5: iconst_0
StackMap locals:
StackMap stack: int
6: ldc "Target must not be null"
invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
7: aload 2
instanceof java.lang.Class
ifeq 8
aload 2
checkcast java.lang.Class
goto 9
StackMap locals:
StackMap stack:
8: aload 2
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
StackMap locals:
StackMap stack: java.lang.Class
9: astore 5
start local 5 10: aload 4
astore 6
start local 6 11: aload 0
aload 1
aload 2
aload 3
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.getTypeDescriptor:(Lorg/springframework/expression/EvaluationContext;Ljava/lang/Object;Ljava/lang/String;)Lorg/springframework/core/convert/TypeDescriptor;
astore 7
start local 7 12: aload 7
ifnull 19
13: aload 1
invokeinterface org.springframework.expression.EvaluationContext.getTypeConverter:()Lorg/springframework/expression/TypeConverter;
14: aload 4
aload 4
invokestatic org.springframework.core.convert.TypeDescriptor.forObject:(Ljava/lang/Object;)Lorg/springframework/core/convert/TypeDescriptor;
aload 7
15: invokeinterface org.springframework.expression.TypeConverter.convertValue:(Ljava/lang/Object;Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)Ljava/lang/Object;
astore 6
16: goto 19
17: StackMap locals: org.springframework.expression.spel.support.ReflectivePropertyAccessor org.springframework.expression.EvaluationContext java.lang.Object java.lang.String java.lang.Object java.lang.Class java.lang.Object org.springframework.core.convert.TypeDescriptor
StackMap stack: org.springframework.expression.EvaluationException
astore 8
start local 8 18: new org.springframework.expression.AccessException
dup
ldc "Type conversion failure"
aload 8
invokespecial org.springframework.expression.AccessException.<init>:(Ljava/lang/String;Ljava/lang/Exception;)V
athrow
end local 8 19: StackMap locals:
StackMap stack:
new org.springframework.expression.spel.support.ReflectivePropertyAccessor$PropertyCacheKey
dup
aload 5
aload 3
aload 2
instanceof java.lang.Class
invokespecial org.springframework.expression.spel.support.ReflectivePropertyAccessor$PropertyCacheKey.<init>:(Ljava/lang/Class;Ljava/lang/String;Z)V
astore 8
start local 8 20: aload 0
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.writerCache:Ljava/util/Map;
aload 8
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.reflect.Member
astore 9
start local 9 21: aload 9
ifnull 22
aload 9
instanceof java.lang.reflect.Method
ifeq 34
22: StackMap locals: org.springframework.expression.spel.support.ReflectivePropertyAccessor$PropertyCacheKey java.lang.reflect.Member
StackMap stack:
aload 9
checkcast java.lang.reflect.Method
astore 10
start local 10 23: aload 10
ifnonnull 28
24: aload 0
aload 3
aload 5
aload 2
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.findSetterForProperty:(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/reflect/Method;
astore 10
25: aload 10
ifnull 28
26: aload 10
astore 9
27: aload 0
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.writerCache:Ljava/util/Map;
aload 8
aload 9
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
28: StackMap locals: java.lang.reflect.Method
StackMap stack:
aload 10
ifnull 34
29: aload 10
invokestatic org.springframework.util.ReflectionUtils.makeAccessible:(Ljava/lang/reflect/Method;)V
30: aload 10
aload 2
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 6
aastore
invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
pop
31: return
32: StackMap locals:
StackMap stack: java.lang.Exception
astore 11
start local 11 33: new org.springframework.expression.AccessException
dup
new java.lang.StringBuilder
dup
ldc "Unable to access property '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "' through setter method"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 11
invokespecial org.springframework.expression.AccessException.<init>:(Ljava/lang/String;Ljava/lang/Exception;)V
athrow
end local 11 end local 10 34: StackMap locals:
StackMap stack:
aload 9
ifnull 35
aload 9
instanceof java.lang.reflect.Field
ifeq 47
35: StackMap locals:
StackMap stack:
aload 9
checkcast java.lang.reflect.Field
astore 10
start local 10 36: aload 10
ifnonnull 41
37: aload 0
aload 3
aload 5
aload 2
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.findField:(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/reflect/Field;
astore 10
38: aload 10
ifnull 41
39: aload 10
astore 9
40: aload 0
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.writerCache:Ljava/util/Map;
aload 8
aload 9
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
41: StackMap locals: java.lang.reflect.Field
StackMap stack:
aload 10
ifnull 47
42: aload 10
invokestatic org.springframework.util.ReflectionUtils.makeAccessible:(Ljava/lang/reflect/Field;)V
43: aload 10
aload 2
aload 6
invokevirtual java.lang.reflect.Field.set:(Ljava/lang/Object;Ljava/lang/Object;)V
44: return
45: StackMap locals:
StackMap stack: java.lang.Exception
astore 11
start local 11 46: new org.springframework.expression.AccessException
dup
new java.lang.StringBuilder
dup
ldc "Unable to access field '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "'"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 11
invokespecial org.springframework.expression.AccessException.<init>:(Ljava/lang/String;Ljava/lang/Exception;)V
athrow
end local 11 end local 10 47: StackMap locals:
StackMap stack:
new org.springframework.expression.AccessException
dup
new java.lang.StringBuilder
dup
ldc "Neither setter method nor field found for property '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "'"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial org.springframework.expression.AccessException.<init>:(Ljava/lang/String;)V
athrow
end local 9 end local 8 end local 7 end local 6 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 48 0 this Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor;
0 48 1 context Lorg/springframework/expression/EvaluationContext;
0 48 2 target Ljava/lang/Object;
0 48 3 name Ljava/lang/String;
0 48 4 newValue Ljava/lang/Object;
10 48 5 type Ljava/lang/Class<*>;
11 48 6 possiblyConvertedNewValue Ljava/lang/Object;
12 48 7 typeDescriptor Lorg/springframework/core/convert/TypeDescriptor;
18 19 8 evaluationException Lorg/springframework/expression/EvaluationException;
20 48 8 cacheKey Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor$PropertyCacheKey;
21 48 9 cachedMember Ljava/lang/reflect/Member;
23 34 10 method Ljava/lang/reflect/Method;
33 34 11 ex Ljava/lang/Exception;
36 47 10 field Ljava/lang/reflect/Field;
46 47 11 ex Ljava/lang/Exception;
Exception table:
from to target type
13 16 17 Class org.springframework.expression.EvaluationException
29 31 32 Class java.lang.Exception
42 44 45 Class java.lang.Exception
Exceptions:
throws org.springframework.expression.AccessException
RuntimeVisibleParameterAnnotations:
0:
1:
org.springframework.lang.Nullable()
2:
3:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
context
target
name
newValue
public java.lang.reflect.Member getLastReadInvokerPair();
descriptor: ()Ljava/lang/reflect/Member;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=2, args_size=1
start local 0 0: aload 0
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.lastReadInvokerPair:Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor$InvokerPair;
astore 1
start local 1 1: aload 1
ifnull 2
aload 1
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair.member:Ljava/lang/reflect/Member;
goto 3
StackMap locals: org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair
StackMap stack:
2: aconst_null
StackMap locals:
StackMap stack: java.lang.reflect.Member
3: areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor;
1 4 1 lastReadInvoker Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor$InvokerPair;
RuntimeVisibleAnnotations:
java.lang.Deprecated()
org.springframework.lang.Nullable()
private org.springframework.core.convert.TypeDescriptor getTypeDescriptor(org.springframework.expression.EvaluationContext, java.lang.Object, java.lang.String);
descriptor: (Lorg/springframework/expression/EvaluationContext;Ljava/lang/Object;Ljava/lang/String;)Lorg/springframework/core/convert/TypeDescriptor;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
instanceof java.lang.Class
ifeq 1
aload 2
checkcast java.lang.Class
goto 2
StackMap locals:
StackMap stack:
1: aload 2
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
StackMap locals:
StackMap stack: java.lang.Class
2: astore 4
start local 4 3: aload 4
invokevirtual java.lang.Class.isArray:()Z
ifeq 5
aload 3
ldc "length"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 5
4: getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
invokestatic org.springframework.core.convert.TypeDescriptor.valueOf:(Ljava/lang/Class;)Lorg/springframework/core/convert/TypeDescriptor;
areturn
5: StackMap locals: java.lang.Class
StackMap stack:
new org.springframework.expression.spel.support.ReflectivePropertyAccessor$PropertyCacheKey
dup
aload 4
aload 3
aload 2
instanceof java.lang.Class
invokespecial org.springframework.expression.spel.support.ReflectivePropertyAccessor$PropertyCacheKey.<init>:(Ljava/lang/Class;Ljava/lang/String;Z)V
astore 5
start local 5 6: aload 0
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.typeDescriptorCache:Ljava/util/Map;
aload 5
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.springframework.core.convert.TypeDescriptor
astore 6
start local 6 7: aload 6
ifnonnull 12
8: aload 0
aload 1
aload 2
aload 3
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.canRead:(Lorg/springframework/expression/EvaluationContext;Ljava/lang/Object;Ljava/lang/String;)Z
ifne 9
aload 0
aload 1
aload 2
aload 3
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.canWrite:(Lorg/springframework/expression/EvaluationContext;Ljava/lang/Object;Ljava/lang/String;)Z
ifeq 12
9: StackMap locals: org.springframework.expression.spel.support.ReflectivePropertyAccessor$PropertyCacheKey org.springframework.core.convert.TypeDescriptor
StackMap stack:
aload 0
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.typeDescriptorCache:Ljava/util/Map;
aload 5
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.springframework.core.convert.TypeDescriptor
astore 6
10: goto 12
11: StackMap locals:
StackMap stack: org.springframework.expression.AccessException
pop
12: StackMap locals:
StackMap stack:
aload 6
areturn
end local 6 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 13 0 this Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor;
0 13 1 context Lorg/springframework/expression/EvaluationContext;
0 13 2 target Ljava/lang/Object;
0 13 3 name Ljava/lang/String;
3 13 4 type Ljava/lang/Class<*>;
6 13 5 cacheKey Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor$PropertyCacheKey;
7 13 6 typeDescriptor Lorg/springframework/core/convert/TypeDescriptor;
Exception table:
from to target type
8 10 11 Class org.springframework.expression.AccessException
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
context
target
name
private java.lang.reflect.Method findGetterForProperty(java.lang.String, java.lang.Class<?>, );
descriptor: (Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/reflect/Method;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
aload 2
aload 3
instanceof java.lang.Class
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.findGetterForProperty:(Ljava/lang/String;Ljava/lang/Class;Z)Ljava/lang/reflect/Method;
astore 4
start local 4 1: aload 4
ifnonnull 3
aload 3
instanceof java.lang.Class
ifeq 3
2: aload 0
aload 1
aload 3
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
iconst_0
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.findGetterForProperty:(Ljava/lang/String;Ljava/lang/Class;Z)Ljava/lang/reflect/Method;
astore 4
3: StackMap locals: java.lang.reflect.Method
StackMap stack:
aload 4
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor;
0 4 1 propertyName Ljava/lang/String;
0 4 2 clazz Ljava/lang/Class<*>;
0 4 3 target Ljava/lang/Object;
1 4 4 method Ljava/lang/reflect/Method;
Signature: (Ljava/lang/String;Ljava/lang/Class<*>;Ljava/lang/Object;)Ljava/lang/reflect/Method;
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
propertyName
clazz
target
private java.lang.reflect.Method findSetterForProperty(java.lang.String, java.lang.Class<?>, );
descriptor: (Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/reflect/Method;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
aload 2
aload 3
instanceof java.lang.Class
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.findSetterForProperty:(Ljava/lang/String;Ljava/lang/Class;Z)Ljava/lang/reflect/Method;
astore 4
start local 4 1: aload 4
ifnonnull 3
aload 3
instanceof java.lang.Class
ifeq 3
2: aload 0
aload 1
aload 3
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
iconst_0
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.findSetterForProperty:(Ljava/lang/String;Ljava/lang/Class;Z)Ljava/lang/reflect/Method;
astore 4
3: StackMap locals: java.lang.reflect.Method
StackMap stack:
aload 4
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor;
0 4 1 propertyName Ljava/lang/String;
0 4 2 clazz Ljava/lang/Class<*>;
0 4 3 target Ljava/lang/Object;
1 4 4 method Ljava/lang/reflect/Method;
Signature: (Ljava/lang/String;Ljava/lang/Class<*>;Ljava/lang/Object;)Ljava/lang/reflect/Method;
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
propertyName
clazz
target
protected java.lang.reflect.Method findGetterForProperty(java.lang.String, java.lang.Class<?>, boolean);
descriptor: (Ljava/lang/String;Ljava/lang/Class;Z)Ljava/lang/reflect/Method;
flags: (0x0004) ACC_PROTECTED
Code:
stack=7, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 0
aload 1
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.getPropertyMethodSuffixes:(Ljava/lang/String;)[Ljava/lang/String;
1: ldc "get"
aload 2
iload 3
iconst_0
getstatic org.springframework.expression.spel.support.ReflectivePropertyAccessor.ANY_TYPES:Ljava/util/Set;
2: invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.findMethodForProperty:([Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;ZILjava/util/Set;)Ljava/lang/reflect/Method;
astore 4
start local 4 3: aload 4
ifnonnull 7
4: aload 0
aload 0
aload 1
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.getPropertyMethodSuffixes:(Ljava/lang/String;)[Ljava/lang/String;
5: ldc "is"
aload 2
iload 3
iconst_0
getstatic org.springframework.expression.spel.support.ReflectivePropertyAccessor.BOOLEAN_TYPES:Ljava/util/Set;
6: invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.findMethodForProperty:([Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;ZILjava/util/Set;)Ljava/lang/reflect/Method;
astore 4
7: StackMap locals: java.lang.reflect.Method
StackMap stack:
aload 4
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor;
0 8 1 propertyName Ljava/lang/String;
0 8 2 clazz Ljava/lang/Class<*>;
0 8 3 mustBeStatic Z
3 8 4 method Ljava/lang/reflect/Method;
Signature: (Ljava/lang/String;Ljava/lang/Class<*>;Z)Ljava/lang/reflect/Method;
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
propertyName
clazz
mustBeStatic
protected java.lang.reflect.Method findSetterForProperty(java.lang.String, java.lang.Class<?>, boolean);
descriptor: (Ljava/lang/String;Ljava/lang/Class;Z)Ljava/lang/reflect/Method;
flags: (0x0004) ACC_PROTECTED
Code:
stack=7, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 0
aload 1
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.getPropertyMethodSuffixes:(Ljava/lang/String;)[Ljava/lang/String;
1: ldc "set"
aload 2
iload 3
iconst_1
getstatic org.springframework.expression.spel.support.ReflectivePropertyAccessor.ANY_TYPES:Ljava/util/Set;
2: invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.findMethodForProperty:([Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;ZILjava/util/Set;)Ljava/lang/reflect/Method;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor;
0 3 1 propertyName Ljava/lang/String;
0 3 2 clazz Ljava/lang/Class<*>;
0 3 3 mustBeStatic Z
Signature: (Ljava/lang/String;Ljava/lang/Class<*>;Z)Ljava/lang/reflect/Method;
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
propertyName
clazz
mustBeStatic
private java.lang.reflect.Method findMethodForProperty(java.lang.String[], java.lang.String, java.lang.Class<?>, boolean, int, java.util.Set<java.lang.Class<?>>);
descriptor: ([Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;ZILjava/util/Set;)Ljava/lang/reflect/Method;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=16, args_size=7
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 0: aload 0
aload 3
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.getSortedMethods:(Ljava/lang/Class;)[Ljava/lang/reflect/Method;
astore 7
start local 7 1: aload 1
dup
astore 11
arraylength
istore 10
iconst_0
istore 9
goto 13
StackMap locals: org.springframework.expression.spel.support.ReflectivePropertyAccessor java.lang.String[] java.lang.String java.lang.Class int int java.util.Set java.lang.reflect.Method[] top int int java.lang.String[]
StackMap stack:
2: aload 11
iload 9
aaload
astore 8
start local 8 3: aload 7
dup
astore 15
arraylength
istore 14
iconst_0
istore 13
goto 11
StackMap locals: org.springframework.expression.spel.support.ReflectivePropertyAccessor java.lang.String[] java.lang.String java.lang.Class int int java.util.Set java.lang.reflect.Method[] java.lang.String int int java.lang.String[] top int int java.lang.reflect.Method[]
StackMap stack:
4: aload 15
iload 13
aaload
astore 12
start local 12 5: aload 0
aload 12
aload 3
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.isCandidateForProperty:(Ljava/lang/reflect/Method;Ljava/lang/Class;)Z
ifeq 10
aload 12
invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
new java.lang.StringBuilder
dup
aload 2
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 8
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 10
6: aload 12
invokevirtual java.lang.reflect.Method.getParameterCount:()I
iload 5
if_icmpne 10
7: iload 4
ifeq 8
aload 12
invokevirtual java.lang.reflect.Method.getModifiers:()I
invokestatic java.lang.reflect.Modifier.isStatic:(I)Z
ifeq 10
8: StackMap locals: org.springframework.expression.spel.support.ReflectivePropertyAccessor java.lang.String[] java.lang.String java.lang.Class int int java.util.Set java.lang.reflect.Method[] java.lang.String int int java.lang.String[] java.lang.reflect.Method int int java.lang.reflect.Method[]
StackMap stack:
aload 6
invokeinterface java.util.Set.isEmpty:()Z
ifne 9
aload 6
aload 12
invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifeq 10
9: StackMap locals:
StackMap stack:
aload 12
areturn
end local 12 10: StackMap locals: org.springframework.expression.spel.support.ReflectivePropertyAccessor java.lang.String[] java.lang.String java.lang.Class int int java.util.Set java.lang.reflect.Method[] java.lang.String int int java.lang.String[] top int int java.lang.reflect.Method[]
StackMap stack:
iinc 13 1
StackMap locals:
StackMap stack:
11: iload 13
iload 14
if_icmplt 4
end local 8 12: iinc 9 1
StackMap locals: org.springframework.expression.spel.support.ReflectivePropertyAccessor java.lang.String[] java.lang.String java.lang.Class int int java.util.Set java.lang.reflect.Method[] top int int java.lang.String[]
StackMap stack:
13: iload 9
iload 10
if_icmplt 2
14: aconst_null
areturn
end local 7 end local 6 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 15 0 this Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor;
0 15 1 methodSuffixes [Ljava/lang/String;
0 15 2 prefix Ljava/lang/String;
0 15 3 clazz Ljava/lang/Class<*>;
0 15 4 mustBeStatic Z
0 15 5 numberOfParams I
0 15 6 requiredReturnTypes Ljava/util/Set<Ljava/lang/Class<*>;>;
1 15 7 methods [Ljava/lang/reflect/Method;
3 12 8 methodSuffix Ljava/lang/String;
5 10 12 method Ljava/lang/reflect/Method;
Signature: ([Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class<*>;ZILjava/util/Set<Ljava/lang/Class<*>;>;)Ljava/lang/reflect/Method;
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
methodSuffixes
prefix
clazz
mustBeStatic
numberOfParams
requiredReturnTypes
protected boolean isCandidateForProperty(java.lang.reflect.Method, java.lang.Class<?>);
descriptor: (Ljava/lang/reflect/Method;Ljava/lang/Class;)Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=3, args_size=3
start local 0 start local 1 start local 2 0: iconst_1
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor;
0 1 1 method Ljava/lang/reflect/Method;
0 1 2 targetClass Ljava/lang/Class<*>;
Signature: (Ljava/lang/reflect/Method;Ljava/lang/Class<*>;)Z
MethodParameters:
Name Flags
method
targetClass
private java.lang.reflect.Method[] getSortedMethods(java.lang.Class<?>);
descriptor: (Ljava/lang/Class;)[Ljava/lang/reflect/Method;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.sortedMethodsCache:Ljava/util/Map;
aload 1
invokedynamic apply()Ljava/util/function/Function;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)Ljava/lang/Object;
org/springframework/expression/spel/support/ReflectivePropertyAccessor.lambda$0(Ljava/lang/Class;)[Ljava/lang/reflect/Method; (6)
(Ljava/lang/Class;)[Ljava/lang/reflect/Method;
invokeinterface java.util.Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
checkcast java.lang.reflect.Method[]
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor;
0 1 1 clazz Ljava/lang/Class<*>;
Signature: (Ljava/lang/Class<*>;)[Ljava/lang/reflect/Method;
MethodParameters:
Name Flags
clazz
protected java.lang.String[] getPropertyMethodSuffixes(java.lang.String);
descriptor: (Ljava/lang/String;)[Ljava/lang/String;
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.getPropertyMethodSuffix:(Ljava/lang/String;)Ljava/lang/String;
astore 2
start local 2 1: aload 2
invokevirtual java.lang.String.length:()I
ifle 3
aload 2
iconst_0
invokevirtual java.lang.String.charAt:(I)C
invokestatic java.lang.Character.isUpperCase:(C)Z
ifeq 3
2: iconst_1
anewarray java.lang.String
dup
iconst_0
aload 2
aastore
areturn
3: StackMap locals: java.lang.String
StackMap stack:
iconst_2
anewarray java.lang.String
dup
iconst_0
aload 2
aastore
dup
iconst_1
aload 2
invokestatic org.springframework.util.StringUtils.capitalize:(Ljava/lang/String;)Ljava/lang/String;
aastore
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor;
0 4 1 propertyName Ljava/lang/String;
1 4 2 suffix Ljava/lang/String;
MethodParameters:
Name Flags
propertyName
protected java.lang.String getPropertyMethodSuffix(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/lang/String;
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual java.lang.String.length:()I
iconst_1
if_icmple 2
aload 1
iconst_1
invokevirtual java.lang.String.charAt:(I)C
invokestatic java.lang.Character.isUpperCase:(C)Z
ifeq 2
1: aload 1
areturn
2: StackMap locals:
StackMap stack:
aload 1
invokestatic org.springframework.util.StringUtils.capitalize:(Ljava/lang/String;)Ljava/lang/String;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor;
0 3 1 propertyName Ljava/lang/String;
MethodParameters:
Name Flags
propertyName
private java.lang.reflect.Field findField(java.lang.String, java.lang.Class<?>, );
descriptor: (Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/reflect/Field;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
aload 2
aload 3
instanceof java.lang.Class
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.findField:(Ljava/lang/String;Ljava/lang/Class;Z)Ljava/lang/reflect/Field;
astore 4
start local 4 1: aload 4
ifnonnull 3
aload 3
instanceof java.lang.Class
ifeq 3
2: aload 0
aload 1
aload 3
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
iconst_0
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.findField:(Ljava/lang/String;Ljava/lang/Class;Z)Ljava/lang/reflect/Field;
astore 4
3: StackMap locals: java.lang.reflect.Field
StackMap stack:
aload 4
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor;
0 4 1 name Ljava/lang/String;
0 4 2 clazz Ljava/lang/Class<*>;
0 4 3 target Ljava/lang/Object;
1 4 4 field Ljava/lang/reflect/Field;
Signature: (Ljava/lang/String;Ljava/lang/Class<*>;Ljava/lang/Object;)Ljava/lang/reflect/Field;
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
name
clazz
target
protected java.lang.reflect.Field findField(java.lang.String, java.lang.Class<?>, boolean);
descriptor: (Ljava/lang/String;Ljava/lang/Class;Z)Ljava/lang/reflect/Field;
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=10, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
invokevirtual java.lang.Class.getFields:()[Ljava/lang/reflect/Field;
astore 4
start local 4 1: aload 4
dup
astore 8
arraylength
istore 7
iconst_0
istore 6
goto 6
StackMap locals: org.springframework.expression.spel.support.ReflectivePropertyAccessor java.lang.String java.lang.Class int java.lang.reflect.Field[] top int int java.lang.reflect.Field[]
StackMap stack:
2: aload 8
iload 6
aaload
astore 5
start local 5 3: aload 5
invokevirtual java.lang.reflect.Field.getName:()Ljava/lang/String;
aload 1
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 5
iload 3
ifeq 4
aload 5
invokevirtual java.lang.reflect.Field.getModifiers:()I
invokestatic java.lang.reflect.Modifier.isStatic:(I)Z
ifeq 5
4: StackMap locals: org.springframework.expression.spel.support.ReflectivePropertyAccessor java.lang.String java.lang.Class int java.lang.reflect.Field[] java.lang.reflect.Field int int java.lang.reflect.Field[]
StackMap stack:
aload 5
areturn
end local 5 5: StackMap locals: org.springframework.expression.spel.support.ReflectivePropertyAccessor java.lang.String java.lang.Class int java.lang.reflect.Field[] top int int java.lang.reflect.Field[]
StackMap stack:
iinc 6 1
StackMap locals:
StackMap stack:
6: iload 6
iload 7
if_icmplt 2
7: aload 2
invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
ifnull 11
8: aload 0
aload 1
aload 2
invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
iload 3
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.findField:(Ljava/lang/String;Ljava/lang/Class;Z)Ljava/lang/reflect/Field;
astore 5
start local 5 9: aload 5
ifnull 11
10: aload 5
areturn
end local 5 11: StackMap locals: org.springframework.expression.spel.support.ReflectivePropertyAccessor java.lang.String java.lang.Class int java.lang.reflect.Field[]
StackMap stack:
aload 2
invokevirtual java.lang.Class.getInterfaces:()[Ljava/lang/Class;
dup
astore 8
arraylength
istore 7
iconst_0
istore 6
goto 17
StackMap locals: org.springframework.expression.spel.support.ReflectivePropertyAccessor java.lang.String java.lang.Class int java.lang.reflect.Field[] top int int java.lang.Class[]
StackMap stack:
12: aload 8
iload 6
aaload
astore 5
start local 5 13: aload 0
aload 1
aload 5
iload 3
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.findField:(Ljava/lang/String;Ljava/lang/Class;Z)Ljava/lang/reflect/Field;
astore 9
start local 9 14: aload 9
ifnull 16
15: aload 9
areturn
end local 9 end local 5 16: StackMap locals:
StackMap stack:
iinc 6 1
StackMap locals:
StackMap stack:
17: iload 6
iload 7
if_icmplt 12
18: aconst_null
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor;
0 19 1 name Ljava/lang/String;
0 19 2 clazz Ljava/lang/Class<*>;
0 19 3 mustBeStatic Z
1 19 4 fields [Ljava/lang/reflect/Field;
3 5 5 field Ljava/lang/reflect/Field;
9 11 5 field Ljava/lang/reflect/Field;
13 16 5 implementedInterface Ljava/lang/Class<*>;
14 16 9 field Ljava/lang/reflect/Field;
Signature: (Ljava/lang/String;Ljava/lang/Class<*>;Z)Ljava/lang/reflect/Field;
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
name
clazz
mustBeStatic
public org.springframework.expression.PropertyAccessor createOptimalAccessor(org.springframework.expression.EvaluationContext, java.lang.Object, java.lang.String);
descriptor: (Lorg/springframework/expression/EvaluationContext;Ljava/lang/Object;Ljava/lang/String;)Lorg/springframework/expression/PropertyAccessor;
flags: (0x0001) ACC_PUBLIC
Code:
stack=9, locals=8, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
ifnonnull 2
1: aload 0
areturn
2: StackMap locals:
StackMap stack:
aload 2
instanceof java.lang.Class
ifeq 3
aload 2
checkcast java.lang.Class
goto 4
StackMap locals:
StackMap stack:
3: aload 2
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
StackMap locals:
StackMap stack: java.lang.Class
4: astore 4
start local 4 5: aload 4
invokevirtual java.lang.Class.isArray:()Z
ifeq 7
6: aload 0
areturn
7: StackMap locals: java.lang.Class
StackMap stack:
new org.springframework.expression.spel.support.ReflectivePropertyAccessor$PropertyCacheKey
dup
aload 4
aload 3
aload 2
instanceof java.lang.Class
invokespecial org.springframework.expression.spel.support.ReflectivePropertyAccessor$PropertyCacheKey.<init>:(Ljava/lang/Class;Ljava/lang/String;Z)V
astore 5
start local 5 8: aload 0
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.readerCache:Ljava/util/Map;
aload 5
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair
astore 6
start local 6 9: aload 6
ifnull 10
aload 6
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair.member:Ljava/lang/reflect/Member;
instanceof java.lang.reflect.Method
ifeq 21
10: StackMap locals: org.springframework.expression.spel.support.ReflectivePropertyAccessor$PropertyCacheKey org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair
StackMap stack:
aload 6
ifnull 11
aload 6
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair.member:Ljava/lang/reflect/Member;
goto 12
StackMap locals:
StackMap stack:
11: aconst_null
StackMap locals:
StackMap stack: java.lang.reflect.Member
12: checkcast java.lang.reflect.Method
astore 7
start local 7 13: aload 7
ifnonnull 19
14: aload 0
aload 3
aload 4
aload 2
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.findGetterForProperty:(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/reflect/Method;
astore 7
15: aload 7
ifnull 19
16: new org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair
dup
aload 7
new org.springframework.core.convert.TypeDescriptor
dup
new org.springframework.core.MethodParameter
dup
aload 7
iconst_m1
invokespecial org.springframework.core.MethodParameter.<init>:(Ljava/lang/reflect/Method;I)V
invokespecial org.springframework.core.convert.TypeDescriptor.<init>:(Lorg/springframework/core/MethodParameter;)V
invokespecial org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair.<init>:(Ljava/lang/reflect/Member;Lorg/springframework/core/convert/TypeDescriptor;)V
astore 6
17: aload 7
invokestatic org.springframework.util.ReflectionUtils.makeAccessible:(Ljava/lang/reflect/Method;)V
18: aload 0
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.readerCache:Ljava/util/Map;
aload 5
aload 6
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
19: StackMap locals: java.lang.reflect.Method
StackMap stack:
aload 7
ifnull 21
20: new org.springframework.expression.spel.support.ReflectivePropertyAccessor$OptimalPropertyAccessor
dup
aload 6
invokespecial org.springframework.expression.spel.support.ReflectivePropertyAccessor$OptimalPropertyAccessor.<init>:(Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor$InvokerPair;)V
areturn
end local 7 21: StackMap locals:
StackMap stack:
aload 6
ifnull 22
aload 6
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair.member:Ljava/lang/reflect/Member;
instanceof java.lang.reflect.Field
ifeq 33
22: StackMap locals:
StackMap stack:
aload 6
ifnull 23
aload 6
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair.member:Ljava/lang/reflect/Member;
checkcast java.lang.reflect.Field
goto 24
StackMap locals:
StackMap stack:
23: aconst_null
StackMap locals:
StackMap stack: java.lang.reflect.Field
24: astore 7
start local 7 25: aload 7
ifnonnull 31
26: aload 0
aload 3
aload 4
aload 2
instanceof java.lang.Class
invokevirtual org.springframework.expression.spel.support.ReflectivePropertyAccessor.findField:(Ljava/lang/String;Ljava/lang/Class;Z)Ljava/lang/reflect/Field;
astore 7
27: aload 7
ifnull 31
28: new org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair
dup
aload 7
new org.springframework.core.convert.TypeDescriptor
dup
aload 7
invokespecial org.springframework.core.convert.TypeDescriptor.<init>:(Ljava/lang/reflect/Field;)V
invokespecial org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair.<init>:(Ljava/lang/reflect/Member;Lorg/springframework/core/convert/TypeDescriptor;)V
astore 6
29: aload 7
invokestatic org.springframework.util.ReflectionUtils.makeAccessible:(Ljava/lang/reflect/Field;)V
30: aload 0
getfield org.springframework.expression.spel.support.ReflectivePropertyAccessor.readerCache:Ljava/util/Map;
aload 5
aload 6
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
31: StackMap locals: java.lang.reflect.Field
StackMap stack:
aload 7
ifnull 33
32: new org.springframework.expression.spel.support.ReflectivePropertyAccessor$OptimalPropertyAccessor
dup
aload 6
invokespecial org.springframework.expression.spel.support.ReflectivePropertyAccessor$OptimalPropertyAccessor.<init>:(Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor$InvokerPair;)V
areturn
end local 7 33: StackMap locals:
StackMap stack:
aload 0
areturn
end local 6 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 34 0 this Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor;
0 34 1 context Lorg/springframework/expression/EvaluationContext;
0 34 2 target Ljava/lang/Object;
0 34 3 name Ljava/lang/String;
5 34 4 clazz Ljava/lang/Class<*>;
8 34 5 cacheKey Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor$PropertyCacheKey;
9 34 6 invocationTarget Lorg/springframework/expression/spel/support/ReflectivePropertyAccessor$InvokerPair;
13 21 7 method Ljava/lang/reflect/Method;
25 33 7 field Ljava/lang/reflect/Field;
RuntimeVisibleParameterAnnotations:
0:
1:
org.springframework.lang.Nullable()
2:
MethodParameters:
Name Flags
context
target
name
private static java.lang.reflect.Method[] lambda$0(java.lang.Class);
descriptor: (Ljava/lang/Class;)[Ljava/lang/reflect/Method;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
invokevirtual java.lang.Class.getMethods:()[Ljava/lang/reflect/Method;
astore 1
start local 1 1: aload 1
invokedynamic compare()Ljava/util/Comparator;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;Ljava/lang/Object;)I
org/springframework/expression/spel/support/ReflectivePropertyAccessor.lambda$1(Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)I (6)
(Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)I
invokestatic java.util.Arrays.sort:([Ljava/lang/Object;Ljava/util/Comparator;)V
2: aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 key Ljava/lang/Class<*>;
1 3 1 methods [Ljava/lang/reflect/Method;
private static int lambda$1(java.lang.reflect.Method, java.lang.reflect.Method);
descriptor: (Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)I
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual java.lang.reflect.Method.isBridge:()Z
aload 1
invokevirtual java.lang.reflect.Method.isBridge:()Z
if_icmpne 1
iconst_0
goto 3
StackMap locals:
StackMap stack:
1: aload 0
invokevirtual java.lang.reflect.Method.isBridge:()Z
ifeq 2
iconst_1
goto 3
StackMap locals:
StackMap stack:
2: iconst_m1
StackMap locals:
StackMap stack: int
3: ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 o1 Ljava/lang/reflect/Method;
0 4 1 o2 Ljava/lang/reflect/Method;
}
SourceFile: "ReflectivePropertyAccessor.java"
NestMembers:
org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair org.springframework.expression.spel.support.ReflectivePropertyAccessor$OptimalPropertyAccessor org.springframework.expression.spel.support.ReflectivePropertyAccessor$PropertyCacheKey
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
private InvokerPair = org.springframework.expression.spel.support.ReflectivePropertyAccessor$InvokerPair of org.springframework.expression.spel.support.ReflectivePropertyAccessor
public OptimalPropertyAccessor = org.springframework.expression.spel.support.ReflectivePropertyAccessor$OptimalPropertyAccessor of org.springframework.expression.spel.support.ReflectivePropertyAccessor
private final PropertyCacheKey = org.springframework.expression.spel.support.ReflectivePropertyAccessor$PropertyCacheKey of org.springframework.expression.spel.support.ReflectivePropertyAccessor