public void createOrUpdateMockRule()

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);
    }