diff --git a/src/main/java/com/alibaba/druid/support/http/stat/WebAppStatManager.java b/src/main/java/com/alibaba/druid/support/http/stat/WebAppStatManager.java index 5d50952da8..aa912c9485 100644 --- a/src/main/java/com/alibaba/druid/support/http/stat/WebAppStatManager.java +++ b/src/main/java/com/alibaba/druid/support/http/stat/WebAppStatManager.java @@ -1,5 +1,8 @@ package com.alibaba.druid.support.http.stat; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; import java.util.Properties; import java.util.Set; import java.util.concurrent.CopyOnWriteArraySet; @@ -24,6 +27,19 @@ public class WebAppStatManager { return webAppStatSet; } + public List> getWebAppStatData() { + Set stats = getWebAppStatSet(); + + List> statDataList = new ArrayList>(stats.size()); + + for (Object stat : stats) { + Map statData = WebAppStatUtils.getStatData(stat); + statDataList.add(statData); + } + + return statDataList; + } + public void addWebAppStatSet(Object webAppStat) { getWebAppStatSet().add(webAppStat); } 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 new file mode 100644 index 0000000000..ad2c45244e --- /dev/null +++ b/src/main/java/com/alibaba/druid/support/http/stat/WebAppStatUtils.java @@ -0,0 +1,24 @@ +package com.alibaba.druid.support.http.stat; + +import java.lang.reflect.Method; +import java.util.Map; + +import com.alibaba.druid.support.logging.Log; +import com.alibaba.druid.support.logging.LogFactory; + +public class WebAppStatUtils { + + private final static Log LOG = LogFactory.getLog(WebAppStatUtils.class); + + @SuppressWarnings("unchecked") + public static Map getStatData(Object webStat) { + try { + Method method = webStat.getClass().getMethod("getStatData"); + Object obj = method.invoke(webStat); + return (Map) obj; + } catch (Exception e) { + LOG.error("getStatData error", e); + return null; + } + } +}