public class org.apache.dubbo.qos.legacy.InvokeTelnetHandler extends java.lang.Object implements org.apache.dubbo.remoting.telnet.TelnetHandler
{
public static final java.lang.String INVOKE_MESSAGE_KEY;
public static final java.lang.String INVOKE_METHOD_LIST_KEY;
public static final java.lang.String INVOKE_METHOD_PROVIDER_KEY;
public void <init>()
{
org.apache.dubbo.qos.legacy.InvokeTelnetHandler v;
v := @this: org.apache.dubbo.qos.legacy.InvokeTelnetHandler;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
public java.lang.String telnet(org.apache.dubbo.remoting.Channel, java.lang.String)
{
org.apache.dubbo.rpc.AppResponse v;
java.util.Set v;
org.apache.dubbo.remoting.Channel v;
java.lang.StringBuilder v, v, v, v, v, v, v;
java.lang.Throwable v, v, v;
java.lang.Object[] v, v;
long v, v, v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.lang.Class[] v;
boolean v, v, v, v, v, v, v, v;
java.util.Collection v;
java.util.List v, v, v;
org.apache.dubbo.qos.legacy.InvokeTelnetHandler v;
java.lang.reflect.Type[] v;
int v, v, v, v, v, v, v, v;
java.util.Iterator v;
java.lang.Object v, v, v, v, v, v, v;
v := @this: org.apache.dubbo.qos.legacy.InvokeTelnetHandler;
v := @parameter: org.apache.dubbo.remoting.Channel;
v := @parameter: java.lang.String;
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: boolean isEmpty(java.lang.String)>(v);
if v == 0 goto label;
return "Please input method name, eg: \r\ninvoke xxxMethod(1234, \"abcd\", {\"prop\" : \"value\"})\r\ninvoke XxxService.xxxMethod(1234, \"abcd\", {\"prop\" : \"value\"})\r\ninvoke com.xxx.XxxService.xxxMethod(1234, \"abcd\", {\"prop\" : \"value\"})";
label:
v = interfaceinvoke v.<org.apache.dubbo.remoting.Channel: java.lang.Object getAttribute(java.lang.String)>("telnet.service");
v = virtualinvoke v.<java.lang.String: int indexOf(java.lang.String)>("(");
if v < 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean endsWith(java.lang.String)>(")");
if v != 0 goto label;
label:
return "Invalid parameters, format: service.method(args)";
label:
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(0, v);
v = virtualinvoke v.<java.lang.String: java.lang.String trim()>();
v = v + 1;
v = virtualinvoke v.<java.lang.String: int length()>();
v = v - 1;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(v, v);
v = virtualinvoke v.<java.lang.String: java.lang.String trim()>();
v = virtualinvoke v.<java.lang.String: int lastIndexOf(java.lang.String)>(".");
if v < 0 goto label;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(0, v);
v = virtualinvoke v.<java.lang.String: java.lang.String trim()>();
v = v + 1;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int)>(v);
v = virtualinvoke v.<java.lang.String: java.lang.String trim()>();
label:
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(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[])>("[\u]");
v = staticinvoke <com.alibaba.fastjson.JSON: java.util.List parseArray(java.lang.String,java.lang.Class)>(v, class "Ljava/lang/Object;");
label:
goto label;
label:
v := @caughtexception;
v = virtualinvoke v.<java.lang.Throwable: java.lang.String getMessage()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(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[])>("Invalid json argument, cause: \u0001");
return v;
label:
v = new java.lang.StringBuilder;
specialinvoke v.<java.lang.StringBuilder: void <init>()>();
v = specialinvoke v.<org.apache.dubbo.qos.legacy.InvokeTelnetHandler: boolean isInvokedSelectCommand(org.apache.dubbo.remoting.Channel)>(v);
if v == 0 goto label;
v = interfaceinvoke v.<org.apache.dubbo.remoting.Channel: java.lang.Object getAttribute(java.lang.String)>("telnet.invoke.method.provider");
v = interfaceinvoke v.<org.apache.dubbo.remoting.Channel: java.lang.Object getAttribute(java.lang.String)>("telnet.select.method");
goto label;
label:
v = staticinvoke <org.apache.dubbo.rpc.model.ApplicationModel: java.util.Collection allProviderModels()>();
v = interfaceinvoke v.<java.util.Collection: 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 = specialinvoke v.<org.apache.dubbo.qos.legacy.InvokeTelnetHandler: boolean isServiceMatch(java.lang.String,org.apache.dubbo.rpc.model.ProviderModel)>(v, v);
if v == 0 goto label;
v = v;
v = virtualinvoke v.<org.apache.dubbo.rpc.model.ProviderModel: java.util.Set getAllMethods()>();
v = specialinvoke v.<org.apache.dubbo.qos.legacy.InvokeTelnetHandler: java.util.List findSameSignatureMethod(java.util.Set,java.lang.String,java.util.List)>(v, v, v);
v = staticinvoke <org.apache.dubbo.common.utils.CollectionUtils: boolean isNotEmpty(java.util.Collection)>(v);
if v == 0 goto label;
v = interfaceinvoke v.<java.util.List: int size()>();
if v != 1 goto label;
interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(0);
goto label;
label:
v = specialinvoke v.<org.apache.dubbo.qos.legacy.InvokeTelnetHandler: java.util.List findMatchMethods(java.util.List,java.util.List)>(v, v);
v = staticinvoke <org.apache.dubbo.common.utils.CollectionUtils: boolean isNotEmpty(java.util.Collection)>(v);
if v == 0 goto label;
v = interfaceinvoke v.<java.util.List: int size()>();
if v != 1 goto label;
interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(0);
goto label;
label:
interfaceinvoke v.<org.apache.dubbo.remoting.Channel: void setAttribute(java.lang.String,java.lang.Object)>("telnet.invoke.method.provider", v);
interfaceinvoke v.<org.apache.dubbo.remoting.Channel: void setAttribute(java.lang.String,java.lang.Object)>("telnet.invoke.method.list", v);
interfaceinvoke v.<org.apache.dubbo.remoting.Channel: void setAttribute(java.lang.String,java.lang.Object)>("telnet.invoke.method.message", v);
specialinvoke v.<org.apache.dubbo.qos.legacy.InvokeTelnetHandler: void printSelectMessage(java.lang.StringBuilder,java.util.List)>(v, v);
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
return v;
label:
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: boolean isEmpty(java.lang.String)>(v);
if v != 0 goto label;
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("Use default service ");
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(".");
label:
if v == null goto label;
if v == null goto label;
label:
v = interfaceinvoke v.<java.util.List: java.lang.Object[] toArray()>();
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class[] getParameterTypes()>();
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.reflect.Type[] getGenericParameterTypes()>();
v = staticinvoke <org.apache.dubbo.common.utils.PojoUtils: java.lang.Object[] realize(java.lang.Object[],java.lang.Class[],java.lang.reflect.Type[])>(v, v, v);
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = new org.apache.dubbo.rpc.AppResponse;
specialinvoke v.<org.apache.dubbo.rpc.AppResponse: void <init>()>();
label:
v = virtualinvoke v.<org.apache.dubbo.rpc.model.ProviderModel: java.lang.Object getServiceInstance()>();
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Object invoke(java.lang.Object,java.lang.Object[])>(v, v);
virtualinvoke v.<org.apache.dubbo.rpc.AppResponse: void setValue(java.lang.Object)>(v);
label:
goto label;
label:
v := @caughtexception;
virtualinvoke v.<org.apache.dubbo.rpc.AppResponse: void setException(java.lang.Throwable)>(v);
label:
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("\r\nresult: ");
v = virtualinvoke v.<org.apache.dubbo.rpc.AppResponse: java.lang.Object recreate()>();
v = staticinvoke <com.alibaba.fastjson.JSON: java.lang.String toJSONString(java.lang.Object)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("\r\nelapsed: ");
v = v - v;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(long)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(" ms.");
label:
goto label;
label:
v := @caughtexception;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.String getName()>();
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: java.lang.String toString(java.lang.Throwable)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, 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[])>("Failed to invoke method \u, cause: \u0001");
return v;
label:
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("\r\nNo such method ");
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(" in service ");
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
goto label;
label:
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("\r\nNo such service ");
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
label:
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
return v;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private boolean isServiceMatch(java.lang.String, org.apache.dubbo.rpc.model.ProviderModel)
{
org.apache.dubbo.rpc.model.ProviderModel v;
org.apache.dubbo.qos.legacy.InvokeTelnetHandler v;
java.lang.Class v, v;
java.lang.String v, v, v, v;
boolean v, v, v, v, v;
v := @this: org.apache.dubbo.qos.legacy.InvokeTelnetHandler;
v := @parameter: java.lang.String;
v := @parameter: org.apache.dubbo.rpc.model.ProviderModel;
v = virtualinvoke v.<org.apache.dubbo.rpc.model.ProviderModel: java.lang.String getServiceKey()>();
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>(v);
if v != 0 goto label;
v = virtualinvoke v.<org.apache.dubbo.rpc.model.ProviderModel: java.lang.Class getServiceInterfaceClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getSimpleName()>();
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>(v);
if v != 0 goto label;
v = virtualinvoke v.<org.apache.dubbo.rpc.model.ProviderModel: java.lang.Class getServiceInterfaceClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>(v);
if v != 0 goto label;
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: boolean isEmpty(java.lang.String)>(v);
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private java.util.List findSameSignatureMethod(java.util.Set, java.lang.String, java.util.List)
{
java.util.Iterator v;
java.lang.Class[] v;
java.util.Set v;
java.util.ArrayList v;
java.util.List v;
org.apache.dubbo.qos.legacy.InvokeTelnetHandler v;
int v, v;
java.lang.Object v;
java.lang.String v, v;
java.lang.reflect.Method v;
boolean v, v;
v := @this: org.apache.dubbo.qos.legacy.InvokeTelnetHandler;
v := @parameter: java.util.Set;
v := @parameter: java.lang.String;
v := @parameter: java.util.List;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
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.<org.apache.dubbo.rpc.model.MethodDescriptor: java.lang.reflect.Method getMethod()>();
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 = lengthof v;
v = interfaceinvoke v.<java.util.List: int size()>();
if v != v goto label;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
return v;
}
private java.util.List findMatchMethods(java.util.List, java.util.List)
{
java.util.Iterator v;
java.util.ArrayList v;
java.util.List v, v;
org.apache.dubbo.qos.legacy.InvokeTelnetHandler v;
java.lang.Object v;
boolean v, v;
v := @this: org.apache.dubbo.qos.legacy.InvokeTelnetHandler;
v := @parameter: java.util.List;
v := @parameter: java.util.List;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = interfaceinvoke v.<java.util.List: 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 = staticinvoke <org.apache.dubbo.qos.legacy.InvokeTelnetHandler: boolean isMatch(java.lang.reflect.Method,java.util.List)>(v, v);
if v == 0 goto label;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
return v;
}
private static boolean isMatch(java.lang.reflect.Method, java.util.List)
{
int v, v, v, v;
java.lang.reflect.Method v;
boolean v, v, v, v, v, v, v, v, v, v, v, v, v;
java.lang.Class[] v;
java.util.List v;
java.lang.Class v, v, v, v, v;
java.lang.Object v, v;
v := @parameter: java.lang.reflect.Method;
v := @parameter: java.util.List;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class[] getParameterTypes()>();
v = lengthof v;
v = interfaceinvoke v.<java.util.List: int size()>();
if v == v goto label;
return 0;
label:
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(v);
if v != null goto label;
v = virtualinvoke v.<java.lang.Class: boolean isPrimitive()>();
if v == 0 goto label;
return 0;
label:
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = staticinvoke <org.apache.dubbo.common.utils.ReflectUtils: boolean isPrimitive(java.lang.Class)>(v);
if v == 0 goto label;
v = v instanceof java.lang.String;
if v == 0 goto label;
v = virtualinvoke v.<java.lang.Class: boolean isEnum()>();
if v != 0 goto label;
label:
v = staticinvoke <org.apache.dubbo.common.utils.ReflectUtils: boolean isPrimitive(java.lang.Class)>(v);
if v != 0 goto label;
return 0;
label:
v = staticinvoke <org.apache.dubbo.common.utils.ReflectUtils: boolean isCompatible(java.lang.Class,java.lang.Object)>(v, v);
if v != 0 goto label;
return 0;
label:
v = v instanceof java.util.Map;
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("class");
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: boolean isNotEmpty(java.lang.String)>(v);
if v == 0 goto label;
v = staticinvoke <org.apache.dubbo.common.utils.ReflectUtils: java.lang.Class forName(java.lang.String)>(v);
v = virtualinvoke v.<java.lang.Class: boolean isAssignableFrom(java.lang.Class)>(v);
if v != 0 goto label;
return 0;
label:
return 1;
label:
v = v instanceof java.util.Collection;
if v == 0 goto label;
v = virtualinvoke v.<java.lang.Class: boolean isArray()>();
if v != 0 goto label;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: boolean isAssignableFrom(java.lang.Class)>(v);
if v != 0 goto label;
return 0;
label:
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: boolean isAssignableFrom(java.lang.Class)>(v);
if v != 0 goto label;
return 0;
label:
v = v + 1;
goto label;
label:
return 1;
}
private void printSelectMessage(java.lang.StringBuilder, java.util.List)
{
int v, v, v, v, v, v, v;
java.lang.String v, v;
java.lang.Class[] v;
java.util.List v;
org.apache.dubbo.qos.legacy.InvokeTelnetHandler v;
java.lang.Class v;
java.lang.Object v;
java.lang.StringBuilder v, v, v, v;
v := @this: org.apache.dubbo.qos.legacy.InvokeTelnetHandler;
v := @parameter: java.lang.StringBuilder;
v := @parameter: java.util.List;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("Methods:\r\n");
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 = v + 1;
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(int)>(v);
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(". ");
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("(");
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class[] getParameterTypes()>();
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.Class: java.lang.String getSimpleName()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
v = lengthof v;
v = v - 1;
if v == v goto label;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(",");
label:
v = v + 1;
goto label;
label:
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(")\r\n");
v = v + 1;
goto label;
label:
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("Please use the select command to select the method you want to invoke. eg: select 1");
return;
}
private boolean isInvokedSelectCommand(org.apache.dubbo.remoting.Channel)
{
org.apache.dubbo.remoting.Channel v;
org.apache.dubbo.qos.legacy.InvokeTelnetHandler v;
boolean v;
v := @this: org.apache.dubbo.qos.legacy.InvokeTelnetHandler;
v := @parameter: org.apache.dubbo.remoting.Channel;
v = interfaceinvoke v.<org.apache.dubbo.remoting.Channel: boolean hasAttribute(java.lang.String)>("telnet.select");
if v == 0 goto label;
interfaceinvoke v.<org.apache.dubbo.remoting.Channel: void removeAttribute(java.lang.String)>("telnet.select");
return 1;
label:
return 0;
}
}