in dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/OverrideServiceImpl.java [245:281]
public void updateWeight(WeightDTO weightDTO) {
String id = ConvertUtil.getIdFromDTO(weightDTO);
String scope = ConvertUtil.getScopeFromDTO(weightDTO);
String path = getPath(id);
String config = dynamicConfiguration.getConfig(path);
WeightDTO oldWeight = null;
if (config != null) {
OverrideDTO overrideDTO = YamlParser.loadObject(config, OverrideDTO.class);
List<OverrideConfig> configs = overrideDTO.getConfigs();
if (configs != null && configs.size() > 0) {
for (OverrideConfig overrideConfig : configs) {
if (Constants.WEIGHT.equals(overrideConfig.getType())) {
if (Constants.SERVICE.equals(overrideDTO.getScope())) {
oldWeight = OverrideUtils.configtoWeightDTO(overrideConfig, scope, id);
}
int index = configs.indexOf(overrideConfig);
OverrideConfig newConfig = OverrideUtils.weightDTOtoConfig(weightDTO);
configs.set(index, newConfig);
break;
}
}
dynamicConfiguration.setConfig(path, YamlParser.dumpObject(overrideDTO));
} else {
//throw exception
}
} else {
//throw exception
}
//for 2.6
if (oldWeight != null) {
unregisterWeight(oldWeight);
registerWeight(weightDTO);
}
}