in trace-java-client/src/main/java/com/amazon/opentelemetry/trace/model/topology/ServiceTier.java [48:82]
private TreeMap<Integer, TagSet> generateMergedTagSets(String routeName) {
TreeMap<Integer, TagSet> treeMap = new TreeMap<>();
int total = 0;
ServiceRoute route = routes.stream().filter((r) -> r.route.equals(routeName)).findFirst().get();
// If we have to merge, merge, otherwise just set the service set.
if (route.tagSets != null && route.tagSets.size() > 0) {
for (TagSet routeSet : route.tagSets) {
if (tagSets.isEmpty()) {
total += routeSet.getWeight();
treeMap.put(total, routeSet);
} else {
for (TagSet serviceSet : tagSets) {
TagSet mergedSet = new TagSet();
mergedSet.tags = new HashMap<>(serviceSet.tags);
mergedSet.inherit = new ArrayList<>(serviceSet.inherit);
mergedSet.tagGenerators = new ArrayList<>(serviceSet.tagGenerators);
mergedSet.tags.putAll(routeSet.tags);
mergedSet.inherit.addAll(routeSet.inherit);
mergedSet.tagGenerators.addAll(routeSet.tagGenerators);
mergedSet.setWeight(routeSet.getWeight() * serviceSet.getWeight());
total += mergedSet.getWeight();
treeMap.put(total, mergedSet);
}
}
}
} else {
for (TagSet serviceSet : tagSets) {
total += serviceSet.getWeight();
treeMap.put(total, serviceSet);
}
}
return treeMap;
}