public class org.springframework.beans.support.PropertyComparator<T> implements java.util.Comparator<T>
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.springframework.beans.support.PropertyComparator
super_class: java.lang.Object
{
protected final org.apache.commons.logging.Log logger;
descriptor: Lorg/apache/commons/logging/Log;
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
private final org.springframework.beans.support.SortDefinition sortDefinition;
descriptor: Lorg/springframework/beans/support/SortDefinition;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.springframework.beans.BeanWrapperImpl beanWrapper;
descriptor: Lorg/springframework/beans/BeanWrapperImpl;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
public void <init>(org.springframework.beans.support.SortDefinition);
descriptor: (Lorg/springframework/beans/support/SortDefinition;)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
aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokestatic org.apache.commons.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;
putfield org.springframework.beans.support.PropertyComparator.logger:Lorg/apache/commons/logging/Log;
2: aload 0
new org.springframework.beans.BeanWrapperImpl
dup
iconst_0
invokespecial org.springframework.beans.BeanWrapperImpl.<init>:(Z)V
putfield org.springframework.beans.support.PropertyComparator.beanWrapper:Lorg/springframework/beans/BeanWrapperImpl;
3: aload 0
aload 1
putfield org.springframework.beans.support.PropertyComparator.sortDefinition:Lorg/springframework/beans/support/SortDefinition;
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/springframework/beans/support/PropertyComparator<TT;>;
0 5 1 sortDefinition Lorg/springframework/beans/support/SortDefinition;
MethodParameters:
Name Flags
sortDefinition
public void <init>(java.lang.String, boolean, boolean);
descriptor: (Ljava/lang/String;ZZ)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokestatic org.apache.commons.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;
putfield org.springframework.beans.support.PropertyComparator.logger:Lorg/apache/commons/logging/Log;
2: aload 0
new org.springframework.beans.BeanWrapperImpl
dup
iconst_0
invokespecial org.springframework.beans.BeanWrapperImpl.<init>:(Z)V
putfield org.springframework.beans.support.PropertyComparator.beanWrapper:Lorg/springframework/beans/BeanWrapperImpl;
3: aload 0
new org.springframework.beans.support.MutableSortDefinition
dup
aload 1
iload 2
iload 3
invokespecial org.springframework.beans.support.MutableSortDefinition.<init>:(Ljava/lang/String;ZZ)V
putfield org.springframework.beans.support.PropertyComparator.sortDefinition:Lorg/springframework/beans/support/SortDefinition;
4: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/springframework/beans/support/PropertyComparator<TT;>;
0 5 1 property Ljava/lang/String;
0 5 2 ignoreCase Z
0 5 3 ascending Z
MethodParameters:
Name Flags
property
ignoreCase
ascending
public final org.springframework.beans.support.SortDefinition getSortDefinition();
descriptor: ()Lorg/springframework/beans/support/SortDefinition;
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.springframework.beans.support.PropertyComparator.sortDefinition:Lorg/springframework/beans/support/SortDefinition;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/beans/support/PropertyComparator<TT;>;
public int compare(T, );
descriptor: (Ljava/lang/Object;Ljava/lang/Object;)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
invokevirtual org.springframework.beans.support.PropertyComparator.getPropertyValue:(Ljava/lang/Object;)Ljava/lang/Object;
astore 3
start local 3 1: aload 0
aload 2
invokevirtual org.springframework.beans.support.PropertyComparator.getPropertyValue:(Ljava/lang/Object;)Ljava/lang/Object;
astore 4
start local 4 2: aload 0
getfield org.springframework.beans.support.PropertyComparator.sortDefinition:Lorg/springframework/beans/support/SortDefinition;
invokeinterface org.springframework.beans.support.SortDefinition.isIgnoreCase:()Z
ifeq 5
aload 3
instanceof java.lang.String
ifeq 5
aload 4
instanceof java.lang.String
ifeq 5
3: aload 3
checkcast java.lang.String
invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
astore 3
4: aload 4
checkcast java.lang.String
invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
astore 4
5: StackMap locals: java.lang.Object java.lang.Object
StackMap stack:
aload 3
ifnull 10
6: aload 4
ifnull 7
aload 3
checkcast java.lang.Comparable
aload 4
invokeinterface java.lang.Comparable.compareTo:(Ljava/lang/Object;)I
goto 8
StackMap locals:
StackMap stack:
7: iconst_m1
StackMap locals:
StackMap stack: int
8: istore 5
start local 5 9: goto 18
end local 5 10: StackMap locals:
StackMap stack:
aload 4
ifnull 11
iconst_1
goto 12
StackMap locals:
StackMap stack:
11: iconst_0
StackMap locals:
StackMap stack: int
12: istore 5
start local 5 13: goto 18
end local 5 14: StackMap locals:
StackMap stack: java.lang.RuntimeException
astore 6
start local 6 15: aload 0
getfield org.springframework.beans.support.PropertyComparator.logger:Lorg/apache/commons/logging/Log;
invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
ifeq 17
16: aload 0
getfield org.springframework.beans.support.PropertyComparator.logger:Lorg/apache/commons/logging/Log;
new java.lang.StringBuilder
dup
ldc "Could not sort objects ["
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "] and ["
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 "]"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 6
invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
17: StackMap locals: org.springframework.beans.support.PropertyComparator java.lang.Object java.lang.Object java.lang.Object java.lang.Object top java.lang.RuntimeException
StackMap stack:
iconst_0
ireturn
end local 6 start local 5 18: StackMap locals: org.springframework.beans.support.PropertyComparator java.lang.Object java.lang.Object java.lang.Object java.lang.Object int
StackMap stack:
aload 0
getfield org.springframework.beans.support.PropertyComparator.sortDefinition:Lorg/springframework/beans/support/SortDefinition;
invokeinterface org.springframework.beans.support.SortDefinition.isAscending:()Z
ifeq 19
iload 5
goto 20
StackMap locals:
StackMap stack:
19: iload 5
ineg
StackMap locals:
StackMap stack: int
20: ireturn
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/beans/support/PropertyComparator<TT;>;
0 21 1 o1 TT;
0 21 2 o2 TT;
1 21 3 v1 Ljava/lang/Object;
2 21 4 v2 Ljava/lang/Object;
9 10 5 result I
13 14 5 result I
18 21 5 result I
15 18 6 ex Ljava/lang/RuntimeException;
Exception table:
from to target type
5 13 14 Class java.lang.RuntimeException
Signature: (TT;TT;)I
MethodParameters:
Name Flags
o1
o2
private java.lang.Object getPropertyValue(java.lang.Object);
descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.springframework.beans.support.PropertyComparator.beanWrapper:Lorg/springframework/beans/BeanWrapperImpl;
aload 1
invokevirtual org.springframework.beans.BeanWrapperImpl.setWrappedInstance:(Ljava/lang/Object;)V
1: aload 0
getfield org.springframework.beans.support.PropertyComparator.beanWrapper:Lorg/springframework/beans/BeanWrapperImpl;
aload 0
getfield org.springframework.beans.support.PropertyComparator.sortDefinition:Lorg/springframework/beans/support/SortDefinition;
invokeinterface org.springframework.beans.support.SortDefinition.getProperty:()Ljava/lang/String;
invokevirtual org.springframework.beans.BeanWrapperImpl.getPropertyValue:(Ljava/lang/String;)Ljava/lang/Object;
2: areturn
3: StackMap locals:
StackMap stack: org.springframework.beans.BeansException
astore 2
start local 2 4: aload 0
getfield org.springframework.beans.support.PropertyComparator.logger:Lorg/apache/commons/logging/Log;
ldc "PropertyComparator could not access property - treating as null for sorting"
aload 2
invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
5: aconst_null
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/springframework/beans/support/PropertyComparator<TT;>;
0 6 1 obj Ljava/lang/Object;
4 6 2 ex Lorg/springframework/beans/BeansException;
Exception table:
from to target type
0 2 3 Class org.springframework.beans.BeansException
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
obj
public static void sort(java.util.List<?>, org.springframework.beans.support.SortDefinition);
descriptor: (Ljava/util/List;Lorg/springframework/beans/support/SortDefinition;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface org.springframework.beans.support.SortDefinition.getProperty:()Ljava/lang/String;
invokestatic org.springframework.util.StringUtils.hasText:(Ljava/lang/String;)Z
ifeq 2
1: aload 0
new org.springframework.beans.support.PropertyComparator
dup
aload 1
invokespecial org.springframework.beans.support.PropertyComparator.<init>:(Lorg/springframework/beans/support/SortDefinition;)V
invokeinterface java.util.List.sort:(Ljava/util/Comparator;)V
2: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 source Ljava/util/List<*>;
0 3 1 sortDefinition Lorg/springframework/beans/support/SortDefinition;
Exceptions:
throws org.springframework.beans.BeansException
Signature: (Ljava/util/List<*>;Lorg/springframework/beans/support/SortDefinition;)V
MethodParameters:
Name Flags
source
sortDefinition
public static void sort(java.lang.Object[], org.springframework.beans.support.SortDefinition);
descriptor: ([Ljava/lang/Object;Lorg/springframework/beans/support/SortDefinition;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface org.springframework.beans.support.SortDefinition.getProperty:()Ljava/lang/String;
invokestatic org.springframework.util.StringUtils.hasText:(Ljava/lang/String;)Z
ifeq 2
1: aload 0
new org.springframework.beans.support.PropertyComparator
dup
aload 1
invokespecial org.springframework.beans.support.PropertyComparator.<init>:(Lorg/springframework/beans/support/SortDefinition;)V
invokestatic java.util.Arrays.sort:([Ljava/lang/Object;Ljava/util/Comparator;)V
2: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 source [Ljava/lang/Object;
0 3 1 sortDefinition Lorg/springframework/beans/support/SortDefinition;
Exceptions:
throws org.springframework.beans.BeansException
MethodParameters:
Name Flags
source
sortDefinition
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Comparator<TT;>;
SourceFile: "PropertyComparator.java"