@Override public DiscoveryTreeNode discovery(DiscoveryContext context, DiscoveryTreeNode parent) { String expectTransportName = findTransportName(context, parent); return parent.children() .computeIfAbsent(expectTransportName, etn -> createDiscoveryTreeNode(expectTransportName, context, parent)); }
@SuppressWarnings("unchecked") protected DiscoveryTreeNode createDiscoveryTreeNode(String expectTransportName, DiscoveryContext context, DiscoveryTreeNode parent) { List<Object> endpoints = new ArrayList<>(); for (MicroserviceInstance instance : ((Map<String, MicroserviceInstance>) parent.data()).values()) { for (String endpoint : instance.getEndpoints()) { try { URI uri = URI.create(endpoint); String transportName = uri.getScheme(); if (!isTransportNameMatch(transportName, expectTransportName)) { continue; } Object objEndpoint = createEndpoint(transportName, endpoint, instance); if (objEndpoint == null) { continue; } endpoints.add(objEndpoint); } catch (Exception e) { LOGGER.warn("unrecognized address find, ignore {}.", endpoint); } } } return new DiscoveryTreeNode() .subName(parent, expectTransportName) .data(endpoints); }
@Override public DiscoveryTreeNode discovery(DiscoveryContext context, DiscoveryTreeNode parent) { String expectTransportName = findTransportName(context, parent); return parent.children() .computeIfAbsent(expectTransportName, etn -> createDiscoveryTreeNode(expectTransportName, context, parent)); }
@SuppressWarnings("unchecked") protected DiscoveryTreeNode createDiscoveryTreeNode(String expectTransportName, DiscoveryContext context, DiscoveryTreeNode parent) { List<Object> endpoints = new ArrayList<>(); for (MicroserviceInstance instance : ((Map<String, MicroserviceInstance>) parent.data()).values()) { for (String endpoint : instance.getEndpoints()) { try { URI uri = URI.create(endpoint); String transportName = uri.getScheme(); if (!isTransportNameMatch(transportName, expectTransportName)) { continue; } Object objEndpoint = createEndpoint(transportName, endpoint, instance); if (objEndpoint == null) { continue; } endpoints.add(objEndpoint); } catch (Exception e) { LOGGER.warn("unrecognized address find, ignore {}.", endpoint); } } } return new DiscoveryTreeNode() .subName(parent, expectTransportName) .data(endpoints); }