in shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DiscoveryServiceImpl.java [456:521]
public ConfigImportResult importData(final String namespace, final List<DiscoveryDTO> discoveryList, final ConfigsImportContext context) {
if (CollectionUtils.isEmpty(discoveryList)) {
return ConfigImportResult.success();
}
Map<String, String> discoveryHandlerIdMapping = context.getDiscoveryHandlerIdMapping();
Map<String, List<DiscoveryDO>> pluginDiscoveryMap = discoveryMapper
.selectAllByNamespaceId(namespace)
.stream()
.collect(Collectors.groupingBy(DiscoveryDO::getPluginName));
int successCount = 0;
StringBuilder errorMsgBuilder = new StringBuilder();
for (DiscoveryDTO discoveryDTO : discoveryList) {
String pluginName = discoveryDTO.getPluginName();
String discoveryName = discoveryDTO.getName();
Set<String> existDiscoveryNameSet = pluginDiscoveryMap
.getOrDefault(pluginName, Lists.newArrayList())
.stream()
.map(DiscoveryDO::getName)
.collect(Collectors.toSet());
if (existDiscoveryNameSet.contains(discoveryName)) {
errorMsgBuilder
.append(discoveryName)
.append(",");
continue;
}
String discoveryId = UUIDUtils.getInstance().generateShortUuid();
discoveryDTO.setId(discoveryId);
discoveryDTO.setNamespaceId(namespace);
create(discoveryDTO);
successCount++;
// import discovery handler data
String discoveryHandlerId = null;
if (Objects.nonNull(discoveryDTO.getDiscoveryHandler())) {
DiscoveryHandlerDO discoveryHandlerDO = DiscoveryTransfer
.INSTANCE
.mapToDO(discoveryDTO.getDiscoveryHandler());
discoveryHandlerDO.setDiscoveryId(discoveryId);
discoveryHandlerId = UUIDUtils.getInstance().generateShortUuid();
discoveryHandlerIdMapping.put(discoveryHandlerDO.getId(), discoveryHandlerId);
discoveryHandlerDO.setId(discoveryHandlerId);
discoveryHandlerMapper.insertSelective(discoveryHandlerDO);
}
// import discovery rel data
if (Objects.nonNull(discoveryDTO.getDiscoveryRel())) {
DiscoveryRelDO discoveryRelDO = DiscoveryTransfer
.INSTANCE
.mapToDO(discoveryDTO.getDiscoveryRel());
discoveryRelDO.setDiscoveryHandlerId(discoveryHandlerId);
Optional.ofNullable(discoveryRelDO.getSelectorId())
.ifPresent(selectorId -> discoveryRelDO.setSelectorId(context.getSelectorIdMapping().get(selectorId)));
Optional.ofNullable(discoveryRelDO.getProxySelectorId())
.ifPresent(proxySelectorId -> discoveryRelDO.setProxySelectorId(context.getProxySelectorIdMapping().get(proxySelectorId)));
discoveryRelDO.setId(UUIDUtils.getInstance().generateShortUuid());
discoveryRelMapper.insertSelective(discoveryRelDO);
}
}
if (StringUtils.isNotEmpty(errorMsgBuilder)) {
errorMsgBuilder.setLength(errorMsgBuilder.length() - 1);
return ConfigImportResult
.fail(successCount, "import fail discovery: " + errorMsgBuilder);
}
return ConfigImportResult.success(successCount);
}