in dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/RouteServiceImpl.java [139:172]
public void createAccess(AccessDTO accessDTO) {
String id = ConvertUtil.getIdFromDTO(accessDTO);
String path = getPath(id, Constants.CONDITION_ROUTE);
String config = dynamicConfiguration.getConfig(path);
List<String> blackWhiteList = RouteUtils.convertToBlackWhiteList(accessDTO);
RoutingRule ruleDTO;
if (config == null) {
ruleDTO = new RoutingRule();
ruleDTO.setEnabled(true);
if (StringUtils.isNoneEmpty(accessDTO.getApplication())) {
ruleDTO.setKey(accessDTO.getApplication());
ruleDTO.setScope(Constants.APPLICATION);
} else {
ruleDTO.setKey(accessDTO.getService().replace("/", "*"));
ruleDTO.setScope(Constants.SERVICE);
}
ruleDTO.setConditions(blackWhiteList);
} else {
ruleDTO = YamlParser.loadObject(config, RoutingRule.class);
if (ruleDTO.getConditions() == null) {
ruleDTO.setConditions(blackWhiteList);
} else {
ruleDTO.getConditions().addAll(blackWhiteList);
}
}
dynamicConfiguration.setConfig(path, YamlParser.dumpObject(ruleDTO));
//for 2.6
if (ruleDTO.getScope().equals("service")) {
Route route = RouteUtils.convertAccessDTOtoRoute(accessDTO);
registry.register(route.toUrl());
}
}