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