From 884f9d372bab12a389f2022ff7d779ed891b0c66 Mon Sep 17 00:00:00 2001 From: wenshao Date: Wed, 29 Aug 2012 07:16:02 +0800 Subject: [PATCH 1/2] remove compile warnnings --- src/main/java/com/alibaba/druid/filter/Filter.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/alibaba/druid/filter/Filter.java b/src/main/java/com/alibaba/druid/filter/Filter.java index a7f4845231..b7ec85617c 100644 --- a/src/main/java/com/alibaba/druid/filter/Filter.java +++ b/src/main/java/com/alibaba/druid/filter/Filter.java @@ -46,7 +46,6 @@ import java.util.Properties; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.DruidPooledConnection; -import com.alibaba.druid.proxy.config.AbstractDruidFilterConfig; import com.alibaba.druid.proxy.jdbc.CallableStatementProxy; import com.alibaba.druid.proxy.jdbc.ClobProxy; import com.alibaba.druid.proxy.jdbc.ConnectionProxy; From 597a8e04441978e8bb27b5e17328d868ba20dc0a Mon Sep 17 00:00:00 2001 From: wenshao Date: Wed, 29 Aug 2012 07:28:40 +0800 Subject: [PATCH 2/2] sql.html & sql.json support parameter : dataSourceId --- .../druid/stat/DruidStatManagerFacade.java | 6 +- .../alibaba/druid/stat/DruidStatService.java | 56 +++++++++++++++---- .../druid/util/DruidDataSourceUtils.java | 15 +++++ .../com/alibaba/druid/util/StringUtils.java | 23 -------- .../support/http/resources/datasource.html | 2 + .../resources/support/http/resources/sql.html | 5 +- 6 files changed, 71 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/alibaba/druid/stat/DruidStatManagerFacade.java b/src/main/java/com/alibaba/druid/stat/DruidStatManagerFacade.java index fbf6e386f8..a4886a56f6 100644 --- a/src/main/java/com/alibaba/druid/stat/DruidStatManagerFacade.java +++ b/src/main/java/com/alibaba/druid/stat/DruidStatManagerFacade.java @@ -133,9 +133,13 @@ public class DruidStatManagerFacade { return null; } - public List> getSqlStatDataList() { + public List> getSqlStatDataList(Integer dataSourceId) { List> result = new ArrayList>(); for (Object datasource : getDruidDataSourceInstances()) { + if (dataSourceId != null && dataSourceId.intValue() != System.identityHashCode(datasource)) { + continue; + } + for (Object sqlStat : DruidDataSourceUtils.getSqlStatMap(datasource).values()) { Map data = JdbcSqlStatUtils.getData(sqlStat); diff --git a/src/main/java/com/alibaba/druid/stat/DruidStatService.java b/src/main/java/com/alibaba/druid/stat/DruidStatService.java index 3e38805d60..a597f60e1b 100644 --- a/src/main/java/com/alibaba/druid/stat/DruidStatService.java +++ b/src/main/java/com/alibaba/druid/stat/DruidStatService.java @@ -79,7 +79,7 @@ public class DruidStatService implements DruidStatServiceMBean { public String service(String url) { - Map parameters = StringUtils.getParameters(url); + Map parameters = getParameters(url); if (url.equals("/basic.json")) { return returnJSONResult(RESULT_CODE_SUCCESS, statManagerFacade.returnJSONBasicStat()); @@ -138,7 +138,7 @@ public class DruidStatService implements DruidStatServiceMBean { if (url.startsWith("/webapp.json")) { return returnJSONResult(RESULT_CODE_SUCCESS, getWebAppStatDataList(parameters)); } - + if (url.startsWith("/websession.json")) { return returnJSONResult(RESULT_CODE_SUCCESS, getWebSessionStatDataList(parameters)); } @@ -187,7 +187,7 @@ public class DruidStatService implements DruidStatServiceMBean { List> array = WebAppStatManager.getInstance().getSessionStatData(); return comparatorOrderBy(array, parameters); } - + private List> getWebAppStatDataList(Map parameters) { List> array = WebAppStatManager.getInstance().getWebAppStatData(); return comparatorOrderBy(array, parameters); @@ -199,7 +199,8 @@ public class DruidStatService implements DruidStatServiceMBean { // when parameters is null String orderBy, orderType = null; - Integer page, perPageCount = null; + Integer page = DEFAULT_PAGE; + Integer perPageCount = DEFAULT_PER_PAGE_COUNT; if (parameters == null) { orderBy = DEFAULT_ORDER_TYPE; orderType = DEFAULT_ORDER_TYPE; @@ -208,15 +209,19 @@ public class DruidStatService implements DruidStatServiceMBean { } else { orderBy = parameters.get("orderBy"); orderType = parameters.get("orderType"); - page = Integer.parseInt(parameters.get("page")); - perPageCount = Integer.parseInt(parameters.get("perPageCount")); + String pageParam = parameters.get("page"); + if (pageParam != null && pageParam.length() != 0) { + page = Integer.parseInt(pageParam); + } + String pageCountParam = parameters.get("perPageCount"); + if (pageCountParam != null && pageCountParam.length() > 0) { + perPageCount = Integer.parseInt(pageCountParam); + } } // others,such as order orderBy = orderBy == null ? DEFAULT_ORDERBY : orderBy; orderType = orderType == null ? DEFAULT_ORDER_TYPE : orderType; - page = page == null ? DEFAULT_PAGE : page; - perPageCount = perPageCount == null ? DEFAULT_PER_PAGE_COUNT : perPageCount; if (!"desc".equals(orderType)) orderType = DEFAULT_ORDER_TYPE; @@ -234,8 +239,16 @@ public class DruidStatService implements DruidStatServiceMBean { } private List> getSqlStatDataList(Map parameters) { - List> array = statManagerFacade.getSqlStatDataList(); - return comparatorOrderBy(array, parameters); + Integer dataSourceId = null; + + String dataSourceIdParam = parameters.get("dataSourceId"); + if (dataSourceIdParam != null && dataSourceIdParam.length() > 0) { + dataSourceId = Integer.parseInt(dataSourceIdParam); + } + + List> array = statManagerFacade.getSqlStatDataList(dataSourceId); + List> sortedArray = comparatorOrderBy(array, parameters); + return sortedArray; } private String getSqlStat(Integer id) { @@ -310,4 +323,27 @@ public class DruidStatService implements DruidStatServiceMBean { } } + public static Map getParameters(String url) { + if (url == null || (url = url.trim()).length() == 0) { + return Collections. emptyMap(); + } + + String parametersStr = StringUtils.subString(url, "?", null); + if (parametersStr == null || parametersStr.length() == 0) { + return Collections. emptyMap(); + } + + String[] parametersArray = parametersStr.split("&"); + Map parameters = new LinkedHashMap(); + + for (String parameterStr : parametersArray) { + int index = parameterStr.indexOf("="); + if (index <= 0) continue; + + String name = parameterStr.substring(0, index); + String value = parameterStr.substring(index + 1); + parameters.put(name, value); + } + return parameters; + } } diff --git a/src/main/java/com/alibaba/druid/util/DruidDataSourceUtils.java b/src/main/java/com/alibaba/druid/util/DruidDataSourceUtils.java index 4720e6c1af..fd9a5cceba 100644 --- a/src/main/java/com/alibaba/druid/util/DruidDataSourceUtils.java +++ b/src/main/java/com/alibaba/druid/util/DruidDataSourceUtils.java @@ -44,6 +44,21 @@ public class DruidDataSourceUtils { } } + public static long getID(Object druidDatasource) { + if (druidDatasource.getClass() == DruidDataSource.class) { + return ((DruidDataSource) druidDatasource).getID(); + } + + try { + Method method = druidDatasource.getClass().getMethod("getID"); + Object obj = method.invoke(druidDatasource); + return (Long) obj; + } catch (Exception e) { + LOG.error("getID error", e); + return -1; + } + } + public static String getName(Object druidDatasource) { if (druidDatasource.getClass() == DruidDataSource.class) { return ((DruidDataSource) druidDatasource).getName(); diff --git a/src/main/java/com/alibaba/druid/util/StringUtils.java b/src/main/java/com/alibaba/druid/util/StringUtils.java index 7b8e7dabd2..5edb3d7cd0 100644 --- a/src/main/java/com/alibaba/druid/util/StringUtils.java +++ b/src/main/java/com/alibaba/druid/util/StringUtils.java @@ -15,9 +15,6 @@ */ package com.alibaba.druid.util; -import java.util.LinkedHashMap; -import java.util.Map; - import com.alibaba.druid.support.logging.Log; import com.alibaba.druid.support.logging.LogFactory; @@ -75,26 +72,6 @@ public class StringUtils { } } - public static Map getParameters(String url) { - if (url == null || (url = url.trim()).length() == 0) return null; - - String parametersStr = subString(url, "?", null); - if (parametersStr == null || parametersStr.length() == 0) return null; - - String[] parametersArray = parametersStr.split("&"); - Map parameters = new LinkedHashMap(); - - for (String parameterStr : parametersArray) { - int index = parameterStr.indexOf("="); - if (index <= 0) continue; - - String name = parameterStr.substring(0, index); - String value = parameterStr.substring(index + 1); - parameters.put(name, value); - } - return parameters; - } - public static boolean equals(String a, String b) { if (a == null) { return b == null; diff --git a/src/main/resources/support/http/resources/datasource.html b/src/main/resources/support/http/resources/datasource.html index 7170193d88..28f7b2908e 100644 --- a/src/main/resources/support/http/resources/datasource.html +++ b/src/main/resources/support/http/resources/datasource.html @@ -118,6 +118,8 @@ html += 'PollingConnection InfoViewInfo for polling connection. [View JSON API]' + html += 'SQL ListViewInfo for SQL. [View JSON API]' html += ''; return html; diff --git a/src/main/resources/support/http/resources/sql.html b/src/main/resources/support/http/resources/sql.html index 939a33cf18..2d7055c825 100644 --- a/src/main/resources/support/http/resources/sql.html +++ b/src/main/resources/support/http/resources/sql.html @@ -75,14 +75,15 @@