public class org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor extends com.alibaba.spring.beans.factory.'annotation'.AbstractAnnotationBeanPostProcessor implements org.springframework.context.ApplicationContextAware, org.springframework.context.ApplicationListener
{
private static final org.apache.dubbo.common.logger.Logger logger;
public static final java.lang.String BEAN_NAME;
private static final int CACHE_SIZE;
private final java.util.concurrent.ConcurrentMap referenceBeanCache;
private final java.util.concurrent.ConcurrentMap injectedFieldReferenceBeanCache;
private final java.util.concurrent.ConcurrentMap injectedMethodReferenceBeanCache;
private org.springframework.context.ApplicationContext applicationContext;
private static java.util.Map referencedBeanNameIdx;
public void <init>()
{
org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor v;
java.util.concurrent.ConcurrentHashMap v, v, v;
java.lang.Class[] v;
int v, v, v;
v := @this: org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor;
v = newarray (java.lang.Class)[3];
v[0] = class "Lorg/apache/dubbo/config/annotation/DubboReference;";
v[1] = class "Lorg/apache/dubbo/config/annotation/Reference;";
v[2] = class "Lcom/alibaba/dubbo/config/annotation/Reference;";
specialinvoke v.<com.alibaba.spring.beans.factory.'annotation'.AbstractAnnotationBeanPostProcessor: void <init>(java.lang.Class[])>(v);
v = new java.util.concurrent.ConcurrentHashMap;
v = <org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: int CACHE_SIZE>;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>(int)>(v);
v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.util.concurrent.ConcurrentMap referenceBeanCache> = v;
v = new java.util.concurrent.ConcurrentHashMap;
v = <org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: int CACHE_SIZE>;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>(int)>(v);
v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.util.concurrent.ConcurrentMap injectedFieldReferenceBeanCache> = v;
v = new java.util.concurrent.ConcurrentHashMap;
v = <org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: int CACHE_SIZE>;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>(int)>(v);
v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.util.concurrent.ConcurrentMap injectedMethodReferenceBeanCache> = v;
return;
}
public java.util.Collection getReferenceBeans()
{
org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor v;
java.util.Collection v;
java.util.concurrent.ConcurrentMap v;
v := @this: org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor;
v = v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.util.concurrent.ConcurrentMap referenceBeanCache>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.util.Collection values()>();
return v;
}
public java.util.Map getInjectedFieldReferenceBeanMap()
{
org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor v;
java.util.Map v;
java.util.concurrent.ConcurrentMap v;
v := @this: org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor;
v = v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.util.concurrent.ConcurrentMap injectedFieldReferenceBeanCache>;
v = staticinvoke <java.util.Collections: java.util.Map unmodifiableMap(java.util.Map)>(v);
return v;
}
public java.util.Map getInjectedMethodReferenceBeanMap()
{
org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor v;
java.util.Map v;
java.util.concurrent.ConcurrentMap v;
v := @this: org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor;
v = v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.util.concurrent.ConcurrentMap injectedMethodReferenceBeanCache>;
v = staticinvoke <java.util.Collections: java.util.Map unmodifiableMap(java.util.Map)>(v);
return v;
}
protected java.lang.Object doGetInjectedBean(org.springframework.core.'annotation'.AnnotationAttributes, java.lang.Object, java.lang.String, java.lang.Class, org.springframework.beans.factory.'annotation'.InjectionMetadata$InjectedElement) throws java.lang.Exception
{
org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor v;
org.springframework.beans.factory.'annotation'.InjectionMetadata$InjectedElement v;
org.apache.dubbo.config.spring.ReferenceBean v;
java.util.function.Function v;
java.util.Map v;
java.lang.Class v;
java.lang.Object v, v, v;
org.springframework.core.'annotation'.AnnotationAttributes v;
java.lang.String v, v, v;
boolean v;
v := @this: org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor;
v := @parameter: org.springframework.core.'annotation'.AnnotationAttributes;
v := @parameter: java.lang.Object;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Class;
v := @parameter: org.springframework.beans.factory.'annotation'.InjectionMetadata$InjectedElement;
v = specialinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.lang.String buildReferencedBeanName(org.springframework.core.'annotation'.AnnotationAttributes,java.lang.Class)>(v, v);
v = specialinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.lang.String getReferenceBeanName(org.springframework.core.'annotation'.AnnotationAttributes,java.lang.Class)>(v, v);
v = <org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.util.Map referencedBeanNameIdx>;
v = staticinvoke <org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor$lambda_doGetInjectedBean_0__71: java.util.function.Function bootstrap$()>();
v = interfaceinvoke v.<java.util.Map: java.lang.Object computeIfAbsent(java.lang.Object,java.util.function.Function)>(v, v);
virtualinvoke v.<java.util.TreeSet: boolean add(java.lang.Object)>(v);
v = specialinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: org.apache.dubbo.config.spring.ReferenceBean buildReferenceBeanIfAbsent(java.lang.String,org.springframework.core.'annotation'.AnnotationAttributes,java.lang.Class)>(v, v, v);
v = specialinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: boolean isLocalServiceBean(java.lang.String,org.apache.dubbo.config.spring.ReferenceBean,org.springframework.core.'annotation'.AnnotationAttributes)>(v, v, v);
specialinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: void prepareReferenceBean(java.lang.String,org.apache.dubbo.config.spring.ReferenceBean,boolean)>(v, v, v);
specialinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: void registerReferenceBean(java.lang.String,org.apache.dubbo.config.spring.ReferenceBean,org.springframework.core.'annotation'.AnnotationAttributes,boolean,java.lang.Class)>(v, v, v, v, v);
specialinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: void cacheInjectedReferenceBean(org.apache.dubbo.config.spring.ReferenceBean,org.springframework.beans.factory.'annotation'.InjectionMetadata$InjectedElement)>(v, v);
v = virtualinvoke v.<org.apache.dubbo.config.spring.ReferenceBean: java.lang.Object get()>();
return v;
}
private void registerReferenceBean(java.lang.String, org.apache.dubbo.config.spring.ReferenceBean, org.springframework.core.'annotation'.AnnotationAttributes, boolean, java.lang.Class)
{
org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor v;
org.springframework.beans.MutablePropertyValues v;
org.apache.dubbo.config.spring.ReferenceBean v;
org.springframework.beans.factory.config.ConfigurableListableBeanFactory v;
org.springframework.beans.factory.config.BeanDefinition v;
java.lang.Class v;
java.lang.Object v;
org.springframework.core.'annotation'.AnnotationAttributes v;
java.lang.String v, v, v;
boolean v, v;
v := @this: org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor;
v := @parameter: java.lang.String;
v := @parameter: org.apache.dubbo.config.spring.ReferenceBean;
v := @parameter: org.springframework.core.'annotation'.AnnotationAttributes;
v := @parameter: boolean;
v := @parameter: java.lang.Class;
v = virtualinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: org.springframework.beans.factory.config.ConfigurableListableBeanFactory getBeanFactory()>();
v = specialinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.lang.String getReferenceBeanName(org.springframework.core.'annotation'.AnnotationAttributes,java.lang.Class)>(v, v);
if v == 0 goto label;
v = interfaceinvoke v.<org.springframework.beans.factory.config.ConfigurableListableBeanFactory: org.springframework.beans.factory.config.BeanDefinition getBeanDefinition(java.lang.String)>(v);
v = virtualinvoke v.<org.springframework.beans.factory.support.AbstractBeanDefinition: org.springframework.beans.MutablePropertyValues getPropertyValues()>();
v = virtualinvoke v.<org.springframework.beans.MutablePropertyValues: java.lang.Object get(java.lang.String)>("ref");
v = virtualinvoke v.<org.springframework.beans.factory.config.RuntimeBeanReference: java.lang.String getBeanName()>();
interfaceinvoke v.<org.springframework.beans.factory.config.ConfigurableListableBeanFactory: void registerAlias(java.lang.String,java.lang.String)>(v, v);
goto label;
label:
v = interfaceinvoke v.<org.springframework.beans.factory.config.ConfigurableListableBeanFactory: boolean containsBean(java.lang.String)>(v);
if v != 0 goto label;
interfaceinvoke v.<org.springframework.beans.factory.config.ConfigurableListableBeanFactory: void registerSingleton(java.lang.String,java.lang.Object)>(v, v);
label:
return;
}
private java.lang.String getReferenceBeanName(org.springframework.core.'annotation'.AnnotationAttributes, java.lang.Class)
{
org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor v;
java.lang.Class v;
java.lang.Object v;
org.springframework.core.'annotation'.AnnotationAttributes v;
boolean v;
v := @this: org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor;
v := @parameter: org.springframework.core.'annotation'.AnnotationAttributes;
v := @parameter: java.lang.Class;
v = staticinvoke <com.alibaba.spring.util.AnnotationUtils: java.lang.Object getAttribute(java.util.Map,java.lang.String)>(v, "id");
v = staticinvoke <org.springframework.util.StringUtils: boolean hasText(java.lang.String)>(v);
if v != 0 goto label;
v = specialinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.lang.String generateReferenceBeanName(org.springframework.core.'annotation'.AnnotationAttributes,java.lang.Class)>(v, v);
label:
return v;
}
private java.lang.String generateReferenceBeanName(org.springframework.core.'annotation'.AnnotationAttributes, java.lang.Class)
{
java.lang.Object[] v;
java.util.ArrayList v;
int v;
java.lang.String v, v, v, v;
boolean v, v, v;
org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor v;
java.util.Iterator v;
java.util.Set v;
java.util.stream.Stream v, v;
java.lang.Class v;
java.lang.Object v, v, v, v;
java.lang.StringBuilder v, v, v, v, v;
org.springframework.core.'annotation'.AnnotationAttributes v;
v := @this: org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor;
v := @parameter: org.springframework.core.'annotation'.AnnotationAttributes;
v := @parameter: java.lang.Class;
v = new java.lang.StringBuilder;
specialinvoke v.<java.lang.StringBuilder: void <init>(java.lang.String)>("@Reference");
v = virtualinvoke v.<org.springframework.core.'annotation'.AnnotationAttributes: boolean isEmpty()>();
if v != 0 goto label;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(char)>(40);
v = virtualinvoke v.<org.springframework.core.'annotation'.AnnotationAttributes: 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 = "parameters";
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getKey()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = specialinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.util.ArrayList getParameterPairs(java.util.Map$Entry)>(v);
v = virtualinvoke v.<java.util.ArrayList: java.util.stream.Stream stream()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.util.stream.Stream sorted()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.lang.Object[] toArray()>();
v = specialinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.lang.String convertAttribute(java.lang.Object)>(v);
goto label;
label:
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
v = specialinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.lang.String convertAttribute(java.lang.Object)>(v);
label:
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getKey()>();
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(char)>(61);
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(char)>(44);
goto label;
label:
v = virtualinvoke v.<java.lang.StringBuilder: int lastIndexOf(java.lang.String)>(",");
virtualinvoke v.<java.lang.StringBuilder: void setCharAt(int,char)>(v, 41);
label:
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(" ");
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
return v;
}
private java.util.ArrayList getParameterPairs(java.util.Map$Entry)
{
org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor v;
java.util.Map$Entry v;
java.util.ArrayList v;
int v, v, v, v, v;
java.lang.Object v;
java.lang.String v, v, v;
v := @this: org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor;
v := @parameter: java.util.Map$Entry;
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = 0;
label:
v = lengthof v;
v = v / 2;
v = v * 2;
if v >= v goto label;
v = v[v];
v = v + 1;
v = v[v];
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001=\u0001");
virtualinvoke v.<java.util.ArrayList: boolean add(java.lang.Object)>(v);
v = v + 2;
goto label;
label:
return v;
}
private java.lang.String convertAttribute(java.lang.Object)
{
java.lang.Object[] v, v;
java.lang.String[] v, v;
int v, v, v;
java.lang.String v, v, v, v, v;
boolean v, v, v;
org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor v;
java.util.Iterator v;
java.util.Set v;
java.util.stream.Stream v, v;
java.lang.Class v;
java.lang.Object v, v, v, v;
org.springframework.core.'annotation'.AnnotationAttributes v;
v := @this: org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor;
v := @parameter: java.lang.Object;
if v != null goto label;
return null;
label:
v = v instanceof java.lang.'annotation'.Annotation;
if v == 0 goto label;
v = newarray (java.lang.String)[0];
v = staticinvoke <com.alibaba.spring.util.AnnotationUtils: org.springframework.core.'annotation'.AnnotationAttributes getAnnotationAttributes(java.lang.'annotation'.Annotation,boolean,java.lang.String[])>(v, 1, v);
v = virtualinvoke v.<org.springframework.core.'annotation'.AnnotationAttributes: 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 getValue()>();
v = specialinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.lang.String convertAttribute(java.lang.Object)>(v);
interfaceinvoke v.<java.util.Map$Entry: java.lang.Object setValue(java.lang.Object)>(v);
goto label;
label:
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
return v;
label:
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: boolean isArray()>();
if v == 0 goto label;
v = staticinvoke <org.springframework.util.ObjectUtils: java.lang.Object[] toObjectArray(java.lang.Object)>(v);
v = lengthof v;
v = newarray (java.lang.String)[v];
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = specialinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.lang.String convertAttribute(java.lang.Object)>(v);
v[v] = v;
v = v + 1;
goto label;
label:
v = staticinvoke <java.util.Arrays: java.util.stream.Stream stream(java.lang.Object[])>(v);
v = interfaceinvoke v.<java.util.stream.Stream: java.util.stream.Stream sorted()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.lang.Object[] toArray()>();
v = staticinvoke <java.util.Arrays: java.lang.String toString(java.lang.Object[])>(v);
return v;
label:
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
return v;
}
private boolean isLocalServiceBean(java.lang.String, org.apache.dubbo.config.spring.ReferenceBean, org.springframework.core.'annotation'.AnnotationAttributes)
{
org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor v;
org.springframework.core.'annotation'.AnnotationAttributes v;
java.lang.String v;
org.apache.dubbo.config.spring.ReferenceBean v;
boolean v, v, v;
v := @this: org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor;
v := @parameter: java.lang.String;
v := @parameter: org.apache.dubbo.config.spring.ReferenceBean;
v := @parameter: org.springframework.core.'annotation'.AnnotationAttributes;
v = specialinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: boolean existsServiceBean(java.lang.String)>(v);
if v == 0 goto label;
v = specialinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: boolean isRemoteReferenceBean(org.apache.dubbo.config.spring.ReferenceBean,org.springframework.core.'annotation'.AnnotationAttributes)>(v, v);
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private boolean existsServiceBean(java.lang.String)
{
org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor v;
java.lang.String v;
org.springframework.context.ApplicationContext v, v;
boolean v, v, v;
v := @this: org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor;
v := @parameter: java.lang.String;
v = v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: org.springframework.context.ApplicationContext applicationContext>;
v = interfaceinvoke v.<org.springframework.context.ApplicationContext: boolean containsBean(java.lang.String)>(v);
if v == 0 goto label;
v = v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: org.springframework.context.ApplicationContext applicationContext>;
v = interfaceinvoke v.<org.springframework.context.ApplicationContext: boolean isTypeMatch(java.lang.String,java.lang.Class)>(v, class "Lorg/apache/dubbo/config/spring/ServiceBean;");
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private boolean isRemoteReferenceBean(org.apache.dubbo.config.spring.ReferenceBean, org.springframework.core.'annotation'.AnnotationAttributes)
{
org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor v;
org.apache.dubbo.config.spring.ReferenceBean v;
java.lang.Boolean v, v, v;
java.lang.Object v;
org.springframework.core.'annotation'.AnnotationAttributes v;
boolean v, v, v;
v := @this: org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor;
v := @parameter: org.apache.dubbo.config.spring.ReferenceBean;
v := @parameter: org.springframework.core.'annotation'.AnnotationAttributes;
v = <java.lang.Boolean: java.lang.Boolean FALSE>;
v = virtualinvoke v.<org.apache.dubbo.config.spring.ReferenceBean: java.lang.Boolean isInjvm()>();
v = virtualinvoke v.<java.lang.Boolean: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = <java.lang.Boolean: java.lang.Boolean FALSE>;
v = virtualinvoke v.<org.springframework.core.'annotation'.AnnotationAttributes: java.lang.Object get(java.lang.Object)>("injvm");
v = virtualinvoke v.<java.lang.Boolean: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private void prepareReferenceBean(java.lang.String, org.apache.dubbo.config.spring.ReferenceBean, boolean)
{
org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor v;
java.lang.Boolean v;
java.lang.String v;
org.apache.dubbo.config.spring.ReferenceBean v;
boolean v;
v := @this: org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor;
v := @parameter: java.lang.String;
v := @parameter: org.apache.dubbo.config.spring.ReferenceBean;
v := @parameter: boolean;
if v == 0 goto label;
v = <java.lang.Boolean: java.lang.Boolean TRUE>;
virtualinvoke v.<org.apache.dubbo.config.spring.ReferenceBean: void setInjvm(java.lang.Boolean)>(v);
specialinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: void exportServiceBeanIfNecessary(java.lang.String)>(v);
label:
return;
}
private void exportServiceBeanIfNecessary(java.lang.String)
{
org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor v;
org.apache.dubbo.config.spring.ServiceBean v;
java.lang.String v;
boolean v, v;
v := @this: org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor;
v := @parameter: java.lang.String;
v = specialinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: boolean existsServiceBean(java.lang.String)>(v);
if v == 0 goto label;
v = specialinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: org.apache.dubbo.config.spring.ServiceBean getServiceBean(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.dubbo.config.spring.ServiceBean: boolean isExported()>();
if v != 0 goto label;
virtualinvoke v.<org.apache.dubbo.config.spring.ServiceBean: void export()>();
label:
return;
}
private org.apache.dubbo.config.spring.ServiceBean getServiceBean(java.lang.String)
{
org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor v;
java.lang.Object v;
java.lang.String v;
org.springframework.context.ApplicationContext v;
v := @this: org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor;
v := @parameter: java.lang.String;
v = v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: org.springframework.context.ApplicationContext applicationContext>;
v = interfaceinvoke v.<org.springframework.context.ApplicationContext: java.lang.Object getBean(java.lang.String,java.lang.Class)>(v, class "Lorg/apache/dubbo/config/spring/ServiceBean;");
return v;
}
protected java.lang.String buildInjectedObjectCacheKey(org.springframework.core.'annotation'.AnnotationAttributes, java.lang.Object, java.lang.String, java.lang.Class, org.springframework.beans.factory.'annotation'.InjectionMetadata$InjectedElement)
{
org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor v;
org.springframework.beans.factory.'annotation'.InjectionMetadata$InjectedElement v;
java.lang.reflect.Member v;
java.lang.String[] v;
org.springframework.core.env.Environment v;
java.util.Map v;
java.lang.Class v;
java.lang.Object v;
org.springframework.core.'annotation'.AnnotationAttributes v;
java.lang.String v, v, v;
v := @this: org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor;
v := @parameter: org.springframework.core.'annotation'.AnnotationAttributes;
v := @parameter: java.lang.Object;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Class;
v := @parameter: org.springframework.beans.factory.'annotation'.InjectionMetadata$InjectedElement;
v = specialinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.lang.String buildReferencedBeanName(org.springframework.core.'annotation'.AnnotationAttributes,java.lang.Class)>(v, v);
v = virtualinvoke v.<org.springframework.beans.factory.'annotation'.InjectionMetadata$InjectedElement: java.lang.reflect.Member getMember()>();
v = virtualinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: org.springframework.core.env.Environment getEnvironment()>();
v = newarray (java.lang.String)[0];
v = staticinvoke <com.alibaba.spring.util.AnnotationUtils: java.util.Map getAttributes(java.util.Map,org.springframework.core.env.PropertyResolver,java.lang.String[])>(v, v, v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.reflect.Member,java.util.Map)>(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[])>("\u0001#source=\u0001#attributes=\u0001");
return v;
}
private java.lang.String buildReferencedBeanName(org.springframework.core.'annotation'.AnnotationAttributes, java.lang.Class)
{
org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor v;
org.springframework.core.env.Environment v;
java.lang.Class v;
org.springframework.core.'annotation'.AnnotationAttributes v;
java.lang.String v;
org.apache.dubbo.config.spring.beans.factory.'annotation'.ServiceBeanNameBuilder v;
v := @this: org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor;
v := @parameter: org.springframework.core.'annotation'.AnnotationAttributes;
v := @parameter: java.lang.Class;
v = virtualinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: org.springframework.core.env.Environment getEnvironment()>();
v = staticinvoke <org.apache.dubbo.config.spring.beans.factory.'annotation'.ServiceBeanNameBuilder: org.apache.dubbo.config.spring.beans.factory.'annotation'.ServiceBeanNameBuilder create(org.springframework.core.'annotation'.AnnotationAttributes,java.lang.Class,org.springframework.core.env.Environment)>(v, v, v);
v = virtualinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ServiceBeanNameBuilder: java.lang.String build()>();
return v;
}
private org.apache.dubbo.config.spring.ReferenceBean buildReferenceBeanIfAbsent(java.lang.String, org.springframework.core.'annotation'.AnnotationAttributes, java.lang.Class) throws java.lang.Exception
{
java.util.concurrent.ConcurrentMap v, v;
org.apache.dubbo.config.spring.beans.factory.'annotation'.AnnotatedInterfaceConfigBeanBuilder v;
java.lang.String v, v, v, v;
boolean v;
org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor v;
java.lang.IllegalArgumentException v;
org.springframework.context.ApplicationContext v;
java.lang.Class v, v, v;
java.lang.Object v;
org.springframework.core.'annotation'.AnnotationAttributes v;
org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceBeanBuilder v;
v := @this: org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor;
v := @parameter: java.lang.String;
v := @parameter: org.springframework.core.'annotation'.AnnotationAttributes;
v := @parameter: java.lang.Class;
v = v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.util.concurrent.ConcurrentMap referenceBeanCache>;
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.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: org.springframework.context.ApplicationContext applicationContext>;
v = staticinvoke <org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceBeanBuilder: org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceBeanBuilder create(org.springframework.core.'annotation'.AnnotationAttributes,org.springframework.context.ApplicationContext)>(v, v);
v = virtualinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceBeanBuilder: org.apache.dubbo.config.spring.beans.factory.'annotation'.AnnotatedInterfaceConfigBeanBuilder interfaceClass(java.lang.Class)>(v);
virtualinvoke v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceBeanBuilder: org.apache.dubbo.config.AbstractInterfaceConfig build()>();
v = v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.util.concurrent.ConcurrentMap referenceBeanCache>;
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
goto label;
label:
v = virtualinvoke v.<org.apache.dubbo.config.spring.ReferenceBean: java.lang.Class getInterfaceClass()>();
v = virtualinvoke v.<java.lang.Class: boolean isAssignableFrom(java.lang.Class)>(v);
if v != 0 goto label;
v = new java.lang.IllegalArgumentException;
v = virtualinvoke v.<org.apache.dubbo.config.spring.ReferenceBean: java.lang.Class getInterfaceClass()>();
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)>(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[])>("reference bean name \u has been duplicated, but interfaceClass \u cannot be assigned to \u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
return v;
}
private void cacheInjectedReferenceBean(org.apache.dubbo.config.spring.ReferenceBean, org.springframework.beans.factory.'annotation'.InjectionMetadata$InjectedElement)
{
org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor v;
org.springframework.beans.factory.'annotation'.InjectionMetadata$InjectedElement v;
java.lang.reflect.Member v, v;
org.apache.dubbo.config.spring.ReferenceBean v;
java.util.concurrent.ConcurrentMap v, v;
boolean v, v;
v := @this: org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor;
v := @parameter: org.apache.dubbo.config.spring.ReferenceBean;
v := @parameter: org.springframework.beans.factory.'annotation'.InjectionMetadata$InjectedElement;
v = virtualinvoke v.<org.springframework.beans.factory.'annotation'.InjectionMetadata$InjectedElement: java.lang.reflect.Member getMember()>();
v = v instanceof java.lang.reflect.Field;
if v == 0 goto label;
v = v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.util.concurrent.ConcurrentMap injectedFieldReferenceBeanCache>;
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
goto label;
label:
v = virtualinvoke v.<org.springframework.beans.factory.'annotation'.InjectionMetadata$InjectedElement: java.lang.reflect.Member getMember()>();
v = v instanceof java.lang.reflect.Method;
if v == 0 goto label;
v = v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.util.concurrent.ConcurrentMap injectedMethodReferenceBeanCache>;
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
return;
}
public void setApplicationContext(org.springframework.context.ApplicationContext) throws org.springframework.beans.BeansException
{
org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor v;
org.springframework.context.ApplicationContext v;
v := @this: org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor;
v := @parameter: org.springframework.context.ApplicationContext;
v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: org.springframework.context.ApplicationContext applicationContext> = v;
return;
}
public void destroy() throws java.lang.Exception
{
org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor v;
java.util.concurrent.ConcurrentMap v, v, v;
v := @this: org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor;
specialinvoke v.<com.alibaba.spring.beans.factory.'annotation'.AbstractAnnotationBeanPostProcessor: void destroy()>();
v = v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.util.concurrent.ConcurrentMap referenceBeanCache>;
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: void clear()>();
v = v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.util.concurrent.ConcurrentMap injectedFieldReferenceBeanCache>;
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: void clear()>();
v = v.<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.util.concurrent.ConcurrentMap injectedMethodReferenceBeanCache>;
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: void clear()>();
return;
}
public void onApplicationEvent(org.springframework.context.ApplicationEvent)
{
org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor v;
java.util.function.Predicate v;
java.util.Set v;
java.util.function.Consumer v;
org.springframework.context.ApplicationEvent v;
java.util.stream.Stream v, v;
java.util.Map v, v;
boolean v;
v := @this: org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor;
v := @parameter: org.springframework.context.ApplicationEvent;
v = v instanceof org.springframework.context.event.ContextRefreshedEvent;
if v == 0 goto label;
v = <org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.util.Map referencedBeanNameIdx>;
v = interfaceinvoke v.<java.util.Map: java.util.Set entrySet()>();
v = interfaceinvoke v.<java.util.Set: java.util.stream.Stream stream()>();
v = staticinvoke <org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor$lambda_onApplicationEvent_1__72: 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.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor$lambda_onApplicationEvent_2__73: java.util.function.Consumer bootstrap$()>();
interfaceinvoke v.<java.util.stream.Stream: void forEach(java.util.function.Consumer)>(v);
v = <org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.util.Map referencedBeanNameIdx>;
interfaceinvoke v.<java.util.Map: void clear()>();
label:
return;
}
static void <clinit>()
{
org.apache.dubbo.common.logger.Logger v;
int v;
java.util.HashMap v;
java.lang.Integer v;
v = staticinvoke <org.apache.dubbo.common.logger.LoggerFactory: org.apache.dubbo.common.logger.Logger getLogger(java.lang.Class)>(class "Lorg/apache/dubbo/config/spring/beans/factory/annotation/ReferenceAnnotationBeanPostProcessor;");
<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: org.apache.dubbo.common.logger.Logger logger> = v;
v = staticinvoke <java.lang.Integer: java.lang.Integer getInteger(java.lang.String,int)>("referenceAnnotationBeanPostProcessor.cache.size", 32);
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: int CACHE_SIZE> = v;
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: void <init>()>();
<org.apache.dubbo.config.spring.beans.factory.'annotation'.ReferenceAnnotationBeanPostProcessor: java.util.Map referencedBeanNameIdx> = v;
return;
}
}