diff --git a/cat-home/src/main/java/com/dianping/cat/system/config/BaseRuleConfigManager.java b/cat-home/src/main/java/com/dianping/cat/system/config/BaseRuleConfigManager.java index 2f7b8c72820050ef63d52a9efbc2ece08a0ebfd1..caf8d1e6a2a99fb4bd4b0da771bea94c07053807 100644 --- a/cat-home/src/main/java/com/dianping/cat/system/config/BaseRuleConfigManager.java +++ b/cat-home/src/main/java/com/dianping/cat/system/config/BaseRuleConfigManager.java @@ -45,6 +45,7 @@ public abstract class BaseRuleConfigManager { result.addMetricItem(item); } for (Config config : decorateConfigOnRead(rule.getConfigs())) { + transformConfig(config); result.addConfig(config); } return result; @@ -238,6 +239,17 @@ public abstract class BaseRuleConfigManager { return true; } + private void transformConfig(Config config) { + for (Condition condition : config.getConditions()) { + for (SubCondition subCondition : condition.getSubConditions()) { + if (RuleType.UserDefine.getId().equals(subCondition.getType())) { + String userDefineText = subCondition.getText(); + subCondition.setText(userDefineText.replaceAll("\"", "\\\\\"")); + } + } + } + } + public String updateRule(String id, String metricsStr, String configsStr) throws Exception { Rule rule = new Rule(id); List metricItems = DefaultJsonParser.parseArray(MetricItem.class, metricsStr); diff --git a/cat-home/src/main/resources/freemaker/rule_configs.ftl b/cat-home/src/main/resources/freemaker/rule_configs.ftl index b2deb665095e5471665ef966dcdb64855efe230e..cc003c716f60b2f7efa2caf4b2f910a349bf6022 100644 --- a/cat-home/src/main/resources/freemaker/rule_configs.ftl +++ b/cat-home/src/main/resources/freemaker/rule_configs.ftl @@ -83,8 +83,11 @@