From 5a67bfdd730b2da0ac6d6f4c117d9b0d50f1e087 Mon Sep 17 00:00:00 2001 From: wenshao Date: Sun, 12 Aug 2012 14:48:29 +0800 Subject: [PATCH] add webStat support --- .../alibaba/druid/support/JSONDruidStatService.java | 2 +- .../alibaba/druid/support/http/stat/WebAppStat.java | 13 +++++++++---- .../druid/support/http/stat/WebAppStatManager.java | 13 +++++++++++++ .../druid/support/http/stat/WebAppStatUtils.java | 13 +++++++++++++ 4 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/alibaba/druid/support/JSONDruidStatService.java b/src/main/java/com/alibaba/druid/support/JSONDruidStatService.java index 971002bef5..75f488e751 100644 --- a/src/main/java/com/alibaba/druid/support/JSONDruidStatService.java +++ b/src/main/java/com/alibaba/druid/support/JSONDruidStatService.java @@ -91,7 +91,7 @@ public class JSONDruidStatService { } private List> getWebURIStatDataList(Map parameters) { - List> array = WebAppStatManager.getInstance().getWebAppStatData(); + List> array = WebAppStatManager.getInstance().getURIStatData(); return array; } diff --git a/src/main/java/com/alibaba/druid/support/http/stat/WebAppStat.java b/src/main/java/com/alibaba/druid/support/http/stat/WebAppStat.java index bebe1ff575..d74c3339b3 100644 --- a/src/main/java/com/alibaba/druid/support/http/stat/WebAppStat.java +++ b/src/main/java/com/alibaba/druid/support/http/stat/WebAppStat.java @@ -135,6 +135,14 @@ public class WebAppStat { data.put("ConcurrentMax", this.getConcurrentMax()); data.put("RequestCount", this.getRequestCount()); + List> uriStatDataList = getURIStatDataList(); + + data.put("URIList", uriStatDataList); + + return data; + } + + public List> getURIStatDataList() { List> uriStatDataList = new ArrayList>(this.uriStatMap.size()); for (WebURIStat uriStat : this.uriStatMap.values()) { Map uriStatData = uriStat.getStatData(); @@ -148,10 +156,7 @@ public class WebAppStat { uriStatDataList.add(uriStatData); } - - data.put("URIList", uriStatDataList); - - return data; + return uriStatDataList; } } 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 aa912c9485..5d773fe550 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 @@ -39,6 +39,19 @@ public class WebAppStatManager { return statDataList; } + + public List> getURIStatData() { + Set stats = getWebAppStatSet(); + + List> allAppUriStatDataList = new ArrayList>(); + + for (Object stat : stats) { + List> uriStatDataList = WebAppStatUtils.getURIStatDataList(stat); + allAppUriStatDataList.addAll(uriStatDataList); + } + + return allAppUriStatDataList; + } 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 index ad2c45244e..5eb46e19c7 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 @@ -1,6 +1,7 @@ package com.alibaba.druid.support.http.stat; import java.lang.reflect.Method; +import java.util.List; import java.util.Map; import com.alibaba.druid.support.logging.Log; @@ -21,4 +22,16 @@ public class WebAppStatUtils { return null; } } + + @SuppressWarnings("unchecked") + public static List> getURIStatDataList(Object webStat) { + try { + Method method = webStat.getClass().getMethod("getURIStatDataList"); + Object obj = method.invoke(webStat); + return (List>) obj; + } catch (Exception e) { + LOG.error("getURIStatDataList error", e); + return null; + } + } }