diff --git a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/custom/SentinelDataSourceHandler.java b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/custom/SentinelDataSourceHandler.java index 4121d198..436a9ff5 100644 --- a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/custom/SentinelDataSourceHandler.java +++ b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/custom/SentinelDataSourceHandler.java @@ -51,6 +51,8 @@ import com.alibaba.csp.sentinel.slots.block.degrade.DegradeRule; import com.alibaba.csp.sentinel.slots.block.degrade.DegradeRuleManager; import com.alibaba.csp.sentinel.slots.block.flow.FlowRule; import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager; +import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowRule; +import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowRuleManager; import com.alibaba.csp.sentinel.slots.system.SystemRule; import com.alibaba.csp.sentinel.slots.system.SystemRuleManager; @@ -71,7 +73,8 @@ public class SentinelDataSourceHandler { private List dataTypeList = Arrays.asList("json", "xml"); private List> rulesList = Arrays.asList(FlowRule.class, - DegradeRule.class, SystemRule.class, AuthorityRule.class); + DegradeRule.class, SystemRule.class, AuthorityRule.class, + ParamFlowRule.class); private List dataSourceBeanNameList = Collections .synchronizedList(new ArrayList()); @@ -163,9 +166,12 @@ public class SentinelDataSourceHandler { else if (ruleType == SystemRule.class) { SystemRuleManager.register2Property(sentinelProperty); } - else { + else if (ruleType == AuthorityRule.class) { AuthorityRuleManager.register2Property(sentinelProperty); } + else { + ParamFlowRuleManager.register2Property(sentinelProperty); + } } } } @@ -337,14 +343,15 @@ public class SentinelDataSourceHandler { } private boolean checkAllRuleTypeSame(List convertedRuleList) { - int matchCount = 0; - for(Object rule : convertedRuleList) { - if(rulesList.contains(rule.getClass()) && rule.getClass() == convertedRuleList.get(0).getClass()) { - matchCount ++; - } - } - return matchCount == convertedRuleList.size(); - } + int matchCount = 0; + for (Object rule : convertedRuleList) { + if (rulesList.contains(rule.getClass()) + && rule.getClass() == convertedRuleList.get(0).getClass()) { + matchCount++; + } + } + return matchCount == convertedRuleList.size(); + } public List getDataSourceBeanNameList() { return dataSourceBeanNameList;