bug fixed for DruidStatService if wall filter not config

This commit is contained in:
wenshao
2013-05-28 21:38:11 +08:00
parent 8ccf9cb220
commit 47d4667b03
4 changed files with 51 additions and 18 deletions
@@ -17,5 +17,7 @@ package com.alibaba.druid;
public interface Constants {
public final static String DRUID_STAT_SQL_MAX_SIZE = "druid.stat.sql.MaxSize";
public final static String DRUID_STAT_SQL_MAX_SIZE = "druid.stat.sql.MaxSize";
public final static String DRUID_TIME_BETWEEN_LOG_STATS_MILLIS = "druid.timeBetweenLogStatsMillis";
}
@@ -191,13 +191,13 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat
}
}
{
String property = properties.getProperty("druid.timeBetweenLogStatsMillis");
String property = properties.getProperty(Constants.DRUID_TIME_BETWEEN_LOG_STATS_MILLIS);
if (property != null && property.length() > 0) {
try {
long value = Long.parseLong(property);
this.setTimeBetweenLogStatsMillis(value);
} catch (NumberFormatException e) {
LOG.error("illegal property 'timeBetweenLogStatsMillis'", e);
LOG.error("illegal property '" + Constants.DRUID_TIME_BETWEEN_LOG_STATS_MILLIS + "'", e);
}
}
}
@@ -419,21 +419,21 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat
if (inited && LOG.isInfoEnabled()) {
LOG.info("connectProperties changed : " + this.connectProperties + " -> " + properties);
}
configFromPropety(properties);
for (Filter filter : this.filters) {
filter.configFromProperties(properties);
}
if (exceptionSorter != null) {
exceptionSorter.configFromProperties(properties);
}
if (validConnectionChecker != null) {
validConnectionChecker.configFromProperties(properties);
}
if (statLogger != null) {
statLogger.configFromProperties(properties);
}
@@ -17,8 +17,10 @@ package com.alibaba.druid.pool;
import java.util.Date;
import java.util.List;
import java.util.Map;
import com.alibaba.druid.stat.JdbcSqlStatValue;
import com.alibaba.druid.support.json.JSONUtils;
public class DruidDataSourceStatValue {
@@ -78,6 +80,27 @@ public class DruidDataSourceStatValue {
protected long sqlSkipCount;
protected List<JdbcSqlStatValue> sqlList;
@SuppressWarnings("unchecked")
public void fromJSON(String json) {
// protected String dbType;
// protected String driverClassName;
// protected String url;
// protected String userName;
// protected List<String> filterClassNames;
// protected boolean removeAbandoned;
//
Map<String, Object> map = (Map<String, Object>) JSONUtils.parse(json);
fromJSON(map);
}
public void fromJSON(Map<String, Object> map) {
this.name = (String) map.get("name");
this.dbType = (String) map.get("dbType");
this.driverClassName = (String) map.get("driverClassName");
this.url = (String) map.get("url");
this.userName = (String) map.get("userName");
}
public Date getPoolingPeakTime() {
if (poolingPeakTime <= 0) {
@@ -482,5 +505,6 @@ public class DruidDataSourceStatValue {
public void setPoolingPeakTime(long poolingPeakTime) {
this.poolingPeakTime = poolingPeakTime;
}
}
@@ -120,11 +120,11 @@ public final class DruidStatService implements DruidStatServiceMBean {
if (url.startsWith("/sql.json")) {
return returnJSONResult(RESULT_CODE_SUCCESS, getSqlStatDataList(parameters));
}
if (url.startsWith("/wall.json")) {
return returnJSONResult(RESULT_CODE_SUCCESS, getWallStatMap(parameters));
return returnJSONResult(RESULT_CODE_SUCCESS, getWallStatMap(parameters));
}
if (url.startsWith("/wall-") && url.indexOf(".json") > 0) {
Integer dataSourceId = StringUtils.subStringToInteger(url, "wall-", ".json");
Object result = statManagerFacade.getWallStatMap(dataSourceId);
@@ -266,7 +266,7 @@ public final class DruidStatService implements DruidStatServiceMBean {
List<Map<String, Object>> sortedArray = comparatorOrderBy(array, parameters);
return sortedArray;
}
@SuppressWarnings("unchecked")
public Map<String, Object> getWallStatMap(Map<String, String> parameters) {
Integer dataSourceId = null;
@@ -275,14 +275,21 @@ public final class DruidStatService implements DruidStatServiceMBean {
if (dataSourceIdParam != null && dataSourceIdParam.length() > 0) {
dataSourceId = Integer.parseInt(dataSourceIdParam);
}
Map<String, Object> result = statManagerFacade.getWallStatMap(dataSourceId);
List<Map<String, Object>> sortedArray = comparatorOrderBy((List<Map<String, Object>>)result.get("tables"), parameters);
result.put("tables", sortedArray);
sortedArray = comparatorOrderBy((List<Map<String, Object>>)result.get("functions"), parameters);
result.put("functions", sortedArray);
if (result != null) {
List<Map<String, Object>> tables = (List<Map<String, Object>>) result.get("tables");
if (tables != null) {
List<Map<String, Object>> sortedArray = comparatorOrderBy(tables, parameters);
result.put("tables", sortedArray);
sortedArray = comparatorOrderBy((List<Map<String, Object>>) result.get("functions"), parameters);
result.put("functions", sortedArray);
}
} else {
result = Collections.emptyMap();
}
return result;
}