|
2 | 2 |
|
3 | 3 | import static com.google.common.collect.ImmutableList.copyOf;
|
4 | 4 | import static com.google.common.collect.Iterables.concat;
|
5 |
| -import static java.util.Collections.unmodifiableMap; |
6 | 5 | import static org.hypertrace.core.graphql.atttributes.scopes.HypertraceCoreAttributeScopeString.SPAN;
|
7 | 6 | import static org.hypertrace.core.graphql.span.joiner.SpanJoin.SPANS_KEY;
|
8 | 7 |
|
9 | 8 | import graphql.schema.DataFetchingFieldSelectionSet;
|
10 | 9 | import graphql.schema.SelectedField;
|
11 | 10 | import io.reactivex.rxjava3.core.Observable;
|
12 | 11 | import io.reactivex.rxjava3.core.Single;
|
13 |
| -import java.util.ArrayList; |
14 | 12 | import java.util.Collection;
|
15 | 13 | import java.util.Collections;
|
16 |
| -import java.util.HashMap; |
17 | 14 | import java.util.List;
|
18 | 15 | import java.util.Map;
|
19 | 16 | import java.util.Map.Entry;
|
@@ -109,18 +106,20 @@ private <T> Single<Map<T, Collection<Span>>> joinSpans(
|
109 | 106 |
|
110 | 107 | private <T> Map<T, Collection<Span>> buildSourceToSpansMap(
|
111 | 108 | Map<T, Collection<String>> sourceToSpanIdsMap, Map<String, Span> spanIdToSpanMap) {
|
112 |
| - Map<T, Collection<Span>> sourceToSpansMap = new HashMap<>(); |
113 |
| - for (Entry<T, Collection<String>> entry : sourceToSpanIdsMap.entrySet()) { |
114 |
| - List<Span> spans = new ArrayList<>(); |
115 |
| - for (String spanId : entry.getValue()) { |
116 |
| - if (spanIdToSpanMap.containsKey(spanId)) { |
117 |
| - spans.add(spanIdToSpanMap.get(spanId)); |
118 |
| - } |
119 |
| - } |
120 |
| - sourceToSpansMap.put( |
121 |
| - entry.getKey(), spans.stream().distinct().collect(Collectors.toUnmodifiableList())); |
122 |
| - } |
123 |
| - return unmodifiableMap(sourceToSpansMap); |
| 109 | + return sourceToSpanIdsMap.entrySet().stream() |
| 110 | + .collect( |
| 111 | + Collectors.toUnmodifiableMap( |
| 112 | + Entry::getKey, |
| 113 | + entry -> buildSpansCollectionForEachSource(entry.getValue(), spanIdToSpanMap))); |
| 114 | + } |
| 115 | + |
| 116 | + private Collection<Span> buildSpansCollectionForEachSource( |
| 117 | + Collection<String> spanIds, Map<String, Span> spanIdToSpanMap) { |
| 118 | + return spanIds.stream() |
| 119 | + .filter(spanIdToSpanMap::containsKey) |
| 120 | + .distinct() |
| 121 | + .map(spanIdToSpanMap::get) |
| 122 | + .collect(Collectors.toUnmodifiableList()); |
124 | 123 | }
|
125 | 124 |
|
126 | 125 | private Map<String, Span> buildSpanIdToSpanMap(SpanResultSet resultSet) {
|
|
0 commit comments