diff --git a/src/main/java/com/alibaba/druid/support/http/stat/WebAppStatUtils.java b/src/main/java/com/alibaba/druid/support/http/stat/WebAppStatUtils.java index 50e9fdb9b9..33b583ad59 100644 --- a/src/main/java/com/alibaba/druid/support/http/stat/WebAppStatUtils.java +++ b/src/main/java/com/alibaba/druid/support/http/stat/WebAppStatUtils.java @@ -13,6 +13,10 @@ public class WebAppStatUtils { @SuppressWarnings("unchecked") public static Map getStatData(Object webStat) { + if (webStat.getClass() == WebAppStat.class) { + return ((WebAppStat) webStat).getStatData(); + } + try { Method method = webStat.getClass().getMethod("getStatData"); Object obj = method.invoke(webStat); @@ -22,9 +26,13 @@ public class WebAppStatUtils { return null; } } - + @SuppressWarnings("unchecked") public static List> getURIStatDataList(Object webStat) { + if (webStat.getClass() == WebAppStat.class) { + return ((WebAppStat) webStat).getURIStatDataList(); + } + try { Method method = webStat.getClass().getMethod("getURIStatDataList"); Object obj = method.invoke(webStat); @@ -34,9 +42,13 @@ public class WebAppStatUtils { return null; } } - + @SuppressWarnings("unchecked") public static List> getSessionStatDataList(Object webStat) { + if (webStat.getClass() == WebAppStat.class) { + return ((WebAppStat) webStat).getSessionStatDataList(); + } + try { Method method = webStat.getClass().getMethod("getSessionStatDataList"); Object obj = method.invoke(webStat); diff --git a/src/main/java/com/alibaba/druid/util/DruidDataSourceUtils.java b/src/main/java/com/alibaba/druid/util/DruidDataSourceUtils.java index 49dc8d1741..b19070b1fe 100644 --- a/src/main/java/com/alibaba/druid/util/DruidDataSourceUtils.java +++ b/src/main/java/com/alibaba/druid/util/DruidDataSourceUtils.java @@ -6,6 +6,7 @@ import java.util.Map; import javax.management.ObjectName; +import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.support.logging.Log; import com.alibaba.druid.support.logging.LogFactory; @@ -14,6 +15,10 @@ public class DruidDataSourceUtils { private final static Log LOG = LogFactory.getLog(DruidDataSourceUtils.class); public static String getUrl(Object druidDatasource) { + if (druidDatasource.getClass() == DruidDataSource.class) { + return ((DruidDataSource) druidDatasource).getUrl(); + } + try { Method method = druidDatasource.getClass().getMethod("getUrl"); Object obj = method.invoke(druidDatasource); @@ -25,6 +30,10 @@ public class DruidDataSourceUtils { } public static ObjectName getObjectName(Object druidDatasource) { + if (druidDatasource.getClass() == DruidDataSource.class) { + return ((DruidDataSource) druidDatasource).getObjectName(); + } + try { Method method = druidDatasource.getClass().getMethod("getObjectName"); Object obj = method.invoke(druidDatasource); @@ -36,6 +45,10 @@ public class DruidDataSourceUtils { } public static Object getSqlStat(Object druidDatasource, int sqlId) { + if (druidDatasource.getClass() == DruidDataSource.class) { + return ((DruidDataSource) druidDatasource).getSqlStat(sqlId); + } + try { Method method = druidDatasource.getClass().getMethod("getSqlStat", int.class); Object obj = method.invoke(druidDatasource, sqlId); @@ -47,6 +60,10 @@ public class DruidDataSourceUtils { } public static boolean isRemoveAbandoned(Object druidDatasource) { + if (druidDatasource.getClass() == DruidDataSource.class) { + return ((DruidDataSource) druidDatasource).isRemoveAbandoned(); + } + try { Method method = druidDatasource.getClass().getMethod("isRemoveAbandoned"); Object obj = method.invoke(druidDatasource); @@ -59,6 +76,10 @@ public class DruidDataSourceUtils { @SuppressWarnings("unchecked") public static Map getStatDataForMBean(Object druidDatasource) { + if (druidDatasource.getClass() == DruidDataSource.class) { + return ((DruidDataSource) druidDatasource).getStatDataForMBean(); + } + try { Method method = druidDatasource.getClass().getMethod("getStatDataForMBean"); Object obj = method.invoke(druidDatasource); @@ -71,6 +92,10 @@ public class DruidDataSourceUtils { @SuppressWarnings("unchecked") public static Map getStatData(Object druidDatasource) { + if (druidDatasource.getClass() == DruidDataSource.class) { + return ((DruidDataSource) druidDatasource).getStatData(); + } + try { Method method = druidDatasource.getClass().getMethod("getStatData"); Object obj = method.invoke(druidDatasource); @@ -83,6 +108,10 @@ public class DruidDataSourceUtils { @SuppressWarnings({ "rawtypes" }) public static Map getSqlStatMap(Object druidDatasource) { + if (druidDatasource.getClass() == DruidDataSource.class) { + return ((DruidDataSource) druidDatasource).getSqlStatMap(); + } + try { Method method = druidDatasource.getClass().getMethod("getSqlStatMap"); Object obj = method.invoke(druidDatasource); @@ -95,6 +124,10 @@ public class DruidDataSourceUtils { @SuppressWarnings("unchecked") public static List> getPoolingConnectionInfo(Object druidDatasource) { + if (druidDatasource.getClass() == DruidDataSource.class) { + return ((DruidDataSource) druidDatasource).getPoolingConnectionInfo(); + } + try { Method method = druidDatasource.getClass().getMethod("getPoolingConnectionInfo"); Object obj = method.invoke(druidDatasource); @@ -107,6 +140,10 @@ public class DruidDataSourceUtils { @SuppressWarnings("unchecked") public static List getActiveConnectionStackTrace(Object druidDatasource) { + if (druidDatasource.getClass() == DruidDataSource.class) { + return ((DruidDataSource) druidDatasource).getActiveConnectionStackTrace(); + } + try { Method method = druidDatasource.getClass().getMethod("getActiveConnectionStackTrace"); Object obj = method.invoke(druidDatasource); diff --git a/src/main/java/com/alibaba/druid/util/JdbcSqlStatUtils.java b/src/main/java/com/alibaba/druid/util/JdbcSqlStatUtils.java index 7540df8f61..248cc9f3c1 100644 --- a/src/main/java/com/alibaba/druid/util/JdbcSqlStatUtils.java +++ b/src/main/java/com/alibaba/druid/util/JdbcSqlStatUtils.java @@ -3,6 +3,7 @@ package com.alibaba.druid.util; import java.lang.reflect.Method; import java.util.Map; +import com.alibaba.druid.stat.JdbcSqlStat; import com.alibaba.druid.support.logging.Log; import com.alibaba.druid.support.logging.LogFactory; @@ -13,6 +14,10 @@ public class JdbcSqlStatUtils { @SuppressWarnings("unchecked") public static Map getData(Object jdbcSqlStat) { try { + if (jdbcSqlStat.getClass() == JdbcSqlStat.class) { + return ((JdbcSqlStat) jdbcSqlStat).getData(); + } + Method method = jdbcSqlStat.getClass().getMethod("getData"); Object obj = method.invoke(jdbcSqlStat); return (Map) obj;