mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
bug fixed for DruidStatService if wall filter not config
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user