public Set convertProviders2DTO()

in dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/ProviderServiceImpl.java [313:351]


    public Set<ServiceDTO> convertProviders2DTO(List<Provider> providers) {
        Set<ServiceDTO> result = new TreeSet<>();
        Map<String, List<Provider>> providerMap = providers.stream().collect(Collectors.groupingBy(Provider::getService));
        for (Map.Entry<String, List<Provider>> entry : providerMap.entrySet()) {
            String service = entry.getKey();
            String group = Tool.getGroup(service);
            String version = Tool.getVersion(service);
            String interfaze = Tool.getInterface(service);

            List<Provider> value = entry.getValue();
            if (value.size() == 1) {
                Provider provider = value.get(0);
                ServiceDTO s = new ServiceDTO();
                s.setAppName(provider.getApplication());
                s.setService(interfaze);
                s.setGroup(group);
                s.setVersion(version);
                s.setRegistrySource(provider.getRegistrySource());
                result.add(s);
            } else {
                String app = value.stream().map(Provider::getApplication).distinct().collect(Collectors.joining(", "));
                RegistrySource registrySource = value.get(0).getRegistrySource();

                boolean matchInterface = value.stream().map(Provider::getRegistrySource).anyMatch(e -> e.equals(RegistrySource.INTERFACE));
                boolean matchInstance = value.stream().map(Provider::getRegistrySource).anyMatch(e -> e.equals(RegistrySource.INSTANCE));
                if (matchInterface && matchInstance) {
                    registrySource = RegistrySource.ALL;
                }
                ServiceDTO s = new ServiceDTO();
                s.setAppName(app);
                s.setService(interfaze);
                s.setGroup(group);
                s.setVersion(version);
                s.setRegistrySource(registrySource);
                result.add(s);
            }
        }
        return result;
    }