private List urlsToProviderList()

in dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/InstanceRegistryQueryHelper.java [157:192]


    private List<Provider> urlsToProviderList(List<InstanceAddressURL> urls) {
        List<Provider> providers = Lists.newArrayList();
        urls.stream().distinct().forEach(url -> {
            ServiceInstance instance = url.getInstance();
            MetadataInfo metadataInfo = url.getMetadataInfo();

            metadataInfo.getServices().forEach((serviceKey, serviceInfo) -> {
                // build consumer url

                ServiceConfigURL consumerUrl = new URLBuilder()
                        .setProtocol(serviceInfo.getProtocol())
                        .setPath(serviceInfo.getPath())
                        .addParameter("group", serviceInfo.getGroup())
                        .addParameter("version", serviceInfo.getVersion())
                        .build();
                RpcContext.getServiceContext().setConsumerUrl(consumerUrl);
                Provider p = new Provider();
                String service = serviceInfo.getServiceKey();
                p.setService(service);
                p.setAddress(url.getAddress());
                p.setApplication(instance.getServiceName());
                p.setUrl(url.toFullString());
                p.setDynamic(url.getParameter("dynamic", true));
                p.setEnabled(url.getParameter(Constants.ENABLED_KEY, true));
                p.setSerialization(url.getParameter(org.apache.dubbo.remoting.Constants.SERIALIZATION_KEY, "hessian2"));
                p.setTimeout(url.getParameter(CommonConstants.TIMEOUT_KEY, CommonConstants.DEFAULT_TIMEOUT));
                p.setWeight(url.getParameter(Constants.WEIGHT_KEY, Constants.DEFAULT_WEIGHT));
                p.setUsername(url.getParameter("owner"));
                p.setRegistrySource(RegistrySource.INSTANCE);
                providers.add(p);

                RpcContext.getServiceContext().setConsumerUrl(null);
            });
        });
        return providers;
    }