in dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/MockRuleServiceImpl.java [50:76]
public void createOrUpdateMockRule(MockRuleDTO mockRule) {
if (Objects.isNull(mockRule.getServiceName()) || Objects.isNull(mockRule.getMethodName())
|| Objects.isNull(mockRule.getRule())) {
throw new IllegalStateException("Param serviceName, methodName, rule cannot be null");
}
MockRule rule = MockRule.toMockRule(mockRule);
QueryWrapper<MockRule> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("service_name", mockRule.getServiceName());
queryWrapper.eq("method_name", mockRule.getMethodName());
MockRule existRule = mockRuleMapper.selectOne(queryWrapper);
// check if we can save or update the rule, we need keep the serviceName + methodName is unique.
if (Objects.nonNull(existRule)) {
if (Objects.equals(rule.getServiceName(), existRule.getServiceName())
&& Objects.equals(rule.getMethodName(), existRule.getMethodName())) {
if (!Objects.equals(rule.getId(), existRule.getId())) {
throw new DuplicateKeyException("Service Name and Method Name must be unique");
}
}
}
if (Objects.nonNull(rule.getId())) {
mockRuleMapper.updateById(rule);
return;
}
mockRuleMapper.insert(rule);
}