public class org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator extends java.lang.Object
{
private static final org.apache.dubbo.common.logger.Logger logger;
private static final java.lang.String CLASSNAME_INVOCATION;
private static final java.lang.String CODE_PACKAGE;
private static final java.lang.String CODE_IMPORTS;
private static final java.lang.String CODE_CLASS_DECLARATION;
private static final java.lang.String CODE_METHOD_DECLARATION;
private static final java.lang.String CODE_METHOD_ARGUMENT;
private static final java.lang.String CODE_METHOD_THROWS;
private static final java.lang.String CODE_UNSUPPORTED;
private static final java.lang.String CODE_URL_NULL_CHECK;
private static final java.lang.String CODE_EXT_NAME_ASSIGNMENT;
private static final java.lang.String CODE_EXT_NAME_NULL_CHECK;
private static final java.lang.String CODE_INVOCATION_ARGUMENT_NULL_CHECK;
private static final java.lang.String CODE_EXTENSION_ASSIGNMENT;
private static final java.lang.String CODE_EXTENSION_METHOD_INVOKE_ARGUMENT;
private final java.lang.Class type;
private java.lang.String defaultExtName;
public void <init>(java.lang.Class, java.lang.String)
{
org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator v;
java.lang.Class v;
java.lang.String v;
v := @this: org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.String;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.Class type> = v;
v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String defaultExtName> = v;
return;
}
private boolean hasAdaptiveMethod()
{
org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator v;
java.util.stream.Stream v;
java.util.function.Predicate v;
java.lang.Class v;
java.lang.reflect.Method[] v;
boolean v;
v := @this: org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator;
v = v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Method[] getMethods()>();
v = staticinvoke <java.util.Arrays: java.util.stream.Stream stream(java.lang.Object[])>(v);
v = staticinvoke <org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator$lambda_hasAdaptiveMethod_0__188: java.util.function.Predicate bootstrap$()>();
v = interfaceinvoke v.<java.util.stream.Stream: boolean anyMatch(java.util.function.Predicate)>(v);
return v;
}
public java.lang.String generate()
{
java.lang.IllegalStateException v;
java.lang.reflect.Method[] v;
int v, v;
java.lang.String v, v, v, v, v, v, v, v;
java.lang.reflect.Method v;
boolean v, v;
org.apache.dubbo.common.logger.Logger v, v;
org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator v;
java.lang.Class v, v;
java.lang.StringBuilder v;
v := @this: org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator;
v = specialinvoke v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: boolean hasAdaptiveMethod()>();
if v != 0 goto label;
v = new java.lang.IllegalStateException;
v = v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
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[])>("No adaptive method exist on extension \u, refuse to create the adaptive class!");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = new java.lang.StringBuilder;
specialinvoke v.<java.lang.StringBuilder: void <init>()>();
v = specialinvoke v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String generatePackageInfo()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
v = specialinvoke v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String generateImports()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
v = specialinvoke v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String generateClassDeclaration()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
v = v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Method[] getMethods()>();
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = specialinvoke v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String generateMethod(java.lang.reflect.Method)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
v = v + 1;
goto label;
label:
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("}");
v = <org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: org.apache.dubbo.common.logger.Logger logger>;
v = interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: boolean isDebugEnabled()>();
if v == 0 goto label;
v = <org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: org.apache.dubbo.common.logger.Logger logger>;
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void debug(java.lang.String)>(v);
label:
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
return v;
}
private java.lang.String generatePackageInfo()
{
org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator v;
java.lang.Object[] v;
java.lang.Package v;
java.lang.Class v;
java.lang.String v, v;
v := @this: org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator;
v = newarray (java.lang.Object)[1];
v = v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: java.lang.Package getPackage()>();
v = virtualinvoke v.<java.lang.Package: java.lang.String getName()>();
v[0] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("package %s;\n", v);
return v;
}
private java.lang.String generateImports()
{
org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator v;
java.lang.Object[] v;
java.lang.Class v;
java.lang.String v, v;
v := @this: org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator;
v = newarray (java.lang.Object)[1];
v = class "Lorg/apache/dubbo/common/extension/ExtensionLoader;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v[0] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("import %s;\n", v);
return v;
}
private java.lang.String generateClassDeclaration()
{
org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator v;
java.lang.Object[] v;
java.lang.Class v, v;
java.lang.String v, v, v;
v := @this: org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator;
v = newarray (java.lang.Object)[2];
v = v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getSimpleName()>();
v[0] = v;
v = v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getCanonicalName()>();
v[1] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("public class %s$Adaptive implements %s {\n", v);
return v;
}
private java.lang.String generateUnsupported(java.lang.reflect.Method)
{
org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator v;
java.lang.Object[] v;
java.lang.Class v;
java.lang.String v, v;
java.lang.reflect.Method v;
v := @this: org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator;
v := @parameter: java.lang.reflect.Method;
v = newarray (java.lang.Object)[2];
v[0] = v;
v = v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v[1] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("throw new UnsupportedOperationException(\"The method %s of interface %s is not adaptive method!\");\n", v);
return v;
}
private int getUrlTypeIndex(java.lang.reflect.Method)
{
java.lang.Class[] v;
org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator v;
int v, v, v, v;
java.lang.Class v;
java.lang.reflect.Method v;
boolean v;
v := @this: org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator;
v := @parameter: java.lang.reflect.Method;
v = (int) -1;
v = v;
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.Object: boolean equals(java.lang.Object)>(class "Lorg/apache/dubbo/common/URL;");
if v == 0 goto label;
v = v;
goto label;
label:
v = v + 1;
goto label;
label:
return v;
}
private java.lang.String generateMethod(java.lang.reflect.Method)
{
java.lang.Object[] v;
org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator v;
java.lang.Class v;
java.lang.String v, v, v, v, v, v;
java.lang.reflect.Method v;
v := @this: org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator;
v := @parameter: java.lang.reflect.Method;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class getReturnType()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getCanonicalName()>();
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.String getName()>();
v = specialinvoke v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String generateMethodContent(java.lang.reflect.Method)>(v);
v = specialinvoke v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String generateMethodArguments(java.lang.reflect.Method)>(v);
v = specialinvoke v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String generateMethodThrows(java.lang.reflect.Method)>(v);
v = newarray (java.lang.Object)[5];
v[0] = v;
v[1] = v;
v[2] = v;
v[3] = v;
v[4] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("public %s %s(%s) %s {\n%s}\n", v);
return v;
}
private java.lang.String generateMethodArguments(java.lang.reflect.Method)
{
java.util.stream.IntStream v;
java.lang.Class[] v;
org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator v;
java.util.stream.Stream v;
int v;
java.lang.Object v;
java.util.stream.Collector v;
java.lang.reflect.Method v;
java.util.function.IntFunction v;
v := @this: org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator;
v := @parameter: java.lang.reflect.Method;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class[] getParameterTypes()>();
v = lengthof v;
v = staticinvoke <java.util.stream.IntStream: java.util.stream.IntStream range(int,int)>(0, v);
v = staticinvoke <org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator$lambda_generateMethodArguments_1__189: java.util.function.IntFunction bootstrap$(java.lang.Class[])>(v);
v = interfaceinvoke v.<java.util.stream.IntStream: java.util.stream.Stream mapToObj(java.util.function.IntFunction)>(v);
v = staticinvoke <java.util.stream.Collectors: java.util.stream.Collector joining(java.lang.CharSequence)>(", ");
v = interfaceinvoke v.<java.util.stream.Stream: java.lang.Object collect(java.util.stream.Collector)>(v);
return v;
}
private java.lang.String generateMethodThrows(java.lang.reflect.Method)
{
java.lang.Object[] v;
java.lang.Class[] v;
java.util.function.Function v;
org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator v;
java.util.stream.Stream v, v;
int v;
java.lang.Object v;
java.lang.String v;
java.util.stream.Collector v;
java.lang.reflect.Method v;
v := @this: org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator;
v := @parameter: java.lang.reflect.Method;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class[] getExceptionTypes()>();
v = lengthof v;
if v <= 0 goto label;
v = staticinvoke <java.util.Arrays: java.util.stream.Stream stream(java.lang.Object[])>(v);
v = staticinvoke <org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator$getCanonicalName__190: java.util.function.Function bootstrap$()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.util.stream.Stream map(java.util.function.Function)>(v);
v = staticinvoke <java.util.stream.Collectors: java.util.stream.Collector joining(java.lang.CharSequence)>(", ");
v = interfaceinvoke v.<java.util.stream.Stream: java.lang.Object collect(java.util.stream.Collector)>(v);
v = newarray (java.lang.Object)[1];
v[0] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("throws %s", v);
return v;
label:
return "";
}
private java.lang.String generateUrlNullCheck(int)
{
java.lang.Object[] v;
java.lang.Integer v, v;
org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator v;
int v;
java.lang.Class v;
java.lang.String v, v;
v := @this: org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator;
v := @parameter: int;
v = newarray (java.lang.Object)[3];
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[0] = v;
v = class "Lorg/apache/dubbo/common/URL;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v[1] = v;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[2] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("if (arg%d == null) throw new IllegalArgumentException(\"url == null\");\n%s url = arg%d;\n", v);
return v;
}
private java.lang.String generateMethodContent(java.lang.reflect.Method)
{
java.lang.String[] v;
int v, v;
java.lang.String v, v, v, v, v, v, v, v, v;
java.lang.reflect.Method v;
boolean v;
org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator v;
java.lang.'annotation'.Annotation v;
java.lang.StringBuilder v;
v := @this: org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator;
v := @parameter: java.lang.reflect.Method;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.'annotation'.Annotation getAnnotation(java.lang.Class)>(class "Lorg/apache/dubbo/common/extension/Adaptive;");
v = new java.lang.StringBuilder;
specialinvoke v.<java.lang.StringBuilder: void <init>(int)>(512);
if v != null goto label;
v = specialinvoke v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String generateUnsupported(java.lang.reflect.Method)>(v);
return v;
label:
v = specialinvoke v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: int getUrlTypeIndex(java.lang.reflect.Method)>(v);
v = (int) -1;
if v == v goto label;
v = specialinvoke v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String generateUrlNullCheck(int)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
goto label;
label:
v = specialinvoke v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String generateUrlAssignmentIndirectly(java.lang.reflect.Method)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
label:
v = specialinvoke v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String[] getMethodAdaptiveValue(org.apache.dubbo.common.extension.Adaptive)>(v);
v = specialinvoke v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: boolean hasInvocationArgument(java.lang.reflect.Method)>(v);
v = specialinvoke v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String generateInvocationArgumentNullCheck(java.lang.reflect.Method)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
v = specialinvoke v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String generateExtNameAssignment(java.lang.String[],boolean)>(v, v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
v = specialinvoke v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String generateExtNameNullCheck(java.lang.String[])>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
v = specialinvoke v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String generateExtensionAssignment()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
v = specialinvoke v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String generateReturnAndInvocation(java.lang.reflect.Method)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
return v;
}
private java.lang.String generateExtNameNullCheck(java.lang.String[])
{
org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator v;
java.lang.Object[] v;
java.lang.Class v;
java.lang.String[] v;
java.lang.String v, v, v;
v := @this: org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator;
v := @parameter: java.lang.String[];
v = newarray (java.lang.Object)[2];
v = v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v[0] = v;
v = staticinvoke <java.util.Arrays: java.lang.String toString(java.lang.Object[])>(v);
v[1] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("if(extName == null) throw new IllegalStateException(\"Failed to get extension (%s) name from url (\" + url.toString() + \") use keys(%s)\");\n", v);
return v;
}
private java.lang.String generateExtNameAssignment(java.lang.String[], boolean)
{
boolean v, v, v, v;
java.lang.Object[] v, v, v, v, v, v, v, v, v;
java.lang.String[] v;
int v, v, v, v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator v;
v := @this: org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator;
v := @parameter: java.lang.String[];
v := @parameter: boolean;
v = null;
v = lengthof v;
v = v - 1;
label:
if v < 0 goto label;
v = lengthof v;
v = v - 1;
if v != v goto label;
v = v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String defaultExtName>;
if null == v goto label;
v = "protocol";
v = v[v];
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
if v == 0 goto label;
v = newarray (java.lang.Object)[2];
v = v[v];
v[0] = v;
v = v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String defaultExtName>;
v[1] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("url.getMethodParameter(methodName, \"%s\", \"%s\")", v);
goto label;
label:
v = newarray (java.lang.Object)[2];
v = v[v];
v[0] = v;
v = v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String defaultExtName>;
v[1] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("url.getParameter(\"%s\", \"%s\")", v);
goto label;
label:
v = newarray (java.lang.Object)[1];
v = v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String defaultExtName>;
v[0] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("( url.getProtocol() == null ? \"%s\" : url.getProtocol() )", v);
goto label;
label:
v = "protocol";
v = v[v];
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
if v == 0 goto label;
v = newarray (java.lang.Object)[2];
v = v[v];
v[0] = v;
v = v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String defaultExtName>;
v[1] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("url.getMethodParameter(methodName, \"%s\", \"%s\")", v);
goto label;
label:
v = newarray (java.lang.Object)[1];
v = v[v];
v[0] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("url.getParameter(\"%s\")", v);
goto label;
label:
v = "url.getProtocol()";
goto label;
label:
v = "protocol";
v = v[v];
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
if v == 0 goto label;
v = newarray (java.lang.Object)[2];
v = v[v];
v[0] = v;
v = v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String defaultExtName>;
v[1] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("url.getMethodParameter(methodName, \"%s\", \"%s\")", v);
goto label;
label:
v = newarray (java.lang.Object)[2];
v = v[v];
v[0] = v;
v[1] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("url.getParameter(\"%s\", %s)", v);
goto label;
label:
v = newarray (java.lang.Object)[1];
v[0] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("url.getProtocol() == null ? (%s) : url.getProtocol()", v);
label:
v = v - 1;
goto label;
label:
v = newarray (java.lang.Object)[1];
v[0] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("String extName = %s;\n", v);
return v;
}
private java.lang.String generateExtensionAssignment()
{
java.lang.Object[] v;
org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator v;
java.lang.Class v, v, v;
java.lang.String v, v, v, v;
v := @this: org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator;
v = newarray (java.lang.Object)[3];
v = v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v[0] = v;
v = class "Lorg/apache/dubbo/common/extension/ExtensionLoader;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getSimpleName()>();
v[1] = v;
v = v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v[2] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("%s extension = (%<s)%s.getExtensionLoader(%s.class).getExtension(extName);\n", v);
return v;
}
private java.lang.String generateReturnAndInvocation(java.lang.reflect.Method)
{
java.util.stream.IntStream v;
java.lang.Object[] v;
java.lang.reflect.Parameter[] v;
int v;
java.lang.String v, v, v, v;
java.util.stream.Collector v;
java.lang.reflect.Method v;
boolean v;
java.util.function.IntFunction v;
org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator v;
java.util.stream.Stream v;
java.lang.Class v, v;
java.lang.Object v;
v := @this: org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator;
v := @parameter: java.lang.reflect.Method;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class getReturnType()>();
v = <java.lang.Void: java.lang.Class TYPE>;
v = virtualinvoke v.<java.lang.Object: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = "";
goto label;
label:
v = "return ";
label:
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.reflect.Parameter[] getParameters()>();
v = lengthof v;
v = staticinvoke <java.util.stream.IntStream: java.util.stream.IntStream range(int,int)>(0, v);
v = staticinvoke <org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator$lambda_generateReturnAndInvocation_2__191: java.util.function.IntFunction bootstrap$()>();
v = interfaceinvoke v.<java.util.stream.IntStream: java.util.stream.Stream mapToObj(java.util.function.IntFunction)>(v);
v = staticinvoke <java.util.stream.Collectors: java.util.stream.Collector joining(java.lang.CharSequence)>(", ");
v = interfaceinvoke v.<java.util.stream.Stream: java.lang.Object collect(java.util.stream.Collector)>(v);
v = newarray (java.lang.Object)[2];
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.String getName()>();
v[0] = v;
v[1] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("extension.%s(%s);\n", 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[])>("\u0001\u0001");
return v;
}
private boolean hasInvocationArgument(java.lang.reflect.Method)
{
org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator v;
java.util.stream.Stream v;
java.util.function.Predicate v;
java.lang.Class[] v;
java.lang.reflect.Method v;
boolean v;
v := @this: org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator;
v := @parameter: java.lang.reflect.Method;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class[] getParameterTypes()>();
v = staticinvoke <java.util.Arrays: java.util.stream.Stream stream(java.lang.Object[])>(v);
v = staticinvoke <org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator$lambda_hasInvocationArgument_3__192: java.util.function.Predicate bootstrap$()>();
v = interfaceinvoke v.<java.util.stream.Stream: boolean anyMatch(java.util.function.Predicate)>(v);
return v;
}
private java.lang.String generateInvocationArgumentNullCheck(java.lang.reflect.Method)
{
java.util.stream.IntStream v, v;
java.lang.Class[] v;
java.util.function.IntPredicate v;
org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator v;
java.util.stream.Stream v;
int v;
java.util.Optional v;
java.lang.Object v;
java.lang.reflect.Method v;
java.util.function.IntFunction v;
v := @this: org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator;
v := @parameter: java.lang.reflect.Method;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class[] getParameterTypes()>();
v = lengthof v;
v = staticinvoke <java.util.stream.IntStream: java.util.stream.IntStream range(int,int)>(0, v);
v = staticinvoke <org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator$lambda_generateInvocationArgumentNullCheck_4__193: java.util.function.IntPredicate bootstrap$(java.lang.Class[])>(v);
v = interfaceinvoke v.<java.util.stream.IntStream: java.util.stream.IntStream filter(java.util.function.IntPredicate)>(v);
v = staticinvoke <org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator$lambda_generateInvocationArgumentNullCheck_5__194: java.util.function.IntFunction bootstrap$()>();
v = interfaceinvoke v.<java.util.stream.IntStream: java.util.stream.Stream mapToObj(java.util.function.IntFunction)>(v);
v = interfaceinvoke v.<java.util.stream.Stream: java.util.Optional findFirst()>();
v = virtualinvoke v.<java.util.Optional: java.lang.Object orElse(java.lang.Object)>("");
return v;
}
private java.lang.String[] getMethodAdaptiveValue(org.apache.dubbo.common.extension.Adaptive)
{
org.apache.dubbo.common.extension.Adaptive v;
java.lang.String[] v, v;
org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator v;
int v;
java.lang.Class v;
java.lang.String v, v;
v := @this: org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator;
v := @parameter: org.apache.dubbo.common.extension.Adaptive;
v = interfaceinvoke v.<org.apache.dubbo.common.extension.Adaptive: java.lang.String[] value()>();
v = lengthof v;
if v != 0 goto label;
v = v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getSimpleName()>();
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: java.lang.String camelToSplitName(java.lang.String,java.lang.String)>(v, ".");
v = newarray (java.lang.String)[1];
v[0] = v;
v = v;
label:
return v;
}
private java.lang.String generateUrlAssignmentIndirectly(java.lang.reflect.Method)
{
java.lang.IllegalStateException v;
java.lang.Integer v;
java.lang.reflect.Method[] v;
java.lang.reflect.Method v, v;
boolean v, v, v;
java.util.Set v;
java.util.HashMap v;
int v, v, v, v, v, v, v, v, v, v, v, v, v;
java.lang.String v, v, v, v, v, v;
java.util.Iterator v;
java.lang.Class[] v, v;
org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator v;
java.lang.Class v, v, v, v, v;
java.lang.Object v, v, v, v, v;
v := @this: org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator;
v := @parameter: java.lang.reflect.Method;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class[] getParameterTypes()>();
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: void <init>()>();
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Method[] getMethods()>();
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("get");
if v != 0 goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 3 goto label;
label:
v = virtualinvoke v.<java.lang.reflect.Method: int getModifiers()>();
v = staticinvoke <java.lang.reflect.Modifier: boolean isPublic(int)>(v);
if v == 0 goto label;
v = virtualinvoke v.<java.lang.reflect.Method: int getModifiers()>();
v = staticinvoke <java.lang.reflect.Modifier: boolean isStatic(int)>(v);
if v != 0 goto label;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class[] getParameterTypes()>();
v = lengthof v;
if v != 0 goto label;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class getReturnType()>();
if v != class "Lorg/apache/dubbo/common/URL;" goto label;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
v = v + 1;
goto label;
label:
v = v + 1;
goto label;
label:
v = interfaceinvoke v.<java.util.Map: int size()>();
if v > 0 goto label;
v = new java.lang.IllegalStateException;
v = v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.String getName()>();
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 create adaptive class for interface \u0001: not found url parameter or url attribute in parameters of method \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("getUrl");
if v == null goto label;
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v = v[v];
v = specialinvoke v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String generateGetUrlNullCheck(int,java.lang.Class,java.lang.String)>(v, v, "getUrl");
return v;
label:
v = interfaceinvoke v.<java.util.Map: java.util.Set entrySet()>();
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v = v[v];
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getKey()>();
v = specialinvoke v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String generateGetUrlNullCheck(int,java.lang.Class,java.lang.String)>(v, v, v);
return v;
}
private java.lang.String generateGetUrlNullCheck(int, java.lang.Class, java.lang.String)
{
java.lang.Object[] v, v, v;
java.lang.Integer v, v, v;
int v;
java.lang.String v, v, v, v, v, v, v, v;
org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator v;
java.lang.Class v, v;
java.lang.StringBuilder v;
v := @this: org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator;
v := @parameter: int;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.String;
v = new java.lang.StringBuilder;
specialinvoke v.<java.lang.StringBuilder: void <init>()>();
v = newarray (java.lang.Object)[2];
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[0] = v;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v[1] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("if (arg%d == null) throw new IllegalArgumentException(\"%s argument == null\");\n", v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
v = newarray (java.lang.Object)[4];
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[0] = v;
v[1] = v;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v[2] = v;
v[3] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("if (arg%d.%s() == null) throw new IllegalArgumentException(\"%s argument %s() == null\");\n", v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
v = newarray (java.lang.Object)[3];
v = class "Lorg/apache/dubbo/common/URL;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v[0] = v;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[1] = v;
v[2] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("%s url = arg%d.%s();\n", v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
return v;
}
static void <clinit>()
{
org.apache.dubbo.common.logger.Logger v;
v = staticinvoke <org.apache.dubbo.common.logger.LoggerFactory: org.apache.dubbo.common.logger.Logger getLogger(java.lang.Class)>(class "Lorg/apache/dubbo/common/extension/AdaptiveClassCodeGenerator;");
<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: org.apache.dubbo.common.logger.Logger logger> = v;
return;
}
}