public void updateOverride()

in dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/OverrideServiceImpl.java [78:112]


    public void updateOverride(DynamicConfigDTO update) {
        String id = ConvertUtil.getIdFromDTO(update);
        String path = getPath(id);
        String exitConfig = dynamicConfiguration.getConfig(path);
        if (exitConfig == null) {
            //throw exception
        }
        OverrideDTO overrideDTO = YamlParser.loadObject(exitConfig, OverrideDTO.class);
        DynamicConfigDTO old = OverrideUtils.createFromOverride(overrideDTO);
        List<OverrideConfig> configs = new ArrayList<>();
        if (overrideDTO.getConfigs() != null) {
            List<OverrideConfig> overrideConfigs = overrideDTO.getConfigs();
            for (OverrideConfig config : overrideConfigs) {
                if (Constants.CONFIGS.contains(config.getType())) {
                    configs.add(config);
                }
            }
        }
        configs.addAll(update.getConfigs());
        overrideDTO.setConfigs(configs);
        overrideDTO.setEnabled(update.isEnabled());
        dynamicConfiguration.setConfig(path, YamlParser.dumpObject(overrideDTO));

        //for 2.6
        if (StringUtils.isNotEmpty(update.getService())) {
            List<Override> oldOverrides = convertDTOtoOldOverride(old);
            List<Override> updatedOverrides = convertDTOtoOldOverride(update);
            for (Override o : oldOverrides) {
                registry.unregister(o.toUrl().addParameter(Constants.COMPATIBLE_CONFIG, true));
            }
            for (Override o : updatedOverrides) {
                registry.register(o.toUrl().addParameter(Constants.COMPATIBLE_CONFIG, true));
            }
        }
    }