public class org.springframework.expression.spel.support.ReflectiveMethodResolver extends java.lang.Object implements org.springframework.expression.MethodResolver
{
private final boolean useDistance;
private java.util.Map filters;
public void <init>()
{
org.springframework.expression.spel.support.ReflectiveMethodResolver v;
v := @this: org.springframework.expression.spel.support.ReflectiveMethodResolver;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.springframework.expression.spel.support.ReflectiveMethodResolver: boolean useDistance> = 1;
return;
}
public void <init>(boolean)
{
org.springframework.expression.spel.support.ReflectiveMethodResolver v;
boolean v;
v := @this: org.springframework.expression.spel.support.ReflectiveMethodResolver;
v := @parameter: boolean;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.springframework.expression.spel.support.ReflectiveMethodResolver: boolean useDistance> = v;
return;
}
public void registerMethodFilter(java.lang.Class, org.springframework.expression.MethodFilter)
{
java.util.Map v, v, v;
java.lang.Class v;
java.util.HashMap v;
org.springframework.expression.MethodFilter v;
org.springframework.expression.spel.support.ReflectiveMethodResolver v;
v := @this: org.springframework.expression.spel.support.ReflectiveMethodResolver;
v := @parameter: java.lang.Class;
v := @parameter: org.springframework.expression.MethodFilter;
v = v.<org.springframework.expression.spel.support.ReflectiveMethodResolver: java.util.Map filters>;
if v != null goto label;
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: void <init>()>();
v.<org.springframework.expression.spel.support.ReflectiveMethodResolver: java.util.Map filters> = v;
label:
if v == null goto label;
v = v.<org.springframework.expression.spel.support.ReflectiveMethodResolver: java.util.Map filters>;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
goto label;
label:
v = v.<org.springframework.expression.spel.support.ReflectiveMethodResolver: java.util.Map filters>;
interfaceinvoke v.<java.util.Map: java.lang.Object remove(java.lang.Object)>(v);
label:
return;
}
public org.springframework.expression.MethodExecutor resolve(org.springframework.expression.EvaluationContext, java.lang.Object, java.lang.String, java.util.List) throws org.springframework.expression.AccessException
{
org.springframework.expression.spel.support.ReflectiveMethodExecutor v, v, v;
java.util.Map v, v;
org.springframework.core.MethodParameter v;
java.lang.reflect.Method v, v, v;
boolean v, v, v, v, v, v, v, v, v, v;
org.springframework.expression.TypeConverter v;
java.util.Set v;
org.springframework.expression.AccessException v;
org.springframework.expression.EvaluationContext v;
java.util.List v, v, v, v;
org.springframework.expression.spel.SpelEvaluationException v;
java.lang.Object[] v;
org.springframework.expression.EvaluationException v;
java.util.ArrayList v, v, v;
org.springframework.core.convert.TypeDescriptor v;
int v, v, v, v, v, v, v, v, v, v, v, v, v;
org.springframework.expression.spel.support.ReflectionHelper$ArgumentsMatchInfo v;
java.lang.String v, v;
java.util.LinkedHashSet v;
org.springframework.expression.spel.support.ReflectiveMethodResolver v;
org.springframework.expression.spel.SpelMessage v;
java.util.Iterator v;
java.lang.Class[] v;
java.lang.Object v, v, v, v;
org.springframework.expression.spel.support.ReflectiveMethodResolver$1 v;
v := @this: org.springframework.expression.spel.support.ReflectiveMethodResolver;
v := @parameter: org.springframework.expression.EvaluationContext;
v := @parameter: java.lang.Object;
v := @parameter: java.lang.String;
v := @parameter: java.util.List;
label:
v = interfaceinvoke v.<org.springframework.expression.EvaluationContext: org.springframework.expression.TypeConverter getTypeConverter()>();
v = v instanceof java.lang.Class;
if v != 0 goto label;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
label:
v = new java.util.ArrayList;
v = specialinvoke v.<org.springframework.expression.spel.support.ReflectiveMethodResolver: java.util.Set getMethods(java.lang.Class,java.lang.Object)>(v, v);
specialinvoke v.<java.util.ArrayList: void <init>(java.util.Collection)>(v);
v = v;
v = v.<org.springframework.expression.spel.support.ReflectiveMethodResolver: java.util.Map filters>;
if v == null goto label;
v = v.<org.springframework.expression.spel.support.ReflectiveMethodResolver: java.util.Map filters>;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
goto label;
label:
v = null;
label:
if v == null goto label;
v = interfaceinvoke v.<org.springframework.expression.MethodFilter: java.util.List filter(java.util.List)>(v);
v = v instanceof java.util.ArrayList;
if v == 0 goto label;
v = v;
goto label;
label:
v = new java.util.ArrayList;
v = v;
specialinvoke v.<java.util.ArrayList: void <init>(java.util.Collection)>(v);
label:
v = v;
label:
v = interfaceinvoke v.<java.util.List: int size()>();
if v <= 1 goto label;
v = new org.springframework.expression.spel.support.ReflectiveMethodResolver$1;
specialinvoke v.<org.springframework.expression.spel.support.ReflectiveMethodResolver$1: void <init>(org.springframework.expression.spel.support.ReflectiveMethodResolver)>(v);
staticinvoke <java.util.Collections: void sort(java.util.List,java.util.Comparator)>(v, v);
label:
v = 0;
label:
v = interfaceinvoke v.<java.util.List: int size()>();
if v >= v goto label;
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(v);
v = staticinvoke <org.springframework.core.BridgeMethodResolver: java.lang.reflect.Method findBridgedMethod(java.lang.reflect.Method)>(v);
interfaceinvoke v.<java.util.List: java.lang.Object set(int,java.lang.Object)>(v, v);
v = v + 1;
goto label;
label:
v = new java.util.LinkedHashSet;
specialinvoke v.<java.util.LinkedHashSet: void <init>(java.util.Collection)>(v);
v = null;
v = 2147483647;
v = null;
v = 0;
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class[] getParameterTypes()>();
v = new java.util.ArrayList;
v = lengthof v;
specialinvoke v.<java.util.ArrayList: void <init>(int)>(v);
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = new org.springframework.core.convert.TypeDescriptor;
v = new org.springframework.core.MethodParameter;
specialinvoke v.<org.springframework.core.MethodParameter: void <init>(java.lang.reflect.Method,int)>(v, v);
specialinvoke v.<org.springframework.core.convert.TypeDescriptor: void <init>(org.springframework.core.MethodParameter)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = v + 1;
goto label;
label:
v = null;
v = virtualinvoke v.<java.lang.reflect.Method: boolean isVarArgs()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.List: int size()>();
v = lengthof v;
v = v - 1;
if v < v goto label;
v = staticinvoke <org.springframework.expression.spel.support.ReflectionHelper: org.springframework.expression.spel.support.ReflectionHelper$ArgumentsMatchInfo compareArgumentsVarargs(java.util.List,java.util.List,org.springframework.expression.TypeConverter)>(v, v, v);
goto label;
label:
v = lengthof v;
v = interfaceinvoke v.<java.util.List: int size()>();
if v != v goto label;
v = staticinvoke <org.springframework.expression.spel.support.ReflectionHelper: org.springframework.expression.spel.support.ReflectionHelper$ArgumentsMatchInfo compareArguments(java.util.List,java.util.List,org.springframework.expression.TypeConverter)>(v, v, v);
label:
if v == null goto label;
v = virtualinvoke v.<org.springframework.expression.spel.support.ReflectionHelper$ArgumentsMatchInfo: boolean isExactMatch()>();
if v == 0 goto label;
v = new org.springframework.expression.spel.support.ReflectiveMethodExecutor;
specialinvoke v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: void <init>(java.lang.reflect.Method)>(v);
label:
return v;
label:
v = virtualinvoke v.<org.springframework.expression.spel.support.ReflectionHelper$ArgumentsMatchInfo: boolean isCloseMatch()>();
if v == 0 goto label;
v = v.<org.springframework.expression.spel.support.ReflectiveMethodResolver: boolean useDistance>;
if v == 0 goto label;
v = staticinvoke <org.springframework.expression.spel.support.ReflectionHelper: int getTypeDifferenceWeight(java.util.List,java.util.List)>(v, v);
if v == null goto label;
if v >= v goto label;
label:
v = v;
v = v;
goto label;
label:
if v != null goto label;
v = v;
goto label;
label:
v = virtualinvoke v.<org.springframework.expression.spel.support.ReflectionHelper$ArgumentsMatchInfo: boolean isMatchRequiringConversion()>();
if v == 0 goto label;
if v == null goto label;
v = 1;
label:
v = v;
goto label;
label:
if v == null goto label;
v = new org.springframework.expression.spel.support.ReflectiveMethodExecutor;
specialinvoke v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: void <init>(java.lang.reflect.Method)>(v);
label:
return v;
label:
if v == null goto label;
if v == 0 goto label;
v = new org.springframework.expression.spel.SpelEvaluationException;
v = <org.springframework.expression.spel.SpelMessage: org.springframework.expression.spel.SpelMessage MULTIPLE_POSSIBLE_METHODS>;
v = newarray (java.lang.Object)[1];
v[0] = v;
specialinvoke v.<org.springframework.expression.spel.SpelEvaluationException: void <init>(org.springframework.expression.spel.SpelMessage,java.lang.Object[])>(v, v);
throw v;
label:
v = new org.springframework.expression.spel.support.ReflectiveMethodExecutor;
specialinvoke v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: void <init>(java.lang.reflect.Method)>(v);
label:
return v;
label:
return null;
label:
v := @caughtexception;
v = new org.springframework.expression.AccessException;
specialinvoke v.<org.springframework.expression.AccessException: void <init>(java.lang.String,java.lang.Exception)>("Failed to resolve method", v);
throw v;
catch org.springframework.expression.EvaluationException from label to label with label;
catch org.springframework.expression.EvaluationException from label to label with label;
catch org.springframework.expression.EvaluationException from label to label with label;
}
private java.util.Set getMethods(java.lang.Class, java.lang.Object)
{
java.lang.reflect.Method[] v, v, v, v;
int v, v, v, v, v, v, v, v, v;
java.lang.reflect.Method v, v, v;
java.util.LinkedHashSet v, v, v;
org.springframework.expression.spel.support.ReflectiveMethodResolver v;
boolean v, v, v, v, v;
java.lang.Class[] v;
java.util.List v;
java.lang.Class v, v;
java.lang.Object v;
v := @this: org.springframework.expression.spel.support.ReflectiveMethodResolver;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.Object;
v = v instanceof java.lang.Class;
if v == 0 goto label;
v = new java.util.LinkedHashSet;
specialinvoke v.<java.util.LinkedHashSet: void <init>()>();
v = virtualinvoke v.<org.springframework.expression.spel.support.ReflectiveMethodResolver: java.lang.reflect.Method[] getMethods(java.lang.Class)>(v);
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.reflect.Method: int getModifiers()>();
v = staticinvoke <java.lang.reflect.Modifier: boolean isStatic(int)>(v);
if v == 0 goto label;
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
label:
v = v + 1;
goto label;
label:
v = virtualinvoke v.<org.springframework.expression.spel.support.ReflectiveMethodResolver: java.lang.reflect.Method[] getMethods(java.lang.Class)>(class "Ljava/lang/Class;");
v = staticinvoke <java.util.Arrays: java.util.List asList(java.lang.Object[])>(v);
interfaceinvoke v.<java.util.Set: boolean addAll(java.util.Collection)>(v);
return v;
label:
v = staticinvoke <java.lang.reflect.Proxy: boolean isProxyClass(java.lang.Class)>(v);
if v == 0 goto label;
v = new java.util.LinkedHashSet;
specialinvoke v.<java.util.LinkedHashSet: void <init>()>();
v = virtualinvoke v.<java.lang.Class: java.lang.Class[] getInterfaces()>();
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<org.springframework.expression.spel.support.ReflectiveMethodResolver: java.lang.reflect.Method[] getMethods(java.lang.Class)>(v);
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<org.springframework.expression.spel.support.ReflectiveMethodResolver: boolean isCandidateForInvocation(java.lang.reflect.Method,java.lang.Class)>(v, v);
if v == 0 goto label;
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
label:
v = v + 1;
goto label;
label:
v = v + 1;
goto label;
label:
return v;
label:
v = new java.util.LinkedHashSet;
specialinvoke v.<java.util.LinkedHashSet: void <init>()>();
v = virtualinvoke v.<org.springframework.expression.spel.support.ReflectiveMethodResolver: java.lang.reflect.Method[] getMethods(java.lang.Class)>(v);
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<org.springframework.expression.spel.support.ReflectiveMethodResolver: boolean isCandidateForInvocation(java.lang.reflect.Method,java.lang.Class)>(v, v);
if v == 0 goto label;
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
label:
v = v + 1;
goto label;
label:
return v;
}
protected java.lang.reflect.Method[] getMethods(java.lang.Class)
{
java.lang.Class v;
java.lang.reflect.Method[] v;
org.springframework.expression.spel.support.ReflectiveMethodResolver v;
v := @this: org.springframework.expression.spel.support.ReflectiveMethodResolver;
v := @parameter: java.lang.Class;
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Method[] getMethods()>();
return v;
}
protected boolean isCandidateForInvocation(java.lang.reflect.Method, java.lang.Class)
{
java.lang.Class v;
java.lang.reflect.Method v;
org.springframework.expression.spel.support.ReflectiveMethodResolver v;
v := @this: org.springframework.expression.spel.support.ReflectiveMethodResolver;
v := @parameter: java.lang.reflect.Method;
v := @parameter: java.lang.Class;
return 1;
}
}