public class org.springframework.expression.spel.support.ReflectiveMethodExecutor extends java.lang.Object implements org.springframework.expression.MethodExecutor
{
private final java.lang.reflect.Method method;
private final java.lang.Integer varargsPosition;
private boolean computedPublicDeclaringClass;
private java.lang.Class publicDeclaringClass;
private boolean argumentConversionOccurred;
public void <init>(java.lang.reflect.Method)
{
int v, v;
java.lang.Class[] v;
org.springframework.expression.spel.support.ReflectiveMethodExecutor v;
java.lang.Integer v;
java.lang.reflect.Method v;
boolean v;
v := @this: org.springframework.expression.spel.support.ReflectiveMethodExecutor;
v := @parameter: java.lang.reflect.Method;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: boolean computedPublicDeclaringClass> = 0;
v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: boolean argumentConversionOccurred> = 0;
v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: java.lang.reflect.Method method> = v;
v = virtualinvoke v.<java.lang.reflect.Method: boolean isVarArgs()>();
if v == 0 goto label;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class[] getParameterTypes()>();
v = lengthof v;
v = v - 1;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: java.lang.Integer varargsPosition> = v;
goto label;
label:
v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: java.lang.Integer varargsPosition> = null;
label:
return;
}
public java.lang.reflect.Method getMethod()
{
org.springframework.expression.spel.support.ReflectiveMethodExecutor v;
java.lang.reflect.Method v;
v := @this: org.springframework.expression.spel.support.ReflectiveMethodExecutor;
v = v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: java.lang.reflect.Method method>;
return v;
}
public java.lang.Class getPublicDeclaringClass()
{
org.springframework.expression.spel.support.ReflectiveMethodExecutor v;
java.lang.Class v, v, v;
java.lang.reflect.Method v, v;
boolean v;
v := @this: org.springframework.expression.spel.support.ReflectiveMethodExecutor;
v = v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: boolean computedPublicDeclaringClass>;
if v != 0 goto label;
v = v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: java.lang.reflect.Method method>;
v = v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: java.lang.reflect.Method method>;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class getDeclaringClass()>();
v = specialinvoke v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: java.lang.Class discoverPublicClass(java.lang.reflect.Method,java.lang.Class)>(v, v);
v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: java.lang.Class publicDeclaringClass> = v;
v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: boolean computedPublicDeclaringClass> = 1;
label:
v = v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: java.lang.Class publicDeclaringClass>;
return v;
}
private java.lang.Class discoverPublicClass(java.lang.reflect.Method, java.lang.Class)
{
java.lang.NoSuchMethodException v;
java.lang.Class[] v, v;
org.springframework.expression.spel.support.ReflectiveMethodExecutor v;
int v, v, v;
java.lang.Class v, v, v, v, v;
java.lang.String v;
java.lang.reflect.Method v;
boolean v;
v := @this: org.springframework.expression.spel.support.ReflectiveMethodExecutor;
v := @parameter: java.lang.reflect.Method;
v := @parameter: java.lang.Class;
v = virtualinvoke v.<java.lang.Class: int getModifiers()>();
v = staticinvoke <java.lang.reflect.Modifier: boolean isPublic(int)>(v);
if v == 0 goto label;
label:
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class[] getParameterTypes()>();
virtualinvoke v.<java.lang.Class: java.lang.reflect.Method getDeclaredMethod(java.lang.String,java.lang.Class[])>(v, v);
label:
return v;
label:
v := @caughtexception;
label:
v = virtualinvoke v.<java.lang.Class: java.lang.Class[] getInterfaces()>();
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
specialinvoke v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: java.lang.Class discoverPublicClass(java.lang.reflect.Method,java.lang.Class)>(v, v);
v = v + 1;
goto label;
label:
v = virtualinvoke v.<java.lang.Class: java.lang.Class getSuperclass()>();
if v == null goto label;
v = virtualinvoke v.<java.lang.Class: java.lang.Class getSuperclass()>();
v = specialinvoke v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: java.lang.Class discoverPublicClass(java.lang.reflect.Method,java.lang.Class)>(v, v);
return v;
label:
return null;
catch java.lang.NoSuchMethodException from label to label with label;
}
public boolean didArgumentConversionOccur()
{
org.springframework.expression.spel.support.ReflectiveMethodExecutor v;
boolean v;
v := @this: org.springframework.expression.spel.support.ReflectiveMethodExecutor;
v = v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: boolean argumentConversionOccurred>;
return v;
}
public transient org.springframework.expression.TypedValue execute(org.springframework.expression.EvaluationContext, java.lang.Object, java.lang.Object[]) throws org.springframework.expression.AccessException
{
java.lang.Object[] v;
org.springframework.expression.spel.support.ReflectiveMethodExecutor v;
java.lang.Integer v;
org.springframework.core.convert.TypeDescriptor v, v;
org.springframework.core.MethodParameter v;
int v;
java.lang.String v;
org.springframework.expression.TypedValue v;
java.lang.reflect.Method v, v, v, v, v, v, v;
boolean v, v;
org.springframework.expression.TypeConverter v;
java.lang.Class[] v;
java.lang.Exception v;
org.springframework.expression.AccessException v;
org.springframework.expression.EvaluationContext v;
java.lang.Object v, v;
v := @this: org.springframework.expression.spel.support.ReflectiveMethodExecutor;
v := @parameter: org.springframework.expression.EvaluationContext;
v := @parameter: java.lang.Object;
v := @parameter: java.lang.Object[];
label:
if v == null goto label;
v = interfaceinvoke v.<org.springframework.expression.EvaluationContext: org.springframework.expression.TypeConverter getTypeConverter()>();
v = v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: java.lang.reflect.Method method>;
v = v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: java.lang.Integer varargsPosition>;
v = staticinvoke <org.springframework.expression.spel.support.ReflectionHelper: boolean convertArguments(org.springframework.expression.TypeConverter,java.lang.Object[],java.lang.Object,java.lang.Integer)>(v, v, v, v);
v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: boolean argumentConversionOccurred> = v;
v = v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: java.lang.reflect.Method method>;
v = virtualinvoke v.<java.lang.reflect.Method: boolean isVarArgs()>();
if v == 0 goto label;
v = v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: java.lang.reflect.Method method>;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class[] getParameterTypes()>();
v = staticinvoke <org.springframework.expression.spel.support.ReflectionHelper: java.lang.Object[] setupArgumentsForVarargsInvocation(java.lang.Class[],java.lang.Object[])>(v, v);
label:
v = v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: java.lang.reflect.Method method>;
staticinvoke <org.springframework.util.ReflectionUtils: void makeAccessible(java.lang.reflect.Method)>(v);
v = v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: java.lang.reflect.Method method>;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Object invoke(java.lang.Object,java.lang.Object[])>(v, v);
v = new org.springframework.expression.TypedValue;
v = new org.springframework.core.convert.TypeDescriptor;
v = new org.springframework.core.MethodParameter;
v = v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: java.lang.reflect.Method method>;
v = (int) -1;
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);
v = virtualinvoke v.<org.springframework.core.convert.TypeDescriptor: org.springframework.core.convert.TypeDescriptor narrow(java.lang.Object)>(v);
specialinvoke v.<org.springframework.expression.TypedValue: void <init>(java.lang.Object,org.springframework.core.convert.TypeDescriptor)>(v, v);
label:
return v;
label:
v := @caughtexception;
v = new org.springframework.expression.AccessException;
v = v.<org.springframework.expression.spel.support.ReflectiveMethodExecutor: java.lang.reflect.Method method>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.reflect.Method)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Problem invoking method: \u0001");
specialinvoke v.<org.springframework.expression.AccessException: void <init>(java.lang.String,java.lang.Exception)>(v, v);
throw v;
catch java.lang.Exception from label to label with label;
}
}