public class org.apache.dubbo.config.ServiceConfig extends org.apache.dubbo.config.ServiceConfigBase
{
public static final org.apache.dubbo.common.logger.Logger logger;
private static final java.util.Map RANDOM_PORT_MAP;
private static final java.util.concurrent.ScheduledExecutorService DELAY_EXPORT_EXECUTOR;
private static final org.apache.dubbo.rpc.Protocol PROTOCOL;
private static final org.apache.dubbo.rpc.ProxyFactory PROXY_FACTORY;
private transient volatile boolean exported;
private transient volatile boolean unexported;
private org.apache.dubbo.config.bootstrap.DubboBootstrap bootstrap;
private final java.util.List exporters;
public void <init>()
{
org.apache.dubbo.config.ServiceConfig v;
java.util.ArrayList v;
v := @this: org.apache.dubbo.config.ServiceConfig;
specialinvoke v.<org.apache.dubbo.config.ServiceConfigBase: void <init>()>();
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v.<org.apache.dubbo.config.ServiceConfig: java.util.List exporters> = v;
return;
}
public void <init>(org.apache.dubbo.config.'annotation'.Service)
{
org.apache.dubbo.config.'annotation'.Service v;
org.apache.dubbo.config.ServiceConfig v;
java.util.ArrayList v;
v := @this: org.apache.dubbo.config.ServiceConfig;
v := @parameter: org.apache.dubbo.config.'annotation'.Service;
specialinvoke v.<org.apache.dubbo.config.ServiceConfigBase: void <init>(org.apache.dubbo.config.'annotation'.Service)>(v);
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v.<org.apache.dubbo.config.ServiceConfig: java.util.List exporters> = v;
return;
}
public boolean isExported()
{
org.apache.dubbo.config.ServiceConfig v;
boolean v;
v := @this: org.apache.dubbo.config.ServiceConfig;
v = v.<org.apache.dubbo.config.ServiceConfig: boolean exported>;
return v;
}
public boolean isUnexported()
{
org.apache.dubbo.config.ServiceConfig v;
boolean v;
v := @this: org.apache.dubbo.config.ServiceConfig;
v = v.<org.apache.dubbo.config.ServiceConfig: boolean unexported>;
return v;
}
public void unexport()
{
java.lang.Throwable v;
java.util.Iterator v;
org.apache.dubbo.common.logger.Logger v;
org.apache.dubbo.config.ServiceConfig v;
java.util.List v, v, v;
org.apache.dubbo.config.event.ServiceConfigUnexportedEvent v;
java.lang.Object v;
java.lang.String v;
boolean v, v, v, v;
v := @this: org.apache.dubbo.config.ServiceConfig;
v = v.<org.apache.dubbo.config.ServiceConfig: boolean exported>;
if v != 0 goto label;
return;
label:
v = v.<org.apache.dubbo.config.ServiceConfig: boolean unexported>;
if v == 0 goto label;
return;
label:
v = v.<org.apache.dubbo.config.ServiceConfig: java.util.List exporters>;
v = interfaceinvoke v.<java.util.List: boolean isEmpty()>();
if v != 0 goto label;
v = v.<org.apache.dubbo.config.ServiceConfig: java.util.List exporters>;
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()>();
label:
interfaceinvoke v.<org.apache.dubbo.rpc.Exporter: void unexport()>();
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.common.logger.Logger logger>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.dubbo.rpc.Exporter)>(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[])>("Unexpected error occurred when unexport \u0001");
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void warn(java.lang.String,java.lang.Throwable)>(v, v);
goto label;
label:
v = v.<org.apache.dubbo.config.ServiceConfig: java.util.List exporters>;
interfaceinvoke v.<java.util.List: void clear()>();
label:
v.<org.apache.dubbo.config.ServiceConfig: boolean unexported> = 1;
v = new org.apache.dubbo.config.event.ServiceConfigUnexportedEvent;
specialinvoke v.<org.apache.dubbo.config.event.ServiceConfigUnexportedEvent: void <init>(org.apache.dubbo.config.ServiceConfig)>(v);
specialinvoke v.<org.apache.dubbo.config.ServiceConfig: void dispatch(org.apache.dubbo.event.Event)>(v);
return;
catch java.lang.Throwable from label to label with label;
}
public synchronized void export()
{
org.apache.dubbo.config.ServiceConfig v;
java.lang.Integer v;
java.lang.Runnable v;
int v;
java.util.concurrent.ScheduledExecutorService v;
org.apache.dubbo.rpc.model.ServiceMetadata v, v, v;
boolean v, v;
org.apache.dubbo.config.bootstrap.DubboBootstrap v, v, v;
java.util.concurrent.TimeUnit v;
org.apache.dubbo.config.ProviderConfig v;
java.lang.Class v;
java.lang.Object v;
v := @this: org.apache.dubbo.config.ServiceConfig;
v = v.<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.config.bootstrap.DubboBootstrap bootstrap>;
if v != null goto label;
v = staticinvoke <org.apache.dubbo.config.bootstrap.DubboBootstrap: org.apache.dubbo.config.bootstrap.DubboBootstrap getInstance()>();
v.<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.config.bootstrap.DubboBootstrap bootstrap> = v;
v = v.<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.config.bootstrap.DubboBootstrap bootstrap>;
virtualinvoke v.<org.apache.dubbo.config.bootstrap.DubboBootstrap: void initialize()>();
label:
specialinvoke v.<org.apache.dubbo.config.ServiceConfig: void checkAndUpdateSubConfigs()>();
v = v.<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.config.ProviderConfig provider>;
virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: void initServiceMetadata(org.apache.dubbo.config.AbstractInterfaceConfig)>(v);
v = v.<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.rpc.model.ServiceMetadata serviceMetadata>;
v = virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: java.lang.Class getInterfaceClass()>();
virtualinvoke v.<org.apache.dubbo.rpc.model.ServiceMetadata: void setServiceType(java.lang.Class)>(v);
v = v.<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.rpc.model.ServiceMetadata serviceMetadata>;
v = virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: java.lang.Object getRef()>();
virtualinvoke v.<org.apache.dubbo.rpc.model.ServiceMetadata: void setTarget(java.lang.Object)>(v);
v = v.<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.rpc.model.ServiceMetadata serviceMetadata>;
virtualinvoke v.<org.apache.dubbo.rpc.model.ServiceMetadata: void generateServiceKey()>();
v = virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: boolean shouldExport()>();
if v != 0 goto label;
return;
label:
v = virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: boolean shouldDelay()>();
if v == 0 goto label;
v = <org.apache.dubbo.config.ServiceConfig: java.util.concurrent.ScheduledExecutorService DELAY_EXPORT_EXECUTOR>;
v = staticinvoke <org.apache.dubbo.config.ServiceConfig$doExport__3: java.lang.Runnable bootstrap$(org.apache.dubbo.config.ServiceConfig)>(v);
v = virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: java.lang.Integer getDelay()>();
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
interfaceinvoke v.<java.util.concurrent.ScheduledExecutorService: java.util.concurrent.ScheduledFuture schedule(java.lang.Runnable,long,java.util.concurrent.TimeUnit)>(v, v, v);
goto label;
label:
virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: void doExport()>();
label:
virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: void exported()>();
return;
}
public void exported()
{
java.util.function.Consumer v;
java.util.List v;
org.apache.dubbo.config.ServiceConfig v;
org.apache.dubbo.config.event.ServiceConfigExportedEvent v;
v := @this: org.apache.dubbo.config.ServiceConfig;
v = virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: java.util.List getExportedUrls()>();
v = staticinvoke <org.apache.dubbo.config.ServiceConfig$lambda_exported_0__4: java.util.function.Consumer bootstrap$(org.apache.dubbo.config.ServiceConfig)>(v);
interfaceinvoke v.<java.util.List: void forEach(java.util.function.Consumer)>(v);
v = new org.apache.dubbo.config.event.ServiceConfigExportedEvent;
specialinvoke v.<org.apache.dubbo.config.event.ServiceConfigExportedEvent: void <init>(org.apache.dubbo.config.ServiceConfig)>(v);
specialinvoke v.<org.apache.dubbo.config.ServiceConfig: void dispatch(org.apache.dubbo.event.Event)>(v);
return;
}
private void checkAndUpdateSubConfigs()
{
java.lang.IllegalStateException v, v, v, v, v, v;
org.apache.dubbo.common.URL v;
java.lang.Thread v;
boolean v, v, v, v, v, v, v, v;
java.util.List v, v;
java.lang.ClassLoader v;
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.String[] v;
org.apache.dubbo.config.ServiceConfig v;
java.lang.Boolean v, v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.util.function.Consumer v;
java.lang.Class v, v, v, v, v, v, v, v;
java.lang.ClassNotFoundException v, v, v;
java.lang.Object v;
v := @this: org.apache.dubbo.config.ServiceConfig;
virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: void completeCompoundConfigs()>();
virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: void checkDefault()>();
virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: void checkProtocol()>();
v = staticinvoke <org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.extension.ExtensionLoader getExtensionLoader(java.lang.Class)>(class "Lorg/apache/dubbo/config/ConfigInitializer;");
v = staticinvoke <org.apache.dubbo.common.URL: org.apache.dubbo.common.URL valueOf(java.lang.String)>("configInitializer://");
v = (java.lang.String[]) null;
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.List getActivateExtension(org.apache.dubbo.common.URL,java.lang.String[])>(v, v);
v = staticinvoke <org.apache.dubbo.config.ServiceConfig$lambda_checkAndUpdateSubConfigs_1__5: java.util.function.Consumer bootstrap$(org.apache.dubbo.config.ServiceConfig)>(v);
interfaceinvoke v.<java.util.List: void forEach(java.util.function.Consumer)>(v);
v = specialinvoke v.<org.apache.dubbo.config.ServiceConfig: boolean isOnlyInJvm()>();
if v != 0 goto label;
virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: void checkRegistry()>();
label:
virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: void refresh()>();
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String interfaceName>;
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: boolean isEmpty(java.lang.String)>(v);
if v == 0 goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("<dubbo:service interface=\"\" /> interface not allow null!");
throw v;
label:
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.Object ref>;
v = v instanceof org.apache.dubbo.rpc.service.GenericService;
if v == 0 goto label;
v.<org.apache.dubbo.config.ServiceConfig: java.lang.Class interfaceClass> = class "Lorg/apache/dubbo/rpc/service/GenericService;";
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String generic>;
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: boolean isEmpty(java.lang.String)>(v);
if v == 0 goto label;
v = <java.lang.Boolean: java.lang.Boolean TRUE>;
v = virtualinvoke v.<java.lang.Boolean: java.lang.String toString()>();
v.<org.apache.dubbo.config.ServiceConfig: java.lang.String generic> = v;
goto label;
label:
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String interfaceName>;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
v = virtualinvoke v.<java.lang.Thread: java.lang.ClassLoader getContextClassLoader()>();
v = staticinvoke <java.lang.Class: java.lang.Class forName(java.lang.String,boolean,java.lang.ClassLoader)>(v, 1, v);
v.<org.apache.dubbo.config.ServiceConfig: java.lang.Class interfaceClass> = v;
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.IllegalStateException;
v = virtualinvoke v.<java.lang.ClassNotFoundException: java.lang.String getMessage()>();
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
label:
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.Class interfaceClass>;
v = virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: java.util.List getMethods()>();
virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: void checkInterfaceAndMethods(java.lang.Class,java.util.List)>(v, v);
virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: void checkRef()>();
v = <java.lang.Boolean: java.lang.Boolean FALSE>;
v = virtualinvoke v.<java.lang.Boolean: java.lang.String toString()>();
v.<org.apache.dubbo.config.ServiceConfig: java.lang.String generic> = v;
label:
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String local>;
if v == null goto label;
v = "true";
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String local>;
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String interfaceName>;
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[])>("\u0001Local");
v.<org.apache.dubbo.config.ServiceConfig: java.lang.String local> = v;
label:
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String local>;
v = staticinvoke <org.apache.dubbo.common.utils.ClassUtils: java.lang.Class forNameWithThreadContextClassLoader(java.lang.String)>(v);
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.IllegalStateException;
v = virtualinvoke v.<java.lang.ClassNotFoundException: java.lang.String getMessage()>();
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
label:
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.Class interfaceClass>;
v = virtualinvoke v.<java.lang.Class: boolean isAssignableFrom(java.lang.Class)>(v);
if v != 0 goto label;
v = new java.lang.IllegalStateException;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String interfaceName>;
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[])>("The local implementation class \u not implement interface \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String stub>;
if v == null goto label;
v = "true";
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String stub>;
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String interfaceName>;
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[])>("\u0001Stub");
v.<org.apache.dubbo.config.ServiceConfig: java.lang.String stub> = v;
label:
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String stub>;
v = staticinvoke <org.apache.dubbo.common.utils.ClassUtils: java.lang.Class forNameWithThreadContextClassLoader(java.lang.String)>(v);
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.IllegalStateException;
v = virtualinvoke v.<java.lang.ClassNotFoundException: java.lang.String getMessage()>();
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
label:
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.Class interfaceClass>;
v = virtualinvoke v.<java.lang.Class: boolean isAssignableFrom(java.lang.Class)>(v);
if v != 0 goto label;
v = new java.lang.IllegalStateException;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String interfaceName>;
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[])>("The stub implementation class \u not implement interface \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.Class interfaceClass>;
virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: void checkStubAndLocal(java.lang.Class)>(v);
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.Class interfaceClass>;
staticinvoke <org.apache.dubbo.config.utils.ConfigValidationUtils: void checkMock(java.lang.Class,org.apache.dubbo.config.AbstractInterfaceConfig)>(v, v);
staticinvoke <org.apache.dubbo.config.utils.ConfigValidationUtils: void validateServiceConfig(org.apache.dubbo.config.ServiceConfig)>(v);
specialinvoke v.<org.apache.dubbo.config.ServiceConfig: void postProcessConfig()>();
return;
catch java.lang.ClassNotFoundException from label to label with label;
catch java.lang.ClassNotFoundException from label to label with label;
catch java.lang.ClassNotFoundException from label to label with label;
}
protected synchronized void doExport()
{
java.lang.IllegalStateException v;
org.apache.dubbo.config.bootstrap.DubboBootstrap v;
org.apache.dubbo.config.ServiceConfig v;
java.lang.Class v;
java.lang.String v, v, v, v;
boolean v, v, v;
v := @this: org.apache.dubbo.config.ServiceConfig;
v = v.<org.apache.dubbo.config.ServiceConfig: boolean unexported>;
if v == 0 goto label;
v = new java.lang.IllegalStateException;
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.Class interfaceClass>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("The service \u has already unexported!");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v.<org.apache.dubbo.config.ServiceConfig: boolean exported>;
if v == 0 goto label;
return;
label:
v.<org.apache.dubbo.config.ServiceConfig: boolean exported> = 1;
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String path>;
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: boolean isEmpty(java.lang.String)>(v);
if v == 0 goto label;
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String interfaceName>;
v.<org.apache.dubbo.config.ServiceConfig: java.lang.String path> = v;
label:
specialinvoke v.<org.apache.dubbo.config.ServiceConfig: void doExportUrls()>();
v = v.<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.config.bootstrap.DubboBootstrap bootstrap>;
virtualinvoke v.<org.apache.dubbo.config.bootstrap.DubboBootstrap: void setReady(boolean)>(1);
return;
}
private void doExportUrls()
{
org.apache.dubbo.config.ServiceConfig v;
java.util.function.Function v;
java.lang.String v, v, v, v, v;
org.apache.dubbo.rpc.model.ServiceMetadata v;
boolean v;
java.util.Iterator v;
org.apache.dubbo.rpc.model.ServiceRepository v;
java.util.List v, v;
org.apache.dubbo.rpc.model.ServiceDescriptor v;
java.util.Optional v, v;
java.lang.Class v, v;
java.lang.Object v, v, v;
v := @this: org.apache.dubbo.config.ServiceConfig;
v = staticinvoke <org.apache.dubbo.rpc.model.ApplicationModel: org.apache.dubbo.rpc.model.ServiceRepository getServiceRepository()>();
v = virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: java.lang.Class getInterfaceClass()>();
v = virtualinvoke v.<org.apache.dubbo.rpc.model.ServiceRepository: org.apache.dubbo.rpc.model.ServiceDescriptor registerService(java.lang.Class)>(v);
v = virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: java.lang.String getUniqueServiceName()>();
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.Object ref>;
v = v.<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.rpc.model.ServiceMetadata serviceMetadata>;
virtualinvoke v.<org.apache.dubbo.rpc.model.ServiceRepository: void registerProvider(java.lang.String,java.lang.Object,org.apache.dubbo.rpc.model.ServiceDescriptor,org.apache.dubbo.config.ServiceConfigBase,org.apache.dubbo.rpc.model.ServiceMetadata)>(v, v, v, v, v);
v = staticinvoke <org.apache.dubbo.config.utils.ConfigValidationUtils: java.util.List loadRegistries(org.apache.dubbo.config.AbstractInterfaceConfig,boolean)>(v, 1);
v = v.<org.apache.dubbo.config.ServiceConfig: java.util.List protocols>;
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.<org.apache.dubbo.config.ServiceConfig: java.util.Optional getContextPath(org.apache.dubbo.config.ProtocolConfig)>(v);
v = staticinvoke <org.apache.dubbo.config.ServiceConfig$lambda_doExportUrls_2__6: java.util.function.Function bootstrap$(org.apache.dubbo.config.ServiceConfig)>(v);
v = virtualinvoke v.<java.util.Optional: java.util.Optional map(java.util.function.Function)>(v);
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String path>;
v = virtualinvoke v.<java.util.Optional: java.lang.Object orElse(java.lang.Object)>(v);
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String group>;
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String version>;
v = staticinvoke <org.apache.dubbo.common.URL: java.lang.String buildKey(java.lang.String,java.lang.String,java.lang.String)>(v, v, v);
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.Class interfaceClass>;
virtualinvoke v.<org.apache.dubbo.rpc.model.ServiceRepository: org.apache.dubbo.rpc.model.ServiceDescriptor registerService(java.lang.String,java.lang.Class)>(v, v);
specialinvoke v.<org.apache.dubbo.config.ServiceConfig: void doExportUrlsFor1Protocol(org.apache.dubbo.config.ProtocolConfig,java.util.List)>(v, v);
goto label;
label:
return;
}
private void doExportUrlsFor1Protocol(org.apache.dubbo.config.ProtocolConfig, java.util.List)
{
java.lang.Integer v, v, v, v, v, v, v, v, v, v;
java.util.Map v;
org.apache.dubbo.common.bytecode.Wrapper v;
org.apache.dubbo.config.ServiceConfig v;
java.lang.Class[] v;
org.apache.dubbo.config.ProviderConfig v, v, v;
org.apache.dubbo.rpc.cluster.Configurator v;
java.lang.reflect.Method[] v;
java.lang.reflect.Method v, v;
java.util.UUID v;
java.util.function.Function v;
org.apache.dubbo.rpc.Protocol v, v;
java.util.HashSet v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
org.apache.dubbo.common.logger.Logger v, v, v, v, v, v;
java.lang.Class v, v, v, v, v, v, v, v, v, v, v;
java.lang.Object v, v, v, v, v, v, v, v;
org.apache.dubbo.config.ApplicationConfig v;
org.apache.dubbo.config.MetricsConfig v;
org.apache.dubbo.common.extension.ExtensionLoader v, v;
org.apache.dubbo.config.ModuleConfig v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
org.apache.dubbo.common.URL v, v, v, v;
org.apache.dubbo.rpc.model.ServiceMetadata v;
boolean v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.util.List v, v, v, v, v, v, v, v;
java.util.Optional v, v;
org.apache.dubbo.rpc.ProxyFactory v, v;
java.lang.String[] v;
java.util.HashMap v;
org.apache.dubbo.rpc.Invoker v, v;
org.apache.dubbo.config.MetadataReportConfig v;
org.apache.dubbo.rpc.Exporter v, v;
java.util.Iterator v, v, v;
java.lang.IllegalArgumentException v, v, v;
org.apache.dubbo.config.ProtocolConfig v;
org.apache.dubbo.config.invoker.DelegateProviderMetaDataInvoker v, v;
v := @this: org.apache.dubbo.config.ServiceConfig;
v := @parameter: org.apache.dubbo.config.ProtocolConfig;
v := @parameter: java.util.List;
v = virtualinvoke v.<org.apache.dubbo.config.ProtocolConfig: java.lang.String getName()>();
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: boolean isEmpty(java.lang.String)>(v);
if v == 0 goto label;
v = "dubbo";
label:
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: void <init>()>();
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>("side", "provider");
staticinvoke <org.apache.dubbo.config.ServiceConfig: void appendRuntimeParameters(java.util.Map)>(v);
v = virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.config.MetricsConfig getMetrics()>();
staticinvoke <org.apache.dubbo.config.AbstractConfig: void appendParameters(java.util.Map,java.lang.Object)>(v, v);
v = virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.config.ApplicationConfig getApplication()>();
staticinvoke <org.apache.dubbo.config.AbstractConfig: void appendParameters(java.util.Map,java.lang.Object)>(v, v);
v = virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.config.ModuleConfig getModule()>();
staticinvoke <org.apache.dubbo.config.AbstractConfig: void appendParameters(java.util.Map,java.lang.Object)>(v, v);
v = v.<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.config.ProviderConfig provider>;
staticinvoke <org.apache.dubbo.config.AbstractConfig: void appendParameters(java.util.Map,java.lang.Object)>(v, v);
staticinvoke <org.apache.dubbo.config.AbstractConfig: void appendParameters(java.util.Map,java.lang.Object)>(v, v);
staticinvoke <org.apache.dubbo.config.AbstractConfig: void appendParameters(java.util.Map,java.lang.Object)>(v, v);
v = virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.config.MetadataReportConfig getMetadataReportConfig()>();
if v == null goto label;
v = virtualinvoke v.<org.apache.dubbo.config.MetadataReportConfig: boolean isValid()>();
if v == 0 goto label;
interfaceinvoke v.<java.util.Map: java.lang.Object putIfAbsent(java.lang.Object,java.lang.Object)>("metadata-type", "remote");
label:
v = virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: java.util.List getMethods()>();
v = staticinvoke <org.apache.dubbo.common.utils.CollectionUtils: boolean isNotEmpty(java.util.Collection)>(v);
if v == 0 goto label;
v = virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: java.util.List getMethods()>();
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.<org.apache.dubbo.config.MethodConfig: java.lang.String getName()>();
staticinvoke <org.apache.dubbo.config.AbstractConfig: void appendParameters(java.util.Map,java.lang.Object,java.lang.String)>(v, v, v);
v = virtualinvoke v.<org.apache.dubbo.config.MethodConfig: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u.retry");
v = interfaceinvoke v.<java.util.Map: boolean containsKey(java.lang.Object)>(v);
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Map: java.lang.Object remove(java.lang.Object)>(v);
v = "false";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = virtualinvoke v.<org.apache.dubbo.config.MethodConfig: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u.retries");
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, "0");
label:
v = virtualinvoke v.<org.apache.dubbo.config.MethodConfig: java.util.List getArguments()>();
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.<org.apache.dubbo.config.ArgumentConfig: java.lang.String getType()>();
if v == null goto label;
v = virtualinvoke v.<org.apache.dubbo.config.ArgumentConfig: java.lang.String getType()>();
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 0 goto label;
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.Class interfaceClass>;
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Method[] getMethods()>();
v = lengthof v;
if v <= 0 goto label;
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.String getName()>();
v = virtualinvoke v.<org.apache.dubbo.config.MethodConfig: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = v[v];
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class[] getParameterTypes()>();
v = virtualinvoke v.<org.apache.dubbo.config.ArgumentConfig: java.lang.Integer getIndex()>();
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v = (int) -1;
if v == v goto label;
v = virtualinvoke v.<org.apache.dubbo.config.ArgumentConfig: java.lang.Integer getIndex()>();
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v = v[v];
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<org.apache.dubbo.config.ArgumentConfig: java.lang.String getType()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = virtualinvoke v.<org.apache.dubbo.config.MethodConfig: java.lang.String getName()>();
v = virtualinvoke v.<org.apache.dubbo.config.ArgumentConfig: java.lang.Integer getIndex()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.Integer)>(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.\u0001");
staticinvoke <org.apache.dubbo.config.AbstractConfig: void appendParameters(java.util.Map,java.lang.Object,java.lang.String)>(v, v, v);
goto label;
label:
v = new java.lang.IllegalArgumentException;
v = virtualinvoke v.<org.apache.dubbo.config.ArgumentConfig: java.lang.Integer getIndex()>();
v = virtualinvoke v.<org.apache.dubbo.config.ArgumentConfig: java.lang.String getType()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Integer,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[])>("Argument config error : the index attribute and type attribute not match :index :\u, type:\u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<org.apache.dubbo.config.ArgumentConfig: java.lang.String getType()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = virtualinvoke v.<org.apache.dubbo.config.MethodConfig: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,int)>(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.\u0001");
staticinvoke <org.apache.dubbo.config.AbstractConfig: void appendParameters(java.util.Map,java.lang.Object,java.lang.String)>(v, v, v);
v = virtualinvoke v.<org.apache.dubbo.config.ArgumentConfig: java.lang.Integer getIndex()>();
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v = (int) -1;
if v == v goto label;
v = virtualinvoke v.<org.apache.dubbo.config.ArgumentConfig: java.lang.Integer getIndex()>();
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
if v == v goto label;
v = new java.lang.IllegalArgumentException;
v = virtualinvoke v.<org.apache.dubbo.config.ArgumentConfig: java.lang.Integer getIndex()>();
v = virtualinvoke v.<org.apache.dubbo.config.ArgumentConfig: java.lang.String getType()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Integer,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[])>("Argument config error : the index attribute and type attribute not match :index :\u, type:\u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v + 1;
goto label;
label:
v = v + 1;
goto label;
label:
v = virtualinvoke v.<org.apache.dubbo.config.ArgumentConfig: java.lang.Integer getIndex()>();
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v = (int) -1;
if v == v goto label;
v = virtualinvoke v.<org.apache.dubbo.config.MethodConfig: java.lang.String getName()>();
v = virtualinvoke v.<org.apache.dubbo.config.ArgumentConfig: java.lang.Integer getIndex()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.Integer)>(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.\u0001");
staticinvoke <org.apache.dubbo.config.AbstractConfig: void appendParameters(java.util.Map,java.lang.Object,java.lang.String)>(v, v, v);
goto label;
label:
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("Argument config must set index or type attribute.eg: <dubbo:argument index=\'0\' .../> or <dubbo:argument type=xxx .../>");
throw v;
label:
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String generic>;
v = staticinvoke <org.apache.dubbo.rpc.support.ProtocolUtils: boolean isGeneric(java.lang.String)>(v);
if v == 0 goto label;
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String generic>;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>("generic", v);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>("methods", "*");
goto label;
label:
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.Class interfaceClass>;
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String version>;
v = staticinvoke <org.apache.dubbo.common.Version: java.lang.String getVersion(java.lang.Class,java.lang.String)>(v, v);
if v == null goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 0 goto label;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>("revision", v);
label:
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.Class interfaceClass>;
v = staticinvoke <org.apache.dubbo.common.bytecode.Wrapper: org.apache.dubbo.common.bytecode.Wrapper getWrapper(java.lang.Class)>(v);
v = virtualinvoke v.<org.apache.dubbo.common.bytecode.Wrapper: java.lang.String[] getMethodNames()>();
v = lengthof v;
if v != 0 goto label;
v = <org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.common.logger.Logger logger>;
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.Class interfaceClass>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("No method found in service interface \u0001");
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void warn(java.lang.String)>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>("methods", "*");
goto label;
label:
v = new java.util.HashSet;
v = staticinvoke <java.util.Arrays: java.util.List asList(java.lang.Object[])>(v);
specialinvoke v.<java.util.HashSet: void <init>(java.util.Collection)>(v);
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: java.lang.String join(java.util.Collection,java.lang.String)>(v, ",");
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>("methods", v);
label:
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String token>;
v = staticinvoke <org.apache.dubbo.common.utils.ConfigUtils: boolean isEmpty(java.lang.String)>(v);
if v == 0 goto label;
v = v.<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.config.ProviderConfig provider>;
if v == null goto label;
v = v.<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.config.ProviderConfig provider>;
v = virtualinvoke v.<org.apache.dubbo.config.ProviderConfig: java.lang.String getToken()>();
v.<org.apache.dubbo.config.ServiceConfig: java.lang.String token> = v;
label:
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String token>;
v = staticinvoke <org.apache.dubbo.common.utils.ConfigUtils: boolean isEmpty(java.lang.String)>(v);
if v != 0 goto label;
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String token>;
v = staticinvoke <org.apache.dubbo.common.utils.ConfigUtils: boolean isDefault(java.lang.String)>(v);
if v == 0 goto label;
v = staticinvoke <java.util.UUID: java.util.UUID randomUUID()>();
v = virtualinvoke v.<java.util.UUID: java.lang.String toString()>();
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>("token", v);
goto label;
label:
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String token>;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>("token", v);
label:
v = v.<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.rpc.model.ServiceMetadata serviceMetadata>;
v = virtualinvoke v.<org.apache.dubbo.rpc.model.ServiceMetadata: java.util.Map getAttachments()>();
interfaceinvoke v.<java.util.Map: void putAll(java.util.Map)>(v);
v = specialinvoke v.<org.apache.dubbo.config.ServiceConfig: java.lang.String findConfigedHosts(org.apache.dubbo.config.ProtocolConfig,java.util.List,java.util.Map)>(v, v, v);
v = specialinvoke v.<org.apache.dubbo.config.ServiceConfig: java.lang.Integer findConfigedPorts(org.apache.dubbo.config.ProtocolConfig,java.lang.String,java.util.Map)>(v, v, v);
v = new org.apache.dubbo.common.URL;
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v = virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: java.util.Optional getContextPath(org.apache.dubbo.config.ProtocolConfig)>(v);
v = staticinvoke <org.apache.dubbo.config.ServiceConfig$lambda_doExportUrlsFor1Protocol_3__7: java.util.function.Function bootstrap$(org.apache.dubbo.config.ServiceConfig)>(v);
v = virtualinvoke v.<java.util.Optional: java.util.Optional map(java.util.function.Function)>(v);
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.String path>;
v = virtualinvoke v.<java.util.Optional: java.lang.Object orElse(java.lang.Object)>(v);
specialinvoke v.<org.apache.dubbo.common.URL: void <init>(java.lang.String,java.lang.String,int,java.lang.String,java.util.Map)>(v, v, v, v, v);
v = v;
v = staticinvoke <org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.extension.ExtensionLoader getExtensionLoader(java.lang.Class)>(class "Lorg/apache/dubbo/rpc/cluster/ConfiguratorFactory;");
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getProtocol()>();
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: boolean hasExtension(java.lang.String)>(v);
if v == 0 goto label;
v = staticinvoke <org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.extension.ExtensionLoader getExtensionLoader(java.lang.Class)>(class "Lorg/apache/dubbo/rpc/cluster/ConfiguratorFactory;");
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getProtocol()>();
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Object getExtension(java.lang.String)>(v);
v = interfaceinvoke v.<org.apache.dubbo.rpc.cluster.ConfiguratorFactory: org.apache.dubbo.rpc.cluster.Configurator getConfigurator(org.apache.dubbo.common.URL)>(v);
v = interfaceinvoke v.<org.apache.dubbo.rpc.cluster.Configurator: org.apache.dubbo.common.URL configure(org.apache.dubbo.common.URL)>(v);
label:
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getParameter(java.lang.String)>("scope");
v = "none";
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>(v);
if v != 0 goto label;
v = "remote";
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>(v);
if v != 0 goto label;
specialinvoke v.<org.apache.dubbo.config.ServiceConfig: void exportLocal(org.apache.dubbo.common.URL)>(v);
label:
v = "local";
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>(v);
if v != 0 goto 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 = "injvm";
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getProtocol()>();
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>(v);
if v != 0 goto label;
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getParameter(java.lang.String)>("dynamic");
v = virtualinvoke v.<org.apache.dubbo.common.URL: org.apache.dubbo.common.URL addParameterIfAbsent(java.lang.String,java.lang.String)>("dynamic", v);
v = staticinvoke <org.apache.dubbo.config.utils.ConfigValidationUtils: org.apache.dubbo.common.URL loadMonitor(org.apache.dubbo.config.AbstractInterfaceConfig,org.apache.dubbo.common.URL)>(v, v);
if v == null goto label;
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String toFullString()>();
v = virtualinvoke v.<org.apache.dubbo.common.URL: org.apache.dubbo.common.URL addParameterAndEncoded(java.lang.String,java.lang.String)>("monitor", v);
label:
v = <org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.common.logger.Logger logger>;
v = interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: boolean isInfoEnabled()>();
if v == 0 goto label;
v = virtualinvoke v.<org.apache.dubbo.common.URL: boolean getParameter(java.lang.String,boolean)>("register", 1);
if v == 0 goto label;
v = <org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.common.logger.Logger logger>;
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.Class interfaceClass>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,org.apache.dubbo.common.URL,org.apache.dubbo.common.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[])>("Register dubbo service \u url \u to registry \u0001");
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void info(java.lang.String)>(v);
goto label;
label:
v = <org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.common.logger.Logger logger>;
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.Class interfaceClass>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,org.apache.dubbo.common.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[])>("Export dubbo service \u to url \u0001");
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void info(java.lang.String)>(v);
label:
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getParameter(java.lang.String)>("proxy");
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: boolean isNotEmpty(java.lang.String)>(v);
if v == 0 goto label;
v = virtualinvoke v.<org.apache.dubbo.common.URL: org.apache.dubbo.common.URL addParameter(java.lang.String,java.lang.String)>("proxy", v);
label:
v = <org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.rpc.ProxyFactory PROXY_FACTORY>;
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.Object ref>;
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.Class interfaceClass>;
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String toFullString()>();
v = virtualinvoke v.<org.apache.dubbo.common.URL: org.apache.dubbo.common.URL addParameterAndEncoded(java.lang.String,java.lang.String)>("export", v);
v = interfaceinvoke v.<org.apache.dubbo.rpc.ProxyFactory: org.apache.dubbo.rpc.Invoker getInvoker(java.lang.Object,java.lang.Class,org.apache.dubbo.common.URL)>(v, v, v);
v = new org.apache.dubbo.config.invoker.DelegateProviderMetaDataInvoker;
specialinvoke v.<org.apache.dubbo.config.invoker.DelegateProviderMetaDataInvoker: void <init>(org.apache.dubbo.rpc.Invoker,org.apache.dubbo.config.ServiceConfig)>(v, v);
v = <org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.rpc.Protocol PROTOCOL>;
v = interfaceinvoke v.<org.apache.dubbo.rpc.Protocol: org.apache.dubbo.rpc.Exporter export(org.apache.dubbo.rpc.Invoker)>(v);
v = v.<org.apache.dubbo.config.ServiceConfig: java.util.List exporters>;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
v = <org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.common.logger.Logger logger>;
v = interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: boolean isInfoEnabled()>();
if v == 0 goto label;
v = <org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.common.logger.Logger logger>;
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.Class interfaceClass>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,org.apache.dubbo.common.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[])>("Export dubbo service \u to url \u0001");
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void info(java.lang.String)>(v);
label:
v = <org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.rpc.ProxyFactory PROXY_FACTORY>;
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.Object ref>;
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.Class interfaceClass>;
v = interfaceinvoke v.<org.apache.dubbo.rpc.ProxyFactory: org.apache.dubbo.rpc.Invoker getInvoker(java.lang.Object,java.lang.Class,org.apache.dubbo.common.URL)>(v, v, v);
v = new org.apache.dubbo.config.invoker.DelegateProviderMetaDataInvoker;
specialinvoke v.<org.apache.dubbo.config.invoker.DelegateProviderMetaDataInvoker: void <init>(org.apache.dubbo.rpc.Invoker,org.apache.dubbo.config.ServiceConfig)>(v, v);
v = <org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.rpc.Protocol PROTOCOL>;
v = interfaceinvoke v.<org.apache.dubbo.rpc.Protocol: org.apache.dubbo.rpc.Exporter export(org.apache.dubbo.rpc.Invoker)>(v);
v = v.<org.apache.dubbo.config.ServiceConfig: java.util.List exporters>;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
label:
staticinvoke <org.apache.dubbo.registry.client.metadata.MetadataUtils: void publishServiceDefinition(org.apache.dubbo.common.URL)>(v);
label:
v = v.<org.apache.dubbo.config.ServiceConfig: java.util.List urls>;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
return;
}
private void exportLocal(org.apache.dubbo.common.URL)
{
org.apache.dubbo.rpc.ProxyFactory v;
org.apache.dubbo.config.ServiceConfig v;
org.apache.dubbo.rpc.Invoker v;
org.apache.dubbo.common.URLBuilder v, v, v, v;
org.apache.dubbo.rpc.Protocol v;
org.apache.dubbo.common.URL v, v;
java.lang.String v, v;
org.apache.dubbo.rpc.Exporter v;
org.apache.dubbo.common.logger.Logger v;
java.util.List v;
java.lang.Class v, v;
java.lang.Object v;
v := @this: org.apache.dubbo.config.ServiceConfig;
v := @parameter: org.apache.dubbo.common.URL;
v = staticinvoke <org.apache.dubbo.common.URLBuilder: org.apache.dubbo.common.URLBuilder 'from'(org.apache.dubbo.common.URL)>(v);
v = virtualinvoke v.<org.apache.dubbo.common.URLBuilder: org.apache.dubbo.common.URLBuilder setProtocol(java.lang.String)>("injvm");
v = virtualinvoke v.<org.apache.dubbo.common.URLBuilder: org.apache.dubbo.common.URLBuilder setHost(java.lang.String)>("127.0.0.1");
v = virtualinvoke v.<org.apache.dubbo.common.URLBuilder: org.apache.dubbo.common.URLBuilder setPort(int)>(0);
v = virtualinvoke v.<org.apache.dubbo.common.URLBuilder: org.apache.dubbo.common.URL build()>();
v = <org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.rpc.Protocol PROTOCOL>;
v = <org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.rpc.ProxyFactory PROXY_FACTORY>;
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.Object ref>;
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.Class interfaceClass>;
v = interfaceinvoke v.<org.apache.dubbo.rpc.ProxyFactory: org.apache.dubbo.rpc.Invoker getInvoker(java.lang.Object,java.lang.Class,org.apache.dubbo.common.URL)>(v, v, v);
v = interfaceinvoke v.<org.apache.dubbo.rpc.Protocol: org.apache.dubbo.rpc.Exporter export(org.apache.dubbo.rpc.Invoker)>(v);
v = v.<org.apache.dubbo.config.ServiceConfig: java.util.List exporters>;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = <org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.common.logger.Logger logger>;
v = v.<org.apache.dubbo.config.ServiceConfig: java.lang.Class interfaceClass>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,org.apache.dubbo.common.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[])>("Export dubbo service \u to local registry url : \u0001");
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void info(java.lang.String)>(v);
return;
}
private boolean isOnlyInJvm()
{
org.apache.dubbo.config.ServiceConfig v;
java.util.List v, v;
int v;
java.lang.Object v;
java.lang.String v, v;
boolean v, v;
v := @this: org.apache.dubbo.config.ServiceConfig;
v = virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: java.util.List getProtocols()>();
v = interfaceinvoke v.<java.util.List: int size()>();
if v != 1 goto label;
v = "injvm";
v = virtualinvoke v.<org.apache.dubbo.config.ServiceConfig: java.util.List getProtocols()>();
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(0);
v = virtualinvoke v.<org.apache.dubbo.config.ProtocolConfig: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>(v);
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private java.lang.String findConfigedHosts(org.apache.dubbo.config.ProtocolConfig, java.util.List, java.util.Map)
{
java.net.InetAddress v, v;
java.util.Map v;
boolean v, v, v, v, v, v, v, v, v, v, v, v;
java.net.InetSocketAddress v;
java.lang.Exception v;
java.util.List v;
java.lang.Throwable v;
java.net.Socket v;
org.apache.dubbo.config.ServiceConfig v;
int v, v, v;
java.lang.String v, v, v, v, v, v, v, v, v, v;
java.util.Iterator v;
org.apache.dubbo.common.logger.Logger v, v, v;
java.lang.IllegalArgumentException v, v;
java.net.UnknownHostException v;
org.apache.dubbo.config.ProviderConfig v, v;
org.apache.dubbo.config.ProtocolConfig v;
java.lang.Object v;
v := @this: org.apache.dubbo.config.ServiceConfig;
v := @parameter: org.apache.dubbo.config.ProtocolConfig;
v := @parameter: java.util.List;
v := @parameter: java.util.Map;
v = 0;
v = specialinvoke v.<org.apache.dubbo.config.ServiceConfig: java.lang.String getValueFromConfig(org.apache.dubbo.config.ProtocolConfig,java.lang.String)>(v, "DUBBO_IP_TO_BIND");
if v == null goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 0 goto label;
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: boolean isInvalidLocalHost(java.lang.String)>(v);
if v == 0 goto label;
v = new java.lang.IllegalArgumentException;
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[])>("Specified invalid bind ip from property:DUBBO_IP_TO_BIND, value:\u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: boolean isEmpty(java.lang.String)>(v);
if v == 0 goto label;
v = virtualinvoke v.<org.apache.dubbo.config.ProtocolConfig: java.lang.String getHost()>();
v = v.<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.config.ProviderConfig provider>;
if v == null goto label;
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: boolean isEmpty(java.lang.String)>(v);
if v == 0 goto label;
v = v.<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.config.ProviderConfig provider>;
v = virtualinvoke v.<org.apache.dubbo.config.ProviderConfig: java.lang.String getHost()>();
label:
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: boolean isInvalidLocalHost(java.lang.String)>(v);
if v == 0 goto label;
v = 1;
label:
v = <org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.common.logger.Logger logger>;
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void info(java.lang.String)>("No valid ip found from environment, try to find valid host from DNS.");
v = staticinvoke <java.net.InetAddress: java.net.InetAddress getLocalHost()>();
v = virtualinvoke v.<java.net.InetAddress: java.lang.String getHostAddress()>();
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.common.logger.Logger logger>;
v = virtualinvoke v.<java.net.UnknownHostException: java.lang.String getMessage()>();
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void warn(java.lang.String,java.lang.Throwable)>(v, v);
label:
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: boolean isInvalidLocalHost(java.lang.String)>(v);
if v == 0 goto 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 = "multicast";
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getParameter(java.lang.String)>("registry");
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>(v);
if v != 0 goto label;
label:
v = new java.net.Socket;
specialinvoke v.<java.net.Socket: void <init>()>();
label:
v = new java.net.InetSocketAddress;
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getHost()>();
v = virtualinvoke v.<org.apache.dubbo.common.URL: int getPort()>();
specialinvoke v.<java.net.InetSocketAddress: void <init>(java.lang.String,int)>(v, v);
virtualinvoke v.<java.net.Socket: void connect(java.net.SocketAddress,int)>(v, 1000);
v = virtualinvoke v.<java.net.Socket: java.net.InetAddress getLocalAddress()>();
v = virtualinvoke v.<java.net.InetAddress: java.lang.String getHostAddress()>();
label:
virtualinvoke v.<java.net.Socket: void close()>();
label:
goto label;
label:
v := @caughtexception;
throw v;
label:
v := @caughtexception;
v = <org.apache.dubbo.config.ServiceConfig: 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 warn(java.lang.String,java.lang.Throwable)>(v, v);
goto label;
label:
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: boolean isInvalidLocalHost(java.lang.String)>(v);
if v == 0 goto label;
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: java.lang.String getLocalHost()>();
label:
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>("bind.ip", v);
v = specialinvoke v.<org.apache.dubbo.config.ServiceConfig: java.lang.String getValueFromConfig(org.apache.dubbo.config.ProtocolConfig,java.lang.String)>(v, "DUBBO_IP_TO_REGISTRY");
if v == null goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 0 goto label;
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: boolean isInvalidLocalHost(java.lang.String)>(v);
if v == 0 goto label;
v = new java.lang.IllegalArgumentException;
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[])>("Specified invalid registry ip from property:DUBBO_IP_TO_REGISTRY, value:\u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: boolean isEmpty(java.lang.String)>(v);
if v == 0 goto label;
v = v;
label:
v = staticinvoke <java.lang.String: java.lang.String valueOf(boolean)>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>("anyhost", v);
return v;
catch java.net.UnknownHostException from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Exception from label to label with label;
}
private java.lang.Integer findConfigedPorts(org.apache.dubbo.config.ProtocolConfig, java.lang.String, java.util.Map)
{
org.apache.dubbo.common.extension.ExtensionLoader v;
org.apache.dubbo.config.ServiceConfig v;
java.lang.Integer v, v;
java.util.Map v;
int v, v, v, v, v, v;
java.lang.String v, v, v, v;
org.apache.dubbo.config.ProviderConfig v, v;
org.apache.dubbo.config.ProtocolConfig v;
java.lang.Object v;
v := @this: org.apache.dubbo.config.ServiceConfig;
v := @parameter: org.apache.dubbo.config.ProtocolConfig;
v := @parameter: java.lang.String;
v := @parameter: java.util.Map;
v = specialinvoke v.<org.apache.dubbo.config.ServiceConfig: java.lang.String getValueFromConfig(org.apache.dubbo.config.ProtocolConfig,java.lang.String)>(v, "DUBBO_PORT_TO_BIND");
v = specialinvoke v.<org.apache.dubbo.config.ServiceConfig: java.lang.Integer parsePort(java.lang.String)>(v);
if v != null goto label;
v = virtualinvoke v.<org.apache.dubbo.config.ProtocolConfig: java.lang.Integer getPort()>();
v = v.<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.config.ProviderConfig provider>;
if v == null goto label;
if v == null goto label;
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
if v != 0 goto label;
label:
v = v.<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.config.ProviderConfig provider>;
v = virtualinvoke v.<org.apache.dubbo.config.ProviderConfig: java.lang.Integer getPort()>();
label:
v = staticinvoke <org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.extension.ExtensionLoader getExtensionLoader(java.lang.Class)>(class "Lorg/apache/dubbo/rpc/Protocol;");
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Object getExtension(java.lang.String)>(v);
v = interfaceinvoke v.<org.apache.dubbo.rpc.Protocol: int getDefaultPort()>();
if v == null goto label;
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
if v != 0 goto label;
label:
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
label:
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
if v > 0 goto label;
v = specialinvoke v.<org.apache.dubbo.config.ServiceConfig: java.lang.Integer getRandomPort(java.lang.String)>(v);
if v == null goto label;
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
if v >= 0 goto label;
label:
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: int getAvailablePort(int)>(v);
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
specialinvoke v.<org.apache.dubbo.config.ServiceConfig: void putRandomPort(java.lang.String,java.lang.Integer)>(v, v);
label:
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>("bind.port", v);
v = specialinvoke v.<org.apache.dubbo.config.ServiceConfig: java.lang.String getValueFromConfig(org.apache.dubbo.config.ProtocolConfig,java.lang.String)>(v, "DUBBO_PORT_TO_REGISTRY");
v = specialinvoke v.<org.apache.dubbo.config.ServiceConfig: java.lang.Integer parsePort(java.lang.String)>(v);
if v != null goto label;
v = v;
label:
return v;
}
private java.lang.Integer parsePort(java.lang.String)
{
org.apache.dubbo.config.ServiceConfig v;
java.lang.IllegalArgumentException v, v;
java.lang.Integer v, v;
java.lang.Exception v;
int v, v, v;
java.lang.String v, v, v;
boolean v;
v := @this: org.apache.dubbo.config.ServiceConfig;
v := @parameter: java.lang.String;
v = null;
if v == null goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 0 goto label;
label:
v = staticinvoke <java.lang.Integer: int parseInt(java.lang.String)>(v);
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: boolean isInvalidPort(int)>(v);
if v == 0 goto label;
v = new java.lang.IllegalArgumentException;
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[])>("Specified invalid port from env value:\u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v;
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.IllegalArgumentException;
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[])>("Specified invalid port from env value:\u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
return v;
catch java.lang.Exception from label to label with label;
}
private java.lang.String getValueFromConfig(org.apache.dubbo.config.ProtocolConfig, java.lang.String)
{
org.apache.dubbo.config.ServiceConfig v;
org.apache.dubbo.config.ProtocolConfig v;
java.lang.String v, v, v, v, v, v;
boolean v;
v := @this: org.apache.dubbo.config.ServiceConfig;
v := @parameter: org.apache.dubbo.config.ProtocolConfig;
v := @parameter: java.lang.String;
v = virtualinvoke v.<org.apache.dubbo.config.ProtocolConfig: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: java.lang.String toUpperCase()>();
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 = 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");
v = staticinvoke <org.apache.dubbo.common.utils.ConfigUtils: java.lang.String getSystemProperty(java.lang.String)>(v);
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: boolean isEmpty(java.lang.String)>(v);
if v == 0 goto label;
v = staticinvoke <org.apache.dubbo.common.utils.ConfigUtils: java.lang.String getSystemProperty(java.lang.String)>(v);
label:
return v;
}
private java.lang.Integer getRandomPort(java.lang.String)
{
java.util.Map v;
java.lang.Object v;
java.lang.String v, v;
org.apache.dubbo.config.ServiceConfig v;
java.lang.Integer v;
v := @this: org.apache.dubbo.config.ServiceConfig;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.String: java.lang.String toLowerCase()>();
v = <org.apache.dubbo.config.ServiceConfig: java.util.Map RANDOM_PORT_MAP>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(-2147483648);
v = interfaceinvoke v.<java.util.Map: java.lang.Object getOrDefault(java.lang.Object,java.lang.Object)>(v, v);
return v;
}
private void putRandomPort(java.lang.String, java.lang.Integer)
{
org.apache.dubbo.common.logger.Logger v;
org.apache.dubbo.config.ServiceConfig v;
java.lang.Integer v;
java.util.Map v, v;
java.lang.String v, v, v;
boolean v;
v := @this: org.apache.dubbo.config.ServiceConfig;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Integer;
v = virtualinvoke v.<java.lang.String: java.lang.String toLowerCase()>();
v = <org.apache.dubbo.config.ServiceConfig: java.util.Map RANDOM_PORT_MAP>;
v = interfaceinvoke v.<java.util.Map: boolean containsKey(java.lang.Object)>(v);
if v != 0 goto label;
v = <org.apache.dubbo.config.ServiceConfig: java.util.Map RANDOM_PORT_MAP>;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = <org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.common.logger.Logger logger>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Integer,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[])>("Use random available port(\u) for protocol \u0001");
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void warn(java.lang.String)>(v);
label:
return;
}
private void postProcessConfig()
{
java.util.function.Consumer v;
java.util.List v;
org.apache.dubbo.common.URL v;
org.apache.dubbo.common.extension.ExtensionLoader v;
java.lang.String[] v;
org.apache.dubbo.config.ServiceConfig v;
v := @this: org.apache.dubbo.config.ServiceConfig;
v = staticinvoke <org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.extension.ExtensionLoader getExtensionLoader(java.lang.Class)>(class "Lorg/apache/dubbo/config/ConfigPostProcessor;");
v = staticinvoke <org.apache.dubbo.common.URL: org.apache.dubbo.common.URL valueOf(java.lang.String)>("configPostProcessor://");
v = (java.lang.String[]) null;
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.List getActivateExtension(org.apache.dubbo.common.URL,java.lang.String[])>(v, v);
v = staticinvoke <org.apache.dubbo.config.ServiceConfig$lambda_postProcessConfig_4__8: java.util.function.Consumer bootstrap$(org.apache.dubbo.config.ServiceConfig)>(v);
interfaceinvoke v.<java.util.List: void forEach(java.util.function.Consumer)>(v);
return;
}
private void dispatch(org.apache.dubbo.event.Event)
{
org.apache.dubbo.config.ServiceConfig v;
org.apache.dubbo.event.EventDispatcher v;
org.apache.dubbo.event.Event v;
v := @this: org.apache.dubbo.config.ServiceConfig;
v := @parameter: org.apache.dubbo.event.Event;
v = staticinvoke <org.apache.dubbo.event.EventDispatcher: org.apache.dubbo.event.EventDispatcher getDefaultExtension()>();
interfaceinvoke v.<org.apache.dubbo.event.EventDispatcher: void dispatch(org.apache.dubbo.event.Event)>(v);
return;
}
public org.apache.dubbo.config.bootstrap.DubboBootstrap getBootstrap()
{
org.apache.dubbo.config.ServiceConfig v;
org.apache.dubbo.config.bootstrap.DubboBootstrap v;
v := @this: org.apache.dubbo.config.ServiceConfig;
v = v.<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.config.bootstrap.DubboBootstrap bootstrap>;
return v;
}
public void setBootstrap(org.apache.dubbo.config.bootstrap.DubboBootstrap)
{
org.apache.dubbo.config.ServiceConfig v;
org.apache.dubbo.config.bootstrap.DubboBootstrap v;
v := @this: org.apache.dubbo.config.ServiceConfig;
v := @parameter: org.apache.dubbo.config.bootstrap.DubboBootstrap;
v.<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.config.bootstrap.DubboBootstrap bootstrap> = v;
return;
}
static void <clinit>()
{
org.apache.dubbo.common.extension.ExtensionLoader v, v;
org.apache.dubbo.common.logger.Logger v;
java.util.HashMap v;
org.apache.dubbo.common.utils.NamedThreadFactory v;
java.util.concurrent.ScheduledExecutorService v;
java.lang.Object v, v;
v = staticinvoke <org.apache.dubbo.common.logger.LoggerFactory: org.apache.dubbo.common.logger.Logger getLogger(java.lang.Class)>(class "Lorg/apache/dubbo/config/ServiceConfig;");
<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.common.logger.Logger logger> = v;
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: void <init>()>();
<org.apache.dubbo.config.ServiceConfig: java.util.Map RANDOM_PORT_MAP> = v;
v = new org.apache.dubbo.common.utils.NamedThreadFactory;
specialinvoke v.<org.apache.dubbo.common.utils.NamedThreadFactory: void <init>(java.lang.String,boolean)>("DubboServiceDelayExporter", 1);
v = staticinvoke <java.util.concurrent.Executors: java.util.concurrent.ScheduledExecutorService newSingleThreadScheduledExecutor(java.util.concurrent.ThreadFactory)>(v);
<org.apache.dubbo.config.ServiceConfig: java.util.concurrent.ScheduledExecutorService DELAY_EXPORT_EXECUTOR> = v;
v = staticinvoke <org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.extension.ExtensionLoader getExtensionLoader(java.lang.Class)>(class "Lorg/apache/dubbo/rpc/Protocol;");
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Object getAdaptiveExtension()>();
<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.rpc.Protocol PROTOCOL> = v;
v = staticinvoke <org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.extension.ExtensionLoader getExtensionLoader(java.lang.Class)>(class "Lorg/apache/dubbo/rpc/ProxyFactory;");
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Object getAdaptiveExtension()>();
<org.apache.dubbo.config.ServiceConfig: org.apache.dubbo.rpc.ProxyFactory PROXY_FACTORY> = v;
return;
}
}