public class org.apache.dubbo.common.extension.factory.AdaptiveExtensionFactory extends java.lang.Object implements org.apache.dubbo.common.extension.ExtensionFactory
{
private final java.util.List factories;
public void <init>()
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.util.Iterator v;
java.util.Set v;
java.util.ArrayList v;
java.util.List v;
java.lang.Object v, v;
org.apache.dubbo.common.extension.factory.AdaptiveExtensionFactory v;
boolean v;
v := @this: org.apache.dubbo.common.extension.factory.AdaptiveExtensionFactory;
specialinvoke v.<java.lang.Object: void <init>()>();
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 = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.Set getSupportedExtensions()>();
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 = staticinvoke <java.util.Collections: java.util.List unmodifiableList(java.util.List)>(v);
v.<org.apache.dubbo.common.extension.factory.AdaptiveExtensionFactory: java.util.List factories> = v;
return;
}
public java.lang.Object getExtension(java.lang.Class, java.lang.String)
{
java.util.Iterator v;
java.util.List v;
java.lang.Class v;
java.lang.Object v, v;
java.lang.String v;
org.apache.dubbo.common.extension.factory.AdaptiveExtensionFactory v;
boolean v;
v := @this: org.apache.dubbo.common.extension.factory.AdaptiveExtensionFactory;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.String;
v = v.<org.apache.dubbo.common.extension.factory.AdaptiveExtensionFactory: java.util.List factories>;
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 = 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;
return v;
label:
return null;
}
}