Skip to content

Commit 14ba29c

Browse files
committed
Add SpanJoiner based on list of spanId
1 parent 8e9dfae commit 14ba29c

File tree

1 file changed

+14
-15
lines changed

1 file changed

+14
-15
lines changed

hypertrace-core-graphql-span-schema/src/main/java/org/hypertrace/core/graphql/span/joiner/DefaultSpanJoinerBuilder.java

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,15 @@
22

33
import static com.google.common.collect.ImmutableList.copyOf;
44
import static com.google.common.collect.Iterables.concat;
5-
import static java.util.Collections.unmodifiableMap;
65
import static org.hypertrace.core.graphql.atttributes.scopes.HypertraceCoreAttributeScopeString.SPAN;
76
import static org.hypertrace.core.graphql.span.joiner.SpanJoin.SPANS_KEY;
87

98
import graphql.schema.DataFetchingFieldSelectionSet;
109
import graphql.schema.SelectedField;
1110
import io.reactivex.rxjava3.core.Observable;
1211
import io.reactivex.rxjava3.core.Single;
13-
import java.util.ArrayList;
1412
import java.util.Collection;
1513
import java.util.Collections;
16-
import java.util.HashMap;
1714
import java.util.List;
1815
import java.util.Map;
1916
import java.util.Map.Entry;
@@ -109,18 +106,20 @@ private <T> Single<Map<T, Collection<Span>>> joinSpans(
109106

110107
private <T> Map<T, Collection<Span>> buildSourceToSpansMap(
111108
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());
124123
}
125124

126125
private Map<String, Span> buildSpanIdToSpanMap(SpanResultSet resultSet) {

0 commit comments

Comments
 (0)