private TreeMap generateMergedTagSets()

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;
  }