public class org.apache.dubbo.common.extension.ExtensionLoader extends java.lang.Object
{
private static final org.apache.dubbo.common.logger.Logger logger;
private static final java.util.regex.Pattern NAME_SEPARATOR;
private static final java.util.concurrent.ConcurrentMap EXTENSION_LOADERS;
private static final java.util.concurrent.ConcurrentMap EXTENSION_INSTANCES;
private final java.lang.Class type;
private final org.apache.dubbo.common.extension.ExtensionFactory objectFactory;
private final java.util.concurrent.ConcurrentMap cachedNames;
private final org.apache.dubbo.common.utils.Holder cachedClasses;
private final java.util.Map cachedActivates;
private final java.util.concurrent.ConcurrentMap cachedInstances;
private final org.apache.dubbo.common.utils.Holder cachedAdaptiveInstance;
private volatile java.lang.Class cachedAdaptiveClass;
private java.lang.String cachedDefaultName;
private volatile java.lang.Throwable createAdaptiveInstanceError;
private java.util.Set cachedWrapperClasses;
private java.util.Map exceptions;
private static volatile org.apache.dubbo.common.extension.LoadingStrategy[] strategies;
public static transient void setLoadingStrategies(org.apache.dubbo.common.extension.LoadingStrategy[])
{
org.apache.dubbo.common.extension.LoadingStrategy[] v;
boolean v;
v := @parameter: org.apache.dubbo.common.extension.LoadingStrategy[];
v = staticinvoke <org.apache.dubbo.common.utils.ArrayUtils: boolean isNotEmpty(java.lang.Object[])>(v);
if v == 0 goto label;
<org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.extension.LoadingStrategy[] strategies> = v;
label:
return;
}
private static org.apache.dubbo.common.extension.LoadingStrategy[] loadLoadingStrategies()
{
java.lang.Object[] v;
java.util.stream.Stream v, v;
java.util.ServiceLoader v;
java.util.Spliterator v;
java.util.function.IntFunction v;
v = staticinvoke <java.util.ServiceLoader: java.util.ServiceLoader load(java.lang.Class)>(class "Lorg/apache/dubbo/common/extension/LoadingStrategy;");
v = virtualinvoke v.<java.util.ServiceLoader: java.util.Spliterator spliterator()>();
v = staticinvoke <java.util.stream.StreamSupport: java.util.stream.Stream stream(java.util.Spliterator,boolean)>(v, 0);
v = interfaceinvoke v.<java.util.stream.Stream: java.util.stream.Stream sorted()>();
v = staticinvoke <org.apache.dubbo.common.extension.ExtensionLoader$lambda_loadLoadingStrategies_0__195: java.util.function.IntFunction bootstrap$()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.lang.Object[] toArray(java.util.function.IntFunction)>(v);
return v;
}
public static java.util.List getLoadingStrategies()
{
org.apache.dubbo.common.extension.LoadingStrategy[] v;
java.util.List v;
v = <org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.extension.LoadingStrategy[] strategies>;
v = staticinvoke <java.util.Arrays: java.util.List asList(java.lang.Object[])>(v);
return v;
}
private void <init>(java.lang.Class)
{
org.apache.dubbo.common.extension.ExtensionLoader v, v;
java.util.concurrent.ConcurrentHashMap v, v, v, v;
java.lang.Class v;
java.lang.Object v;
org.apache.dubbo.common.utils.Holder v, v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.Class;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.concurrent.ConcurrentMap cachedNames> = v;
v = new org.apache.dubbo.common.utils.Holder;
specialinvoke v.<org.apache.dubbo.common.utils.Holder: void <init>()>();
v.<org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.utils.Holder cachedClasses> = v;
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Map cachedActivates> = v;
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.concurrent.ConcurrentMap cachedInstances> = v;
v = new org.apache.dubbo.common.utils.Holder;
specialinvoke v.<org.apache.dubbo.common.utils.Holder: void <init>()>();
v.<org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.utils.Holder cachedAdaptiveInstance> = v;
v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class cachedAdaptiveClass> = null;
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Map exceptions> = v;
v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type> = v;
if v == class "Lorg/apache/dubbo/common/extension/ExtensionFactory;" goto label;
v = staticinvoke <org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.extension.ExtensionLoader getExtensionLoader(java.lang.Class)>(class "Lorg/apache/dubbo/common/extension/ExtensionFactory;");
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Object getAdaptiveExtension()>();
label:
v.<org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.extension.ExtensionFactory objectFactory> = v;
return;
}
private static boolean withExtensionAnnotation(java.lang.Class)
{
java.lang.Class v;
boolean v;
v := @parameter: java.lang.Class;
v = virtualinvoke v.<java.lang.Class: boolean isAnnotationPresent(java.lang.Class)>(class "Lorg/apache/dubbo/common/extension/SPI;");
return v;
}
public static org.apache.dubbo.common.extension.ExtensionLoader getExtensionLoader(java.lang.Class)
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.IllegalArgumentException v, v, v;
java.util.concurrent.ConcurrentMap v, v, v;
java.lang.Class v, v;
java.lang.Object v;
java.lang.String v, v, v;
boolean v, v;
v := @parameter: java.lang.Class;
if v != null goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("Extension type == null");
throw v;
label:
v = virtualinvoke v.<java.lang.Class: boolean isInterface()>();
if v != 0 goto label;
v = new java.lang.IllegalArgumentException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Class)>(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[])>("Extension type (\u) is not an interface!");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
v = staticinvoke <org.apache.dubbo.common.extension.ExtensionLoader: boolean withExtensionAnnotation(java.lang.Class)>(v);
if v != 0 goto label;
v = new java.lang.IllegalArgumentException;
v = class "Lorg/apache/dubbo/common/extension/SPI;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getSimpleName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Class,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[])>("Extension type (\u) is not an extension, because it is NOT annotated with @\u0001!");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
v = <org.apache.dubbo.common.extension.ExtensionLoader: java.util.concurrent.ConcurrentMap EXTENSION_LOADERS>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object get(java.lang.Object)>(v);
if v != null goto label;
v = <org.apache.dubbo.common.extension.ExtensionLoader: java.util.concurrent.ConcurrentMap EXTENSION_LOADERS>;
v = new org.apache.dubbo.common.extension.ExtensionLoader;
specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: void <init>(java.lang.Class)>(v);
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object putIfAbsent(java.lang.Object,java.lang.Object)>(v, v);
v = <org.apache.dubbo.common.extension.ExtensionLoader: java.util.concurrent.ConcurrentMap EXTENSION_LOADERS>;
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object get(java.lang.Object)>(v);
label:
return v;
}
public static void resetExtensionLoader(java.lang.Class)
{
java.util.Iterator v;
java.util.Set v;
java.util.concurrent.ConcurrentMap v, v, v;
java.util.Map v;
java.lang.Class v;
java.lang.Object v, v, v;
boolean v;
v := @parameter: java.lang.Class;
v = <org.apache.dubbo.common.extension.ExtensionLoader: java.util.concurrent.ConcurrentMap EXTENSION_LOADERS>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
v = specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Map getExtensionClasses()>();
v = interfaceinvoke v.<java.util.Map: java.util.Set entrySet()>();
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 = <org.apache.dubbo.common.extension.ExtensionLoader: java.util.concurrent.ConcurrentMap EXTENSION_INSTANCES>;
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object remove(java.lang.Object)>(v);
goto label;
label:
interfaceinvoke v.<java.util.Map: void clear()>();
v = <org.apache.dubbo.common.extension.ExtensionLoader: java.util.concurrent.ConcurrentMap EXTENSION_LOADERS>;
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object remove(java.lang.Object)>(v);
label:
return;
}
public static void destroyAll()
{
java.util.function.BiConsumer v;
java.util.concurrent.ConcurrentMap v;
v = <org.apache.dubbo.common.extension.ExtensionLoader: java.util.concurrent.ConcurrentMap EXTENSION_INSTANCES>;
v = staticinvoke <org.apache.dubbo.common.extension.ExtensionLoader$lambda_destroyAll_1__196: java.util.function.BiConsumer bootstrap$()>();
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: void forEach(java.util.function.BiConsumer)>(v);
return;
}
private static java.lang.ClassLoader findClassLoader()
{
java.lang.ClassLoader v;
v = staticinvoke <org.apache.dubbo.common.utils.ClassUtils: java.lang.ClassLoader getClassLoader(java.lang.Class)>(class "Lorg/apache/dubbo/common/extension/ExtensionLoader;");
return v;
}
public java.lang.String getExtensionName(java.lang.Object)
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.Class v;
java.lang.Object v;
java.lang.String v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.Object;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.String getExtensionName(java.lang.Class)>(v);
return v;
}
public java.lang.String getExtensionName(java.lang.Class)
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.Class v;
java.lang.Object v;
java.util.concurrent.ConcurrentMap v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.Class;
specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Map getExtensionClasses()>();
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.concurrent.ConcurrentMap cachedNames>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object get(java.lang.Object)>(v);
return v;
}
public java.util.List getActivateExtension(org.apache.dubbo.common.URL, java.lang.String)
{
java.util.List v;
org.apache.dubbo.common.URL v;
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.String v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: org.apache.dubbo.common.URL;
v := @parameter: java.lang.String;
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.List getActivateExtension(org.apache.dubbo.common.URL,java.lang.String,java.lang.String)>(v, v, null);
return v;
}
public java.util.List getActivateExtension(org.apache.dubbo.common.URL, java.lang.String[])
{
java.util.List v;
org.apache.dubbo.common.URL v;
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.String[] v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: org.apache.dubbo.common.URL;
v := @parameter: java.lang.String[];
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.List getActivateExtension(org.apache.dubbo.common.URL,java.lang.String[],java.lang.String)>(v, v, null);
return v;
}
public java.util.List getActivateExtension(org.apache.dubbo.common.URL, java.lang.String, java.lang.String)
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.String[] v;
java.util.List v;
org.apache.dubbo.common.URL v;
java.lang.String v, v, v;
java.util.regex.Pattern v;
boolean v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: org.apache.dubbo.common.URL;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getParameter(java.lang.String)>(v);
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: boolean isEmpty(java.lang.String)>(v);
if v == 0 goto label;
v = null;
goto label;
label:
v = <org.apache.dubbo.common.constants.CommonConstants: java.util.regex.Pattern COMMA_SPLIT_PATTERN>;
v = virtualinvoke v.<java.util.regex.Pattern: java.lang.String[] split(java.lang.CharSequence)>(v);
label:
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.List getActivateExtension(org.apache.dubbo.common.URL,java.lang.String[],java.lang.String)>(v, v, v);
return v;
}
public java.util.List getActivateExtension(org.apache.dubbo.common.URL, java.lang.String[], java.lang.String)
{
org.apache.dubbo.common.URL v;
java.util.Map v;
boolean v, v, v, v, v, v, v, v, v, v, v, v, v;
java.util.Set v;
java.util.List v, v;
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.String[] v, v, v;
java.util.ArrayList v, v, v;
int v, v;
java.lang.String v, v, v, v;
java.util.Iterator v;
java.lang.Object v, v, v, v, v, v;
java.util.Comparator v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: org.apache.dubbo.common.URL;
v := @parameter: java.lang.String[];
v := @parameter: java.lang.String;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
if v != null goto label;
v = new java.util.ArrayList;
v = v;
specialinvoke v.<java.util.ArrayList: void <init>(int)>(0);
goto label;
label:
v = staticinvoke <java.util.Arrays: java.util.List asList(java.lang.Object[])>(v);
label:
v = v;
v = interfaceinvoke v.<java.util.List: boolean contains(java.lang.Object)>("-default");
if v != 0 goto label;
specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Map getExtensionClasses()>();
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Map cachedActivates>;
v = interfaceinvoke v.<java.util.Map: java.util.Set entrySet()>();
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 = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getKey()>();
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
v = v instanceof org.apache.dubbo.common.extension.Activate;
if v == 0 goto label;
v = interfaceinvoke v.<org.apache.dubbo.common.extension.Activate: java.lang.String[] group()>();
v = interfaceinvoke v.<org.apache.dubbo.common.extension.Activate: java.lang.String[] value()>();
goto label;
label:
v = v instanceof com.alibaba.dubbo.common.extension.Activate;
if v == 0 goto label;
v = interfaceinvoke v.<com.alibaba.dubbo.common.extension.Activate: java.lang.String[] group()>();
v = interfaceinvoke v.<com.alibaba.dubbo.common.extension.Activate: java.lang.String[] value()>();
label:
v = specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: boolean isMatchGroup(java.lang.String,java.lang.String[])>(v, v);
if v == 0 goto label;
v = interfaceinvoke v.<java.util.List: boolean contains(java.lang.Object)>(v);
if v != 0 goto 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[])>("-\u0001");
v = interfaceinvoke v.<java.util.List: boolean contains(java.lang.Object)>(v);
if v != 0 goto label;
v = specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: boolean isActive(java.lang.String[],org.apache.dubbo.common.URL)>(v, v);
if v == 0 goto label;
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Object getExtension(java.lang.String)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
v = <org.apache.dubbo.common.extension.support.ActivateComparator: java.util.Comparator COMPARATOR>;
interfaceinvoke v.<java.util.List: void sort(java.util.Comparator)>(v);
label:
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
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 = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("-");
if v != 0 goto 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[])>("-\u0001");
v = interfaceinvoke v.<java.util.List: boolean contains(java.lang.Object)>(v);
if v != 0 goto label;
v = "default";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = interfaceinvoke v.<java.util.List: boolean isEmpty()>();
if v != 0 goto label;
interfaceinvoke v.<java.util.List: boolean addAll(int,java.util.Collection)>(0, v);
interfaceinvoke v.<java.util.List: void clear()>();
goto label;
label:
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Object getExtension(java.lang.String)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
label:
v = v + 1;
goto label;
label:
v = interfaceinvoke v.<java.util.List: boolean isEmpty()>();
if v != 0 goto label;
interfaceinvoke v.<java.util.List: boolean addAll(java.util.Collection)>(v);
label:
return v;
}
private boolean isMatchGroup(java.lang.String, java.lang.String[])
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.String[] v;
int v, v, v;
java.lang.String v, v;
boolean v, v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.String;
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 1;
label:
if v == null goto label;
v = lengthof v;
if v <= 0 goto label;
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
return 1;
label:
v = v + 1;
goto label;
label:
return 0;
}
private boolean isActive(java.lang.String[], org.apache.dubbo.common.URL)
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.String[] v, v;
org.apache.dubbo.common.URL v;
java.util.Map v;
int v, v, v;
java.lang.String v, v, v;
boolean v, v, v, v, v, v;
java.util.Iterator v;
java.util.Set v;
java.lang.Object v, v, v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.String[];
v := @parameter: org.apache.dubbo.common.URL;
v = lengthof v;
if v != 0 goto label;
return 1;
label:
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = null;
v = virtualinvoke v.<java.lang.String: boolean contains(java.lang.CharSequence)>(":");
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: java.lang.String[] split(java.lang.String)>(":");
v = v[0];
v = v[1];
label:
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.util.Map getParameters()>();
v = interfaceinvoke v.<java.util.Map: java.util.Set entrySet()>();
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 = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getKey()>();
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto 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[])>(".\u0001");
v = virtualinvoke v.<java.lang.String: boolean endsWith(java.lang.String)>(v);
if v == 0 goto label;
label:
if v == null goto label;
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
label:
if v != null goto label;
v = staticinvoke <org.apache.dubbo.common.utils.ConfigUtils: boolean isNotEmpty(java.lang.String)>(v);
if v == 0 goto label;
label:
return 1;
label:
v = v + 1;
goto label;
label:
return 0;
}
public java.lang.Object getLoadedExtension(java.lang.String)
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.Object v;
java.lang.String v;
java.lang.IllegalArgumentException v;
boolean v;
org.apache.dubbo.common.utils.Holder v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.String;
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: boolean isEmpty(java.lang.String)>(v);
if v == 0 goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("Extension name == null");
throw v;
label:
v = specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.utils.Holder getOrCreateHolder(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.dubbo.common.utils.Holder: java.lang.Object get()>();
return v;
}
private org.apache.dubbo.common.utils.Holder getOrCreateHolder(java.lang.String)
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.Object v;
java.lang.String v;
java.util.concurrent.ConcurrentMap v, v, v;
org.apache.dubbo.common.utils.Holder v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.String;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.concurrent.ConcurrentMap cachedInstances>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object get(java.lang.Object)>(v);
if v != null goto label;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.concurrent.ConcurrentMap cachedInstances>;
v = new org.apache.dubbo.common.utils.Holder;
specialinvoke v.<org.apache.dubbo.common.utils.Holder: void <init>()>();
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object putIfAbsent(java.lang.Object,java.lang.Object)>(v, v);
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.concurrent.ConcurrentMap cachedInstances>;
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object get(java.lang.Object)>(v);
label:
return v;
}
public java.util.Set getLoadedExtensions()
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.util.Set v, v;
java.util.TreeSet v;
java.util.concurrent.ConcurrentMap v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v = new java.util.TreeSet;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.concurrent.ConcurrentMap cachedInstances>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.util.Set keySet()>();
specialinvoke v.<java.util.TreeSet: void <init>(java.util.Collection)>(v);
v = staticinvoke <java.util.Collections: java.util.Set unmodifiableSet(java.util.Set)>(v);
return v;
}
public java.util.List getLoadedExtensionInstances()
{
java.util.function.Consumer v;
org.apache.dubbo.common.extension.ExtensionLoader v;
java.util.Collection v;
java.util.ArrayList v;
java.util.concurrent.ConcurrentMap v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.concurrent.ConcurrentMap cachedInstances>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.util.Collection values()>();
v = staticinvoke <org.apache.dubbo.common.extension.ExtensionLoader$lambda_getLoadedExtensionInstances_2__197: java.util.function.Consumer bootstrap$(java.util.List)>(v);
interfaceinvoke v.<java.util.Collection: void forEach(java.util.function.Consumer)>(v);
return v;
}
public java.lang.Object getLoadedAdaptiveExtensionInstances()
{
java.lang.Object v;
org.apache.dubbo.common.extension.ExtensionLoader v;
org.apache.dubbo.common.utils.Holder v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.utils.Holder cachedAdaptiveInstance>;
v = virtualinvoke v.<org.apache.dubbo.common.utils.Holder: java.lang.Object get()>();
return v;
}
public java.lang.Object getExtension(java.lang.String)
{
java.lang.Object v;
java.lang.String v;
org.apache.dubbo.common.extension.ExtensionLoader v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.String;
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Object getExtension(java.lang.String,boolean)>(v, 1);
return v;
}
public java.lang.Object getExtension(java.lang.String, boolean)
{
java.lang.Throwable v;
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.IllegalArgumentException v;
java.lang.Object v, v;
java.lang.String v, v;
boolean v, v, v;
org.apache.dubbo.common.utils.Holder v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.String;
v := @parameter: boolean;
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: boolean isEmpty(java.lang.String)>(v);
if v == 0 goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("Extension name == null");
throw v;
label:
v = "true";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Object getDefaultExtension()>();
return v;
label:
v = specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.utils.Holder getOrCreateHolder(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.dubbo.common.utils.Holder: java.lang.Object get()>();
if v != null goto label;
entermonitor v;
label:
v = virtualinvoke v.<org.apache.dubbo.common.utils.Holder: java.lang.Object get()>();
if v != null goto label;
v = specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Object createExtension(java.lang.String,boolean)>(v, v);
virtualinvoke v.<org.apache.dubbo.common.utils.Holder: void set(java.lang.Object)>(v);
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return v;
catch java.lang.Throwable from label to label with label;
}
public java.lang.Object getOrDefaultExtension(java.lang.String)
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.Object v;
java.lang.String v;
boolean v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.String;
v = specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: boolean containsExtension(java.lang.String)>(v);
if v == 0 goto label;
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Object getExtension(java.lang.String)>(v);
goto label;
label:
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Object getDefaultExtension()>();
label:
return v;
}
public java.lang.Object getDefaultExtension()
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.Object v;
java.lang.String v, v, v, v;
boolean v, v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Map getExtensionClasses()>();
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.String cachedDefaultName>;
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: boolean isBlank(java.lang.CharSequence)>(v);
if v != 0 goto label;
v = "true";
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.String cachedDefaultName>;
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
label:
return null;
label:
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.String cachedDefaultName>;
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Object getExtension(java.lang.String)>(v);
return v;
}
public boolean hasExtension(java.lang.String)
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.Class v;
java.lang.String v;
java.lang.IllegalArgumentException v;
boolean v, v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.String;
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: boolean isEmpty(java.lang.String)>(v);
if v == 0 goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("Extension name == null");
throw v;
label:
v = specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class getExtensionClass(java.lang.String)>(v);
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public java.util.Set getSupportedExtensions()
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.util.Map v;
java.util.Set v, v;
java.util.TreeSet v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v = specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Map getExtensionClasses()>();
v = new java.util.TreeSet;
v = interfaceinvoke v.<java.util.Map: java.util.Set keySet()>();
specialinvoke v.<java.util.TreeSet: void <init>(java.util.Collection)>(v);
v = staticinvoke <java.util.Collections: java.util.Set unmodifiableSet(java.util.Set)>(v);
return v;
}
public java.util.Set getSupportedExtensionInstances()
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.util.Iterator v;
java.util.Set v;
java.lang.Object v, v;
java.util.Comparator v;
java.util.LinkedList v;
java.util.LinkedHashSet v;
boolean v, v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v = new java.util.LinkedList;
specialinvoke v.<java.util.LinkedList: void <init>()>();
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Set getSupportedExtensions()>();
v = staticinvoke <org.apache.dubbo.common.utils.CollectionUtils: boolean isNotEmpty(java.util.Collection)>(v);
if v == 0 goto label;
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.common.extension.ExtensionLoader: java.lang.Object getExtension(java.lang.String)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
v = <org.apache.dubbo.common.lang.Prioritized: java.util.Comparator COMPARATOR>;
staticinvoke <java.util.Collections: void sort(java.util.List,java.util.Comparator)>(v, v);
v = new java.util.LinkedHashSet;
specialinvoke v.<java.util.LinkedHashSet: void <init>(java.util.Collection)>(v);
return v;
}
public java.lang.String getDefaultExtensionName()
{
java.lang.String v;
org.apache.dubbo.common.extension.ExtensionLoader v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Map getExtensionClasses()>();
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.String cachedDefaultName>;
return v;
}
public void addExtension(java.lang.String, java.lang.Class)
{
java.lang.IllegalStateException v, v, v, v, v;
org.apache.dubbo.common.extension.ExtensionLoader v;
java.util.concurrent.ConcurrentMap v;
java.lang.String v, v, v, v, v, v;
boolean v, v, v, v, v;
org.apache.dubbo.common.utils.Holder v, v;
java.lang.Class v, v, v, v, v, v, v;
java.lang.Object v, v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Class;
specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Map getExtensionClasses()>();
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: boolean isAssignableFrom(java.lang.Class)>(v);
if v != 0 goto label;
v = new java.lang.IllegalStateException;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Class,java.lang.Class)>(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[])>("Input type \u doesn\'t implement the Extension \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = virtualinvoke v.<java.lang.Class: boolean isInterface()>();
if v == 0 goto label;
v = new java.lang.IllegalStateException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Class)>(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[])>("Input type \u can\'t be interface!");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = virtualinvoke v.<java.lang.Class: boolean isAnnotationPresent(java.lang.Class)>(class "Lorg/apache/dubbo/common/extension/Adaptive;");
if v != 0 goto label;
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: boolean isBlank(java.lang.CharSequence)>(v);
if v == 0 goto label;
v = new java.lang.IllegalStateException;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Class)>(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[])>("Extension name is blank (Extension \u)!");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.utils.Holder cachedClasses>;
v = virtualinvoke v.<org.apache.dubbo.common.utils.Holder: java.lang.Object get()>();
v = interfaceinvoke v.<java.util.Map: boolean containsKey(java.lang.Object)>(v);
if v == 0 goto label;
v = new java.lang.IllegalStateException;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.Class)>(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[])>("Extension name \u already exists (Extension \u)!");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.concurrent.ConcurrentMap cachedNames>;
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.utils.Holder cachedClasses>;
v = virtualinvoke v.<org.apache.dubbo.common.utils.Holder: java.lang.Object get()>();
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
goto label;
label:
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class cachedAdaptiveClass>;
if v == null goto label;
v = new java.lang.IllegalStateException;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Class)>(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[])>("Adaptive Extension already exists (Extension \u)!");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class cachedAdaptiveClass> = v;
label:
return;
}
public void replaceExtension(java.lang.String, java.lang.Class)
{
java.lang.IllegalStateException v, v, v, v, v;
org.apache.dubbo.common.extension.ExtensionLoader v;
java.util.concurrent.ConcurrentMap v, v;
java.lang.String v, v, v, v, v, v;
boolean v, v, v, v, v;
org.apache.dubbo.common.utils.Holder v, v, v;
java.lang.Class v, v, v, v, v, v, v;
java.lang.Object v, v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Class;
specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Map getExtensionClasses()>();
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: boolean isAssignableFrom(java.lang.Class)>(v);
if v != 0 goto label;
v = new java.lang.IllegalStateException;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Class,java.lang.Class)>(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[])>("Input type \u doesn\'t implement Extension \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = virtualinvoke v.<java.lang.Class: boolean isInterface()>();
if v == 0 goto label;
v = new java.lang.IllegalStateException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Class)>(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[])>("Input type \u can\'t be interface!");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = virtualinvoke v.<java.lang.Class: boolean isAnnotationPresent(java.lang.Class)>(class "Lorg/apache/dubbo/common/extension/Adaptive;");
if v != 0 goto label;
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: boolean isBlank(java.lang.CharSequence)>(v);
if v == 0 goto label;
v = new java.lang.IllegalStateException;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Class)>(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[])>("Extension name is blank (Extension \u)!");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.utils.Holder cachedClasses>;
v = virtualinvoke v.<org.apache.dubbo.common.utils.Holder: java.lang.Object get()>();
v = interfaceinvoke v.<java.util.Map: boolean containsKey(java.lang.Object)>(v);
if v != 0 goto label;
v = new java.lang.IllegalStateException;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.Class)>(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[])>("Extension name \u doesn\'t exist (Extension \u)!");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.concurrent.ConcurrentMap cachedNames>;
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.utils.Holder cachedClasses>;
v = virtualinvoke v.<org.apache.dubbo.common.utils.Holder: java.lang.Object get()>();
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.concurrent.ConcurrentMap cachedInstances>;
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object remove(java.lang.Object)>(v);
goto label;
label:
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class cachedAdaptiveClass>;
if v != null goto label;
v = new java.lang.IllegalStateException;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Class)>(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[])>("Adaptive Extension doesn\'t exist (Extension \u)!");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class cachedAdaptiveClass> = v;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.utils.Holder cachedAdaptiveInstance>;
virtualinvoke v.<org.apache.dubbo.common.utils.Holder: void set(java.lang.Object)>(null);
label:
return;
}
public java.lang.Object getAdaptiveExtension()
{
java.lang.Throwable v, v, v, v, v;
java.lang.IllegalStateException v, v;
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.String v, v, v, v;
org.apache.dubbo.common.utils.Holder v, v, v, v;
java.lang.Object v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.utils.Holder cachedAdaptiveInstance>;
v = virtualinvoke v.<org.apache.dubbo.common.utils.Holder: java.lang.Object get()>();
if v != null goto label;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Throwable createAdaptiveInstanceError>;
if v == null goto label;
v = new java.lang.IllegalStateException;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Throwable createAdaptiveInstanceError>;
v = virtualinvoke v.<java.lang.Throwable: java.lang.String toString()>();
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[])>("Failed to create adaptive instance: \u0001");
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Throwable createAdaptiveInstanceError>;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
label:
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.utils.Holder cachedAdaptiveInstance>;
entermonitor v;
label:
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.utils.Holder cachedAdaptiveInstance>;
v = virtualinvoke v.<org.apache.dubbo.common.utils.Holder: java.lang.Object get()>();
if v != null goto label;
label:
v = specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Object createAdaptiveExtension()>();
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.utils.Holder cachedAdaptiveInstance>;
virtualinvoke v.<org.apache.dubbo.common.utils.Holder: void set(java.lang.Object)>(v);
label:
goto label;
label:
v := @caughtexception;
v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Throwable createAdaptiveInstanceError> = v;
v = new java.lang.IllegalStateException;
v = virtualinvoke v.<java.lang.Throwable: java.lang.String toString()>();
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[])>("Failed to create adaptive instance: \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return v;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private java.lang.IllegalStateException findException(java.lang.String)
{
java.lang.IllegalStateException v;
org.apache.dubbo.common.extension.ExtensionLoader v;
java.util.Map v;
int v, v;
java.lang.String v, v, v, v, v, v, v;
boolean v, v;
java.util.Iterator v;
java.util.Set v;
java.lang.Class v;
java.lang.Object v, v, v, v;
java.lang.StringBuilder v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.String;
v = new java.lang.StringBuilder;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: 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[])>("No such extension \u by name \u0001");
specialinvoke v.<java.lang.StringBuilder: void <init>(java.lang.String)>(v);
v = 1;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Map exceptions>;
v = interfaceinvoke v.<java.util.Map: java.util.Set entrySet()>();
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 = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getKey()>();
v = virtualinvoke v.<java.lang.String: java.lang.String toLowerCase()>();
v = virtualinvoke v.<java.lang.String: java.lang.String toLowerCase()>();
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>(v);
if v == 0 goto label;
if v != 1 goto label;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(", possible causes: ");
label:
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("\r\n(");
v = v;
v = v + 1;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(int)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(") ");
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getKey()>();
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\n");
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: java.lang.String toString(java.lang.Throwable)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
goto label;
label:
if v != 1 goto label;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(", no related exception was found, please check whether related SPI module is missing.");
label:
v = new java.lang.IllegalStateException;
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
return v;
}
private java.lang.Object createExtension(java.lang.String, boolean)
{
java.lang.IllegalStateException v, v;
java.util.Map v;
boolean v, v, v, v, v;
java.util.Set v, v;
java.lang.'annotation'.Annotation v;
java.lang.Throwable v;
java.lang.Object[] v, v;
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.String[] v, v;
java.lang.reflect.Constructor v, v;
java.util.ArrayList v;
java.util.concurrent.ConcurrentMap v, v, v;
java.lang.String v, v, v;
java.util.Iterator v;
java.lang.Class[] v, v;
java.lang.Class v, v;
java.lang.Object v, v, v, v, v;
java.util.Comparator v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.String;
v := @parameter: boolean;
v = specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Map getExtensionClasses()>();
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
if v != null goto label;
v = specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.IllegalStateException findException(java.lang.String)>(v);
throw v;
label:
v = <org.apache.dubbo.common.extension.ExtensionLoader: java.util.concurrent.ConcurrentMap EXTENSION_INSTANCES>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object get(java.lang.Object)>(v);
if v != null goto label;
v = <org.apache.dubbo.common.extension.ExtensionLoader: java.util.concurrent.ConcurrentMap EXTENSION_INSTANCES>;
v = newarray (java.lang.Class)[0];
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Constructor getDeclaredConstructor(java.lang.Class[])>(v);
v = newarray (java.lang.Object)[0];
v = virtualinvoke v.<java.lang.reflect.Constructor: java.lang.Object newInstance(java.lang.Object[])>(v);
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object putIfAbsent(java.lang.Object,java.lang.Object)>(v, v);
v = <org.apache.dubbo.common.extension.ExtensionLoader: java.util.concurrent.ConcurrentMap EXTENSION_INSTANCES>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object get(java.lang.Object)>(v);
label:
specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Object injectExtension(java.lang.Object)>(v);
if v == 0 goto label;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Set cachedWrapperClasses>;
if v == null goto label;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Set cachedWrapperClasses>;
interfaceinvoke v.<java.util.List: boolean addAll(java.util.Collection)>(v);
v = <org.apache.dubbo.common.extension.support.WrapperComparator: java.util.Comparator COMPARATOR>;
interfaceinvoke v.<java.util.List: void sort(java.util.Comparator)>(v);
staticinvoke <java.util.Collections: void reverse(java.util.List)>(v);
label:
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: 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.Class: java.lang.'annotation'.Annotation getAnnotation(java.lang.Class)>(class "Lorg/apache/dubbo/common/extension/Wrapper;");
if v == null goto label;
v = interfaceinvoke v.<org.apache.dubbo.common.extension.Wrapper: java.lang.String[] matches()>();
v = staticinvoke <org.apache.dubbo.common.utils.ArrayUtils: boolean contains(java.lang.String[],java.lang.String)>(v, v);
if v == 0 goto label;
v = interfaceinvoke v.<org.apache.dubbo.common.extension.Wrapper: java.lang.String[] mismatches()>();
v = staticinvoke <org.apache.dubbo.common.utils.ArrayUtils: boolean contains(java.lang.String[],java.lang.String)>(v, v);
if v != 0 goto label;
label:
v = newarray (java.lang.Class)[1];
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v[0] = v;
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Constructor getConstructor(java.lang.Class[])>(v);
v = newarray (java.lang.Object)[1];
v[0] = v;
v = virtualinvoke v.<java.lang.reflect.Constructor: java.lang.Object newInstance(java.lang.Object[])>(v);
v = specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Object injectExtension(java.lang.Object)>(v);
goto label;
label:
specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: void initExtension(java.lang.Object)>(v);
label:
return v;
label:
v := @caughtexception;
v = new java.lang.IllegalStateException;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Throwable: java.lang.String getMessage()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.Class,java.lang.String)>(v, 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[])>("Extension instance (name: \u, class: \u) couldn\'t be instantiated: \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
catch java.lang.Throwable from label to label with label;
}
private boolean containsExtension(java.lang.String)
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.util.Map v;
java.lang.String v;
boolean v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.String;
v = specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Map getExtensionClasses()>();
v = interfaceinvoke v.<java.util.Map: boolean containsKey(java.lang.Object)>(v);
return v;
}
private java.lang.Object injectExtension(java.lang.Object)
{
java.lang.Object[] v;
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.reflect.Method[] v;
int v, v;
java.lang.String v, v, v, v, v, v;
java.lang.reflect.Method v;
boolean v, v;
org.apache.dubbo.common.extension.ExtensionFactory v, v;
org.apache.dubbo.common.logger.Logger v, v;
java.lang.Class[] v;
java.lang.Exception v, v;
java.lang.'annotation'.Annotation v;
java.lang.Class v, v, v;
java.lang.Object v, v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.Object;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.extension.ExtensionFactory objectFactory>;
if v != null goto label;
return v;
label:
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
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.ExtensionLoader: boolean isSetter(java.lang.reflect.Method)>(v);
if v == 0 goto label;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.'annotation'.Annotation getAnnotation(java.lang.Class)>(class "Lorg/apache/dubbo/common/extension/DisableInject;");
if v != null goto label;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class[] getParameterTypes()>();
v = v[0];
v = staticinvoke <org.apache.dubbo.common.utils.ReflectUtils: boolean isPrimitives(java.lang.Class)>(v);
if v != 0 goto label;
label:
v = specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.String getSetterProperty(java.lang.reflect.Method)>(v);
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.extension.ExtensionFactory objectFactory>;
v = interfaceinvoke v.<org.apache.dubbo.common.extension.ExtensionFactory: java.lang.Object getExtension(java.lang.Class,java.lang.String)>(v, v);
if v == null goto label;
v = newarray (java.lang.Object)[1];
v[0] = v;
virtualinvoke v.<java.lang.reflect.Method: java.lang.Object invoke(java.lang.Object,java.lang.Object[])>(v, v);
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.logger.Logger logger>;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.String getName()>();
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.Exception: java.lang.String getMessage()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String,java.lang.String)>(v, 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 inject via method \u of interface \u0001: \u0001");
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void error(java.lang.String,java.lang.Throwable)>(v, v);
label:
v = v + 1;
goto label;
label:
v := @caughtexception;
v = <org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.logger.Logger logger>;
v = virtualinvoke v.<java.lang.Exception: java.lang.String getMessage()>();
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void error(java.lang.String,java.lang.Throwable)>(v, v);
label:
return v;
catch java.lang.Exception from label to label with label;
catch java.lang.Exception from label to label with label;
}
private void initExtension(java.lang.Object)
{
java.lang.Object v;
org.apache.dubbo.common.extension.ExtensionLoader v;
boolean v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.Object;
v = v instanceof org.apache.dubbo.common.context.Lifecycle;
if v == 0 goto label;
interfaceinvoke v.<org.apache.dubbo.common.context.Lifecycle: void initialize()>();
label:
return;
}
private java.lang.String getSetterProperty(java.lang.reflect.Method)
{
org.apache.dubbo.common.extension.ExtensionLoader v;
int v;
java.lang.String v, v, v, v, v, v, v;
java.lang.reflect.Method v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.reflect.Method;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 3 goto label;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(3, 4);
v = virtualinvoke v.<java.lang.String: java.lang.String toLowerCase()>();
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int)>(4);
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");
goto label;
label:
v = "";
label:
return v;
}
private boolean isSetter(java.lang.reflect.Method)
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.Class[] v;
int v, v;
java.lang.String v;
java.lang.reflect.Method v;
boolean v, v, v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.reflect.Method;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("set");
if v == 0 goto label;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class[] getParameterTypes()>();
v = lengthof v;
if v != 1 goto 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 = 1;
goto label;
label:
v = 0;
label:
return v;
}
private java.lang.Class getExtensionClass(java.lang.String)
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.util.Map v;
java.lang.Class v;
java.lang.Object v;
java.lang.String v;
java.lang.IllegalArgumentException v, v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.String;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
if v != null goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("Extension type == null");
throw v;
label:
if v != null goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("Extension name == null");
throw v;
label:
v = specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Map getExtensionClasses()>();
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
return v;
}
private java.util.Map getExtensionClasses()
{
java.lang.Throwable v;
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.Object v;
org.apache.dubbo.common.utils.Holder v, v, v, v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.utils.Holder cachedClasses>;
v = virtualinvoke v.<org.apache.dubbo.common.utils.Holder: java.lang.Object get()>();
if v != null goto label;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.utils.Holder cachedClasses>;
entermonitor v;
label:
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.utils.Holder cachedClasses>;
virtualinvoke v.<org.apache.dubbo.common.utils.Holder: java.lang.Object get()>();
v = specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Map loadExtensionClasses()>();
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.utils.Holder cachedClasses>;
virtualinvoke v.<org.apache.dubbo.common.utils.Holder: void set(java.lang.Object)>(v);
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return v;
catch java.lang.Throwable from label to label with label;
}
private java.util.Map loadExtensionClasses()
{
org.apache.dubbo.common.extension.ExtensionLoader v;
org.apache.dubbo.common.extension.LoadingStrategy[] v;
java.lang.String[] v, v;
java.util.HashMap v;
int v, v;
java.lang.String v, v, v, v, v;
org.apache.dubbo.common.extension.LoadingStrategy v;
boolean v, v, v, v;
java.lang.Class v, v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: void cacheDefaultExtensionName()>();
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: void <init>()>();
v = <org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.extension.LoadingStrategy[] strategies>;
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = interfaceinvoke v.<org.apache.dubbo.common.extension.LoadingStrategy: java.lang.String directory()>();
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = interfaceinvoke v.<org.apache.dubbo.common.extension.LoadingStrategy: boolean preferExtensionClassLoader()>();
v = interfaceinvoke v.<org.apache.dubbo.common.extension.LoadingStrategy: boolean overridden()>();
v = interfaceinvoke v.<org.apache.dubbo.common.extension.LoadingStrategy: java.lang.String[] excludedPackages()>();
specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: void loadDirectory(java.util.Map,java.lang.String,java.lang.String,boolean,boolean,java.lang.String[])>(v, v, v, v, v, v);
v = interfaceinvoke v.<org.apache.dubbo.common.extension.LoadingStrategy: java.lang.String directory()>();
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: java.lang.String replace(java.lang.CharSequence,java.lang.CharSequence)>("org.apache", "com.alibaba");
v = interfaceinvoke v.<org.apache.dubbo.common.extension.LoadingStrategy: boolean preferExtensionClassLoader()>();
v = interfaceinvoke v.<org.apache.dubbo.common.extension.LoadingStrategy: boolean overridden()>();
v = interfaceinvoke v.<org.apache.dubbo.common.extension.LoadingStrategy: java.lang.String[] excludedPackages()>();
specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: void loadDirectory(java.util.Map,java.lang.String,java.lang.String,boolean,boolean,java.lang.String[])>(v, v, v, v, v, v);
v = v + 1;
goto label;
label:
return v;
}
private void cacheDefaultExtensionName()
{
java.lang.IllegalStateException v;
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.String[] v;
int v, v, v;
java.lang.String v, v, v, v, v, v;
java.lang.'annotation'.Annotation v;
java.lang.Class v, v;
java.util.regex.Pattern v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: java.lang.'annotation'.Annotation getAnnotation(java.lang.Class)>(class "Lorg/apache/dubbo/common/extension/SPI;");
if v != null goto label;
return;
label:
v = interfaceinvoke v.<org.apache.dubbo.common.extension.SPI: java.lang.String value()>();
v = virtualinvoke v.<java.lang.String: java.lang.String trim()>();
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 0 goto label;
v = <org.apache.dubbo.common.extension.ExtensionLoader: java.util.regex.Pattern NAME_SEPARATOR>;
v = virtualinvoke v.<java.util.regex.Pattern: java.lang.String[] split(java.lang.CharSequence)>(v);
v = lengthof v;
if v <= 1 goto label;
v = new java.lang.IllegalStateException;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = staticinvoke <java.util.Arrays: java.lang.String toString(java.lang.Object[])>(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[])>("More than 1 default extension name on extension \u0001: \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = lengthof v;
if v != 1 goto label;
v = v[0];
v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.String cachedDefaultName> = v;
label:
return;
}
private void loadDirectory(java.util.Map, java.lang.String, java.lang.String)
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.util.Map v;
java.lang.String[] v;
java.lang.String v, v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.util.Map;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v = newarray (java.lang.String)[0];
specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: void loadDirectory(java.util.Map,java.lang.String,java.lang.String,boolean,boolean,java.lang.String[])>(v, v, v, 0, 0, v);
return;
}
private transient void loadDirectory(java.util.Map, java.lang.String, java.lang.String, boolean, boolean, java.lang.String[])
{
java.lang.Throwable v;
org.apache.dubbo.common.extension.ExtensionLoader v;
java.util.Enumeration v;
java.lang.String[] v;
java.util.Map v;
java.lang.String v, v, v, v;
boolean v, v, v, v;
org.apache.dubbo.common.logger.Logger v;
java.lang.Class v;
java.lang.Object v;
java.lang.ClassLoader v, v, v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.util.Map;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: boolean;
v := @parameter: boolean;
v := @parameter: java.lang.String[];
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");
label:
v = null;
v = staticinvoke <org.apache.dubbo.common.extension.ExtensionLoader: java.lang.ClassLoader findClassLoader()>();
if v == 0 goto label;
v = class "Lorg/apache/dubbo/common/extension/ExtensionLoader;";
v = virtualinvoke v.<java.lang.Class: java.lang.ClassLoader getClassLoader()>();
v = staticinvoke <java.lang.ClassLoader: java.lang.ClassLoader getSystemClassLoader()>();
if v == v goto label;
v = virtualinvoke v.<java.lang.ClassLoader: java.util.Enumeration getResources(java.lang.String)>(v);
label:
if v == null goto label;
v = interfaceinvoke v.<java.util.Enumeration: boolean hasMoreElements()>();
if v != 0 goto label;
label:
if v == null goto label;
v = virtualinvoke v.<java.lang.ClassLoader: java.util.Enumeration getResources(java.lang.String)>(v);
goto label;
label:
v = staticinvoke <java.lang.ClassLoader: java.util.Enumeration getSystemResources(java.lang.String)>(v);
label:
if v == null goto label;
label:
v = interfaceinvoke v.<java.util.Enumeration: boolean hasMoreElements()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Enumeration: java.lang.Object nextElement()>();
specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: void loadResource(java.util.Map,java.lang.ClassLoader,java.net.URL,boolean,java.lang.String[])>(v, v, v, v, v);
goto label;
label:
v := @caughtexception;
v = <org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.logger.Logger logger>;
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[])>("Exception occurred when loading extension class (interface: \u, description file: \u).");
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void error(java.lang.String,java.lang.Throwable)>(v, v);
label:
return;
catch java.lang.Throwable from label to label with label;
}
private transient void loadResource(java.util.Map, java.lang.ClassLoader, java.net.URL, boolean, java.lang.String[])
{
java.lang.IllegalStateException v;
java.net.URL v;
java.util.Map v, v;
boolean v, v, v;
java.lang.ClassLoader v;
java.lang.Throwable v, v, v;
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.String[] v;
java.nio.charset.Charset v;
int v, v, v, v;
java.lang.String v, v, v, v, v, v, v, v, v, v;
org.apache.dubbo.common.logger.Logger v;
java.io.InputStreamReader v;
java.lang.Class v, v, v;
java.io.BufferedReader v;
java.io.InputStream v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.util.Map;
v := @parameter: java.lang.ClassLoader;
v := @parameter: java.net.URL;
v := @parameter: boolean;
v := @parameter: java.lang.String[];
label:
v = new java.io.BufferedReader;
v = new java.io.InputStreamReader;
v = virtualinvoke v.<java.net.URL: java.io.InputStream openStream()>();
v = <java.nio.charset.StandardCharsets: java.nio.charset.Charset UTF_8>;
specialinvoke v.<java.io.InputStreamReader: void <init>(java.io.InputStream,java.nio.charset.Charset)>(v, v);
specialinvoke v.<java.io.BufferedReader: void <init>(java.io.Reader)>(v);
label:
v = virtualinvoke v.<java.io.BufferedReader: java.lang.String readLine()>();
v = v;
if v == null goto label;
v = virtualinvoke v.<java.lang.String: int indexOf(int)>(35);
if v < 0 goto label;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(0, v);
label:
v = virtualinvoke v.<java.lang.String: java.lang.String trim()>();
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 0 goto label;
label:
v = null;
v = virtualinvoke v.<java.lang.String: int indexOf(int)>(61);
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()>();
goto label;
label:
v = v;
label:
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: boolean isNotEmpty(java.lang.String)>(v);
if v == 0 goto label;
v = specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: boolean isExcluded(java.lang.String,java.lang.String[])>(v, v);
if v != 0 goto label;
v = staticinvoke <java.lang.Class: java.lang.Class forName(java.lang.String,boolean,java.lang.ClassLoader)>(v, 1, v);
specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: void loadClass(java.util.Map,java.net.URL,java.lang.Class,java.lang.String,boolean)>(v, v, v, v, v);
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.IllegalStateException;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Throwable: java.lang.String getMessage()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Class,java.lang.String,java.net.URL,java.lang.String)>(v, v, 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 load extension class (interface: \u, class line: \u) in \u, cause: \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Map exceptions>;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
goto label;
label:
virtualinvoke v.<java.io.BufferedReader: void close()>();
goto label;
label:
v := @caughtexception;
throw v;
label:
v := @caughtexception;
v = <org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.logger.Logger logger>;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Class,java.net.URL,java.net.URL)>(v, 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[])>("Exception occurred when loading extension class (interface: \u, class file: \u) in \u0001");
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void error(java.lang.String,java.lang.Throwable)>(v, v);
label:
return;
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 transient boolean isExcluded(java.lang.String, java.lang.String[])
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.String[] v;
int v, v;
java.lang.String v, v, v;
boolean v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String[];
if v == null goto label;
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
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 = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>(v);
if v == 0 goto label;
return 1;
label:
v = v + 1;
goto label;
label:
return 0;
}
private void loadClass(java.util.Map, java.net.URL, java.lang.Class, java.lang.String, boolean) throws java.lang.NoSuchMethodException
{
java.lang.IllegalStateException v, v;
org.apache.dubbo.common.extension.ExtensionLoader v;
java.net.URL v;
java.lang.String[] v;
java.util.Map v;
int v, v, v;
java.lang.String v, v, v, v, v, v, v, v;
boolean v, v, v, v, v, v;
java.lang.Class[] v;
java.lang.Class v, v, v;
java.util.regex.Pattern v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.util.Map;
v := @parameter: java.net.URL;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.String;
v := @parameter: boolean;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: boolean isAssignableFrom(java.lang.Class)>(v);
if v != 0 goto label;
v = new java.lang.IllegalStateException;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Class,java.lang.String,java.lang.String)>(v, 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[])>("Error occurred when loading extension class (interface: \u, class line: \u), class \u is not subtype of interface.");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = virtualinvoke v.<java.lang.Class: boolean isAnnotationPresent(java.lang.Class)>(class "Lorg/apache/dubbo/common/extension/Adaptive;");
if v == 0 goto label;
specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: void cacheAdaptiveClass(java.lang.Class,boolean)>(v, v);
goto label;
label:
v = specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: boolean isWrapperClass(java.lang.Class)>(v);
if v == 0 goto label;
specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: void cacheWrapperClass(java.lang.Class)>(v);
goto label;
label:
v = newarray (java.lang.Class)[0];
virtualinvoke v.<java.lang.Class: java.lang.reflect.Constructor getConstructor(java.lang.Class[])>(v);
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: boolean isEmpty(java.lang.String)>(v);
if v == 0 goto label;
v = specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.String findAnnotationName(java.lang.Class)>(v);
v = virtualinvoke v.<java.lang.String: int length()>();
if v != 0 goto label;
v = new java.lang.IllegalStateException;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.net.URL)>(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[])>("No such extension name for the class \u in the config \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = <org.apache.dubbo.common.extension.ExtensionLoader: java.util.regex.Pattern NAME_SEPARATOR>;
v = virtualinvoke v.<java.util.regex.Pattern: java.lang.String[] split(java.lang.CharSequence)>(v);
v = staticinvoke <org.apache.dubbo.common.utils.ArrayUtils: boolean isNotEmpty(java.lang.Object[])>(v);
if v == 0 goto label;
v = v[0];
specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: void cacheActivateClass(java.lang.Class,java.lang.String)>(v, v);
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: void cacheName(java.lang.Class,java.lang.String)>(v, v);
specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: void saveInExtensionClass(java.util.Map,java.lang.Class,java.lang.String,boolean)>(v, v, v, v);
v = v + 1;
goto label;
label:
return;
}
private void cacheName(java.lang.Class, java.lang.String)
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.Class v;
java.lang.String v;
boolean v;
java.util.concurrent.ConcurrentMap v, v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.String;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.concurrent.ConcurrentMap cachedNames>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: boolean containsKey(java.lang.Object)>(v);
if v != 0 goto label;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.concurrent.ConcurrentMap cachedNames>;
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
return;
}
private void saveInExtensionClass(java.util.Map, java.lang.Class, java.lang.String, boolean)
{
java.lang.IllegalStateException v;
org.apache.dubbo.common.extension.ExtensionLoader v;
org.apache.dubbo.common.logger.Logger v;
java.util.Map v;
java.lang.Class v, v;
java.lang.Object v;
java.lang.String v, v, v, v, v;
boolean v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.util.Map;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.String;
v := @parameter: boolean;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
if v == 0 goto label;
label:
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
goto label;
label:
if v == v goto label;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String,java.lang.String,java.lang.String)>(v, v, 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[])>("Duplicate extension \u name \u on \u and \u0001");
v = <org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.logger.Logger logger>;
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void error(java.lang.String)>(v);
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
return;
}
private void cacheActivateClass(java.lang.Class, java.lang.String)
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.util.Map v, v;
java.lang.'annotation'.Annotation v, v;
java.lang.Class v;
java.lang.String v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.Class: java.lang.'annotation'.Annotation getAnnotation(java.lang.Class)>(class "Lorg/apache/dubbo/common/extension/Activate;");
if v == null goto label;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Map cachedActivates>;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
goto label;
label:
v = virtualinvoke v.<java.lang.Class: java.lang.'annotation'.Annotation getAnnotation(java.lang.Class)>(class "Lcom/alibaba/dubbo/common/extension/Activate;");
if v == null goto label;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Map cachedActivates>;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
return;
}
private void cacheAdaptiveClass(java.lang.Class, boolean)
{
java.lang.IllegalStateException v;
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.Class v, v, v, v;
java.lang.String v, v, v;
boolean v, v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.Class;
v := @parameter: boolean;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class cachedAdaptiveClass>;
if v == null goto label;
if v == 0 goto label;
label:
v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class cachedAdaptiveClass> = v;
goto label;
label:
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class cachedAdaptiveClass>;
v = virtualinvoke v.<java.lang.Object: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = new java.lang.IllegalStateException;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class cachedAdaptiveClass>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.Class: 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[])>("More than 1 adaptive class found: \u, \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
return;
}
private void cacheWrapperClass(java.lang.Class)
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.util.Set v, v;
java.lang.Class v;
org.apache.dubbo.common.utils.ConcurrentHashSet v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.Class;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Set cachedWrapperClasses>;
if v != null goto label;
v = new org.apache.dubbo.common.utils.ConcurrentHashSet;
specialinvoke v.<org.apache.dubbo.common.utils.ConcurrentHashSet: void <init>()>();
v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Set cachedWrapperClasses> = v;
label:
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Set cachedWrapperClasses>;
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
return;
}
private boolean isWrapperClass(java.lang.Class)
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.NoSuchMethodException v;
java.lang.Class[] v;
java.lang.Class v, v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.Class;
label:
v = newarray (java.lang.Class)[1];
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v[0] = v;
virtualinvoke v.<java.lang.Class: java.lang.reflect.Constructor getConstructor(java.lang.Class[])>(v);
label:
return 1;
label:
v := @caughtexception;
return 0;
catch java.lang.NoSuchMethodException from label to label with label;
}
private java.lang.String findAnnotationName(java.lang.Class)
{
org.apache.dubbo.common.extension.ExtensionLoader v;
int v, v, v;
java.lang.'annotation'.Annotation v;
java.lang.Class v, v, v;
java.lang.String v, v, v, v, v;
boolean v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v := @parameter: java.lang.Class;
v = virtualinvoke v.<java.lang.Class: java.lang.'annotation'.Annotation getAnnotation(java.lang.Class)>(class "Lorg/apache/dubbo/common/Extension;");
if v == null goto label;
v = interfaceinvoke v.<org.apache.dubbo.common.Extension: java.lang.String value()>();
return v;
label:
v = virtualinvoke v.<java.lang.Class: java.lang.String getSimpleName()>();
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getSimpleName()>();
v = virtualinvoke v.<java.lang.String: boolean endsWith(java.lang.String)>(v);
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getSimpleName()>();
v = virtualinvoke v.<java.lang.String: int length()>();
v = v - v;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(0, v);
label:
v = virtualinvoke v.<java.lang.String: java.lang.String toLowerCase()>();
return v;
}
private java.lang.Object createAdaptiveExtension()
{
java.lang.IllegalStateException v;
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.Exception v;
java.lang.Class v, v;
java.lang.Object v, v;
java.lang.String v, v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
label:
v = specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class getAdaptiveExtensionClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.Object newInstance()>();
v = specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Object injectExtension(java.lang.Object)>(v);
label:
return v;
label:
v := @caughtexception;
v = new java.lang.IllegalStateException;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Exception: java.lang.String getMessage()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Class,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[])>("Can\'t create adaptive extension \u, cause: \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
catch java.lang.Exception from label to label with label;
}
private java.lang.Class getAdaptiveExtensionClass()
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.Class v, v, v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Map getExtensionClasses()>();
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class cachedAdaptiveClass>;
if v == null goto label;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class cachedAdaptiveClass>;
return v;
label:
v = specialinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class createAdaptiveExtensionClass()>();
v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class cachedAdaptiveClass> = v;
return v;
}
private java.lang.Class createAdaptiveExtensionClass()
{
org.apache.dubbo.common.extension.ExtensionLoader v, v;
org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator v;
java.lang.Class v, v;
java.lang.Object v;
java.lang.ClassLoader v;
java.lang.String v, v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v = new org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.String cachedDefaultName>;
specialinvoke v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: void <init>(java.lang.Class,java.lang.String)>(v, v);
v = virtualinvoke v.<org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator: java.lang.String generate()>();
v = staticinvoke <org.apache.dubbo.common.extension.ExtensionLoader: java.lang.ClassLoader findClassLoader()>();
v = staticinvoke <org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.extension.ExtensionLoader getExtensionLoader(java.lang.Class)>(class "Lorg/apache/dubbo/common/compiler/Compiler;");
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Object getAdaptiveExtension()>();
v = interfaceinvoke v.<org.apache.dubbo.common.compiler.Compiler: java.lang.Class compile(java.lang.String,java.lang.ClassLoader)>(v, v);
return v;
}
public java.lang.String toString()
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.Class v, v;
java.lang.String v, v, v;
v := @this: org.apache.dubbo.common.extension.ExtensionLoader;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Class type>;
v = virtualinvoke v.<java.lang.Class: 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[])>("\u[\u]");
return v;
}
static void <clinit>()
{
org.apache.dubbo.common.logger.Logger v;
java.util.concurrent.ConcurrentHashMap v, v;
org.apache.dubbo.common.extension.LoadingStrategy[] v;
java.util.regex.Pattern 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/ExtensionLoader;");
<org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.logger.Logger logger> = v;
v = staticinvoke <java.util.regex.Pattern: java.util.regex.Pattern compile(java.lang.String)>("\\s*[,]+\\s*");
<org.apache.dubbo.common.extension.ExtensionLoader: java.util.regex.Pattern NAME_SEPARATOR> = v;
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>(int)>(64);
<org.apache.dubbo.common.extension.ExtensionLoader: java.util.concurrent.ConcurrentMap EXTENSION_LOADERS> = v;
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>(int)>(64);
<org.apache.dubbo.common.extension.ExtensionLoader: java.util.concurrent.ConcurrentMap EXTENSION_INSTANCES> = v;
v = staticinvoke <org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.extension.LoadingStrategy[] loadLoadingStrategies()>();
<org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.extension.LoadingStrategy[] strategies> = v;
return;
}
}