public class org.apache.dubbo.config.spring.status.DataSourceStatusChecker extends java.lang.Object implements org.apache.dubbo.common.status.StatusChecker
{
private static final org.apache.dubbo.common.logger.Logger logger;
public void <init>()
{
org.apache.dubbo.config.spring.status.DataSourceStatusChecker v;
v := @this: org.apache.dubbo.config.spring.status.DataSourceStatusChecker;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
public org.apache.dubbo.common.status.Status check()
{
java.sql.Connection v;
java.sql.ResultSet v;
java.util.Map v;
boolean v, v, v, v;
java.util.function.Predicate v;
java.util.Set v, v;
java.util.stream.Stream v, v;
java.util.Optional v;
java.lang.StringBuilder v;
java.lang.Throwable v, v, v;
org.apache.dubbo.common.status.Status$Level v, v, v;
java.sql.DatabaseMetaData v;
int v;
java.lang.String v, v, v, v, v, v;
java.util.Iterator v;
org.apache.dubbo.common.logger.Logger v;
org.apache.dubbo.common.status.Status v, v, v, v;
java.lang.Object v, v, v, v;
org.apache.dubbo.config.spring.status.DataSourceStatusChecker v;
v := @this: org.apache.dubbo.config.spring.status.DataSourceStatusChecker;
v = staticinvoke <org.apache.dubbo.config.spring.extension.SpringExtensionFactory: java.util.Set getContexts()>();
v = interfaceinvoke v.<java.util.Set: java.util.stream.Stream stream()>();
v = staticinvoke <org.apache.dubbo.config.spring.status.DataSourceStatusChecker$nonNull__79: java.util.function.Predicate bootstrap$()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.util.stream.Stream filter(java.util.function.Predicate)>(v);
v = interfaceinvoke v.<java.util.stream.Stream: java.util.Optional findFirst()>();
v = virtualinvoke v.<java.util.Optional: boolean isPresent()>();
if v != 0 goto label;
v = new org.apache.dubbo.common.status.Status;
v = <org.apache.dubbo.common.status.Status$Level: org.apache.dubbo.common.status.Status$Level UNKNOWN>;
specialinvoke v.<org.apache.dubbo.common.status.Status: void <init>(org.apache.dubbo.common.status.Status$Level)>(v);
return v;
label:
v = virtualinvoke v.<java.util.Optional: java.lang.Object get()>();
v = interfaceinvoke v.<org.springframework.context.ApplicationContext: java.util.Map getBeansOfType(java.lang.Class,boolean,boolean)>(class "Ljavax/sql/DataSource;", 0, 0);
v = staticinvoke <org.apache.dubbo.common.utils.CollectionUtils: boolean isEmptyMap(java.util.Map)>(v);
if v == 0 goto label;
v = new org.apache.dubbo.common.status.Status;
v = <org.apache.dubbo.common.status.Status$Level: org.apache.dubbo.common.status.Status$Level UNKNOWN>;
specialinvoke v.<org.apache.dubbo.common.status.Status: void <init>(org.apache.dubbo.common.status.Status$Level)>(v);
return v;
label:
v = <org.apache.dubbo.common.status.Status$Level: org.apache.dubbo.common.status.Status$Level OK>;
v = new java.lang.StringBuilder;
specialinvoke v.<java.lang.StringBuilder: void <init>()>();
v = interfaceinvoke v.<java.util.Map: java.util.Set entrySet()>();
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
v = virtualinvoke v.<java.lang.StringBuilder: int length()>();
if v <= 0 goto label;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(", ");
label:
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getKey()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
label:
v = interfaceinvoke v.<javax.sql.DataSource: java.sql.Connection getConnection()>();
label:
v = interfaceinvoke v.<java.sql.Connection: java.sql.DatabaseMetaData getMetaData()>();
v = interfaceinvoke v.<java.sql.DatabaseMetaData: java.sql.ResultSet getTypeInfo()>();
label:
v = interfaceinvoke v.<java.sql.ResultSet: boolean next()>();
if v != 0 goto label;
v = <org.apache.dubbo.common.status.Status$Level: org.apache.dubbo.common.status.Status$Level ERROR>;
label:
interfaceinvoke v.<java.sql.ResultSet: void close()>();
goto label;
label:
v := @caughtexception;
throw v;
label:
v = interfaceinvoke v.<java.sql.DatabaseMetaData: java.lang.String getURL()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("(");
v = interfaceinvoke v.<java.sql.DatabaseMetaData: java.lang.String getDatabaseProductName()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("-");
v = interfaceinvoke v.<java.sql.DatabaseMetaData: java.lang.String getDatabaseProductVersion()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(")");
label:
interfaceinvoke v.<java.sql.Connection: void close()>();
goto label;
label:
v := @caughtexception;
throw v;
label:
v := @caughtexception;
v = <org.apache.dubbo.config.spring.status.DataSourceStatusChecker: 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 warn(java.lang.String,java.lang.Throwable)>(v, v);
v = new org.apache.dubbo.common.status.Status;
v = virtualinvoke v.<java.lang.Throwable: java.lang.String getMessage()>();
specialinvoke v.<org.apache.dubbo.common.status.Status: void <init>(org.apache.dubbo.common.status.Status$Level,java.lang.String)>(v, v);
return v;
label:
v = new org.apache.dubbo.common.status.Status;
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
specialinvoke v.<org.apache.dubbo.common.status.Status: void <init>(org.apache.dubbo.common.status.Status$Level,java.lang.String)>(v, v);
return 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;
}
static void <clinit>()
{
org.apache.dubbo.common.logger.Logger 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/status/DataSourceStatusChecker;");
<org.apache.dubbo.config.spring.status.DataSourceStatusChecker: org.apache.dubbo.common.logger.Logger logger> = v;
return;
}
}