public void addOrUpdateAclTopicConfig()

in src/main/java/org/apache/rocketmq/dashboard/service/impl/AclServiceImpl.java [154:184]


    public void addOrUpdateAclTopicConfig(AclRequest request) {
        try {
            PlainAccessConfig addConfig = request.getConfig();
            for (String addr : getBrokerAddrs()) {
                AclConfig aclConfig = mqAdminExt.examineBrokerClusterAclConfig(addr);
                PlainAccessConfig remoteConfig = null;
                if (aclConfig.getPlainAccessConfigs() != null) {
                    for (PlainAccessConfig config : aclConfig.getPlainAccessConfigs()) {
                        if (config.getAccessKey().equals(addConfig.getAccessKey())) {
                            remoteConfig = config;
                            break;
                        }
                    }
                }
                if (remoteConfig == null) {
                    // Maybe the broker no acl config of the access key, therefore add it;
                    mqAdminExt.createAndUpdatePlainAccessConfig(addr, addConfig);
                } else {
                    if (remoteConfig.getTopicPerms() == null) {
                        remoteConfig.setTopicPerms(new ArrayList<>());
                    }
                    removeExist(remoteConfig.getTopicPerms(), request.getTopicPerm().split("=")[0]);
                    remoteConfig.getTopicPerms().add(request.getTopicPerm());
                    mqAdminExt.createAndUpdatePlainAccessConfig(addr, remoteConfig);
                }
            }
        } catch (Exception e) {
            Throwables.throwIfUnchecked(e);
            throw new RuntimeException(e);
        }
    }