public abstract class org.apache.dubbo.registry.support.AbstractRegistryFactory extends java.lang.Object implements org.apache.dubbo.registry.RegistryFactory
{
private static final org.apache.dubbo.common.logger.Logger LOGGER;
protected static final java.util.concurrent.locks.ReentrantLock LOCK;
protected static final java.util.Map REGISTRIES;
private static final java.util.concurrent.atomic.AtomicBoolean destroyed;
private static org.apache.dubbo.registry.Registry DEFAULT_NOP_REGISTRY;
public void <init>()
{
org.apache.dubbo.registry.support.AbstractRegistryFactory v;
v := @this: org.apache.dubbo.registry.support.AbstractRegistryFactory;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
public static java.util.Collection getRegistries()
{
java.util.Collection v, v;
java.util.Map v;
java.util.LinkedList v;
v = new java.util.LinkedList;
v = <org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.Map REGISTRIES>;
v = interfaceinvoke v.<java.util.Map: java.util.Collection values()>();
specialinvoke v.<java.util.LinkedList: void <init>(java.util.Collection)>(v);
v = staticinvoke <java.util.Collections: java.util.Collection unmodifiableCollection(java.util.Collection)>(v);
return v;
}
public static org.apache.dubbo.registry.Registry getRegistry(java.lang.String)
{
java.lang.Object v;
java.lang.String v;
java.util.Map v;
v := @parameter: java.lang.String;
v = <org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.Map REGISTRIES>;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
return v;
}
public static java.util.List getServiceDiscoveries()
{
java.util.function.Predicate v;
java.util.Collection v;
java.util.function.Function v, v;
java.util.stream.Stream v, v, v, v;
java.lang.Object v;
java.util.stream.Collector v;
v = staticinvoke <org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.Collection getRegistries()>();
v = interfaceinvoke v.<java.util.Collection: java.util.stream.Stream stream()>();
v = staticinvoke <org.apache.dubbo.registry.support.AbstractRegistryFactory$lambda_getServiceDiscoveries_0__88: java.util.function.Predicate bootstrap$()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.util.stream.Stream filter(java.util.function.Predicate)>(v);
v = staticinvoke <org.apache.dubbo.registry.support.AbstractRegistryFactory$lambda_getServiceDiscoveries_1__89: java.util.function.Function bootstrap$()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.util.stream.Stream map(java.util.function.Function)>(v);
v = staticinvoke <org.apache.dubbo.registry.support.AbstractRegistryFactory$getServiceDiscovery__90: java.util.function.Function bootstrap$()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.util.stream.Stream map(java.util.function.Function)>(v);
v = staticinvoke <java.util.stream.Collectors: java.util.stream.Collector toList()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.lang.Object collect(java.util.stream.Collector)>(v);
return v;
}
public static void destroyAll()
{
java.lang.Throwable v, v;
java.util.concurrent.atomic.AtomicBoolean v;
java.util.Map v;
java.lang.String v, v;
boolean v, v, v;
java.util.Iterator v;
java.util.concurrent.locks.ReentrantLock v, v, v;
org.apache.dubbo.common.logger.Logger v, v, v;
java.util.Collection v, v;
java.lang.Object v;
v = <org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.concurrent.atomic.AtomicBoolean destroyed>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean compareAndSet(boolean,boolean)>(0, 1);
if v != 0 goto label;
return;
label:
v = <org.apache.dubbo.registry.support.AbstractRegistryFactory: 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.registry.support.AbstractRegistryFactory: org.apache.dubbo.common.logger.Logger LOGGER>;
v = staticinvoke <org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.Collection getRegistries()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.util.Collection)>(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[])>("Close all registries \u0001");
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void info(java.lang.String)>(v);
label:
v = <org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.concurrent.locks.ReentrantLock LOCK>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
label:
v = staticinvoke <org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.Collection getRegistries()>();
v = interfaceinvoke v.<java.util.Collection: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
label:
interfaceinvoke v.<org.apache.dubbo.registry.Registry: void destroy()>();
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.dubbo.registry.support.AbstractRegistryFactory: org.apache.dubbo.common.logger.Logger LOGGER>;
v = virtualinvoke v.<java.lang.Throwable: java.lang.String getMessage()>();
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void error(java.lang.String,java.lang.Throwable)>(v, v);
goto label;
label:
v = <org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.Map REGISTRIES>;
interfaceinvoke v.<java.util.Map: void clear()>();
label:
v = <org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.concurrent.locks.ReentrantLock LOCK>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = <org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.concurrent.locks.ReentrantLock LOCK>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private org.apache.dubbo.registry.Registry getDefaultNopRegistryIfDestroyed()
{
org.apache.dubbo.common.logger.Logger v;
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.dubbo.registry.support.AbstractRegistryFactory v;
boolean v;
org.apache.dubbo.registry.Registry v;
v := @this: org.apache.dubbo.registry.support.AbstractRegistryFactory;
v = <org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.concurrent.atomic.AtomicBoolean destroyed>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
v = <org.apache.dubbo.registry.support.AbstractRegistryFactory: org.apache.dubbo.common.logger.Logger LOGGER>;
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void warn(java.lang.String)>("All registry instances have been destroyed, failed to fetch any instance. Usually, this means no need to try to do unnecessary redundant resource clearance, all registries has been taken care of.");
v = <org.apache.dubbo.registry.support.AbstractRegistryFactory: org.apache.dubbo.registry.Registry DEFAULT_NOP_REGISTRY>;
return v;
label:
return null;
}
public org.apache.dubbo.registry.Registry getRegistry(org.apache.dubbo.common.URL)
{
java.lang.Throwable v;
java.lang.IllegalStateException v;
java.lang.String[] v;
org.apache.dubbo.common.URLBuilder v, v, v, v;
org.apache.dubbo.common.URL v, v;
java.util.Map v, v;
java.lang.String v, v, v, v;
java.util.concurrent.locks.ReentrantLock v, v, v, v, v;
java.lang.Class v, v;
java.lang.Object v;
org.apache.dubbo.registry.support.AbstractRegistryFactory v;
org.apache.dubbo.registry.Registry v, v, v;
v := @this: org.apache.dubbo.registry.support.AbstractRegistryFactory;
v := @parameter: org.apache.dubbo.common.URL;
v = specialinvoke v.<org.apache.dubbo.registry.support.AbstractRegistryFactory: org.apache.dubbo.registry.Registry getDefaultNopRegistryIfDestroyed()>();
if null == v goto label;
return v;
label:
v = staticinvoke <org.apache.dubbo.common.URLBuilder: org.apache.dubbo.common.URLBuilder 'from'(org.apache.dubbo.common.URL)>(v);
v = class "Lorg/apache/dubbo/registry/RegistryService;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<org.apache.dubbo.common.URLBuilder: org.apache.dubbo.common.URLBuilder setPath(java.lang.String)>(v);
v = class "Lorg/apache/dubbo/registry/RegistryService;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<org.apache.dubbo.common.URLBuilder: org.apache.dubbo.common.URLBuilder addParameter(java.lang.String,java.lang.String)>("interface", v);
v = newarray (java.lang.String)[2];
v[0] = "export";
v[1] = "refer";
v = virtualinvoke v.<org.apache.dubbo.common.URLBuilder: org.apache.dubbo.common.URLBuilder removeParameters(java.lang.String[])>(v);
v = virtualinvoke v.<org.apache.dubbo.common.URLBuilder: org.apache.dubbo.common.URL build()>();
v = virtualinvoke v.<org.apache.dubbo.registry.support.AbstractRegistryFactory: java.lang.String createRegistryCacheKey(org.apache.dubbo.common.URL)>(v);
v = <org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.concurrent.locks.ReentrantLock LOCK>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
label:
v = specialinvoke v.<org.apache.dubbo.registry.support.AbstractRegistryFactory: org.apache.dubbo.registry.Registry getDefaultNopRegistryIfDestroyed()>();
if null == v goto label;
label:
v = <org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.concurrent.locks.ReentrantLock LOCK>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
return v;
label:
v = <org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.Map REGISTRIES>;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
label:
v = <org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.concurrent.locks.ReentrantLock LOCK>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
return v;
label:
v = virtualinvoke v.<org.apache.dubbo.registry.support.AbstractRegistryFactory: org.apache.dubbo.registry.Registry createRegistry(org.apache.dubbo.common.URL)>(v);
if v != null goto label;
v = new java.lang.IllegalStateException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.dubbo.common.URL)>(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 not create registry \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = <org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.Map REGISTRIES>;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
v = <org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.concurrent.locks.ReentrantLock LOCK>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
return v;
label:
v := @caughtexception;
v = <org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.concurrent.locks.ReentrantLock LOCK>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
protected java.lang.String createRegistryCacheKey(org.apache.dubbo.common.URL)
{
org.apache.dubbo.common.URL v;
org.apache.dubbo.registry.support.AbstractRegistryFactory v;
java.lang.String v;
v := @this: org.apache.dubbo.registry.support.AbstractRegistryFactory;
v := @parameter: org.apache.dubbo.common.URL;
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String toServiceStringWithoutResolving()>();
return v;
}
protected abstract org.apache.dubbo.registry.Registry createRegistry(org.apache.dubbo.common.URL);
public static void removeDestroyedRegistry(org.apache.dubbo.registry.Registry)
{
java.lang.Throwable v;
java.util.concurrent.locks.ReentrantLock v, v, v;
java.util.function.Predicate v;
java.util.Set v;
java.util.Map v;
org.apache.dubbo.registry.Registry v;
v := @parameter: org.apache.dubbo.registry.Registry;
v = <org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.concurrent.locks.ReentrantLock LOCK>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
label:
v = <org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.Map REGISTRIES>;
v = interfaceinvoke v.<java.util.Map: java.util.Set entrySet()>();
v = staticinvoke <org.apache.dubbo.registry.support.AbstractRegistryFactory$lambda_removeDestroyedRegistry_2__91: java.util.function.Predicate bootstrap$(org.apache.dubbo.registry.Registry)>(v);
interfaceinvoke v.<java.util.Set: boolean removeIf(java.util.function.Predicate)>(v);
label:
v = <org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.concurrent.locks.ReentrantLock LOCK>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = <org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.concurrent.locks.ReentrantLock LOCK>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public static void clearRegistryNotDestroy()
{
java.util.Map v;
v = <org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.Map REGISTRIES>;
interfaceinvoke v.<java.util.Map: void clear()>();
return;
}
static void <clinit>()
{
java.util.concurrent.locks.ReentrantLock v;
org.apache.dubbo.common.logger.Logger v;
java.util.concurrent.atomic.AtomicBoolean v;
java.util.HashMap v;
org.apache.dubbo.registry.support.AbstractRegistryFactory$1 v;
v = staticinvoke <org.apache.dubbo.common.logger.LoggerFactory: org.apache.dubbo.common.logger.Logger getLogger(java.lang.Class)>(class "Lorg/apache/dubbo/registry/support/AbstractRegistryFactory;");
<org.apache.dubbo.registry.support.AbstractRegistryFactory: org.apache.dubbo.common.logger.Logger LOGGER> = v;
v = new java.util.concurrent.locks.ReentrantLock;
specialinvoke v.<java.util.concurrent.locks.ReentrantLock: void <init>()>();
<org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.concurrent.locks.ReentrantLock LOCK> = v;
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: void <init>()>();
<org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.Map REGISTRIES> = v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>(boolean)>(0);
<org.apache.dubbo.registry.support.AbstractRegistryFactory: java.util.concurrent.atomic.AtomicBoolean destroyed> = v;
v = new org.apache.dubbo.registry.support.AbstractRegistryFactory$1;
specialinvoke v.<org.apache.dubbo.registry.support.AbstractRegistryFactory$1: void <init>()>();
<org.apache.dubbo.registry.support.AbstractRegistryFactory: org.apache.dubbo.registry.Registry DEFAULT_NOP_REGISTRY> = v;
return;
}
}