1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.index.reader;
20
21 import java.util.Map;
22 import java.util.TreeSet;
23 import java.util.function.Function;
24 import java.util.stream.Collectors;
25 import java.util.stream.Stream;
26 import java.util.stream.StreamSupport;
27
28 import org.apache.maven.index.reader.Record.Type;
29
30 import static org.apache.maven.index.reader.Utils.allGroups;
31 import static org.apache.maven.index.reader.Utils.descriptor;
32 import static org.apache.maven.index.reader.Utils.rootGroup;
33 import static org.apache.maven.index.reader.Utils.rootGroups;
34
35
36
37
38 public final class TestUtils {
39 private TestUtils() {
40
41 }
42
43 private static final RecordCompactor RECORD_COMPACTOR = new RecordCompactor();
44
45 private static final RecordExpander RECORD_EXPANDER = new RecordExpander();
46
47 public static Function<Record, Map<String, String>> compactFunction = RECORD_COMPACTOR;
48
49 public static Function<Map<String, String>, Record> expandFunction = RECORD_EXPANDER;
50
51
52
53
54
55
56
57
58 public static Iterable<Record> decorate(final Iterable<Record> iterable, final String repoId) {
59 final TreeSet<String> allGroupsSet = new TreeSet<>();
60 final TreeSet<String> rootGroupsSet = new TreeSet<>();
61 return Stream.concat(
62 Stream.of(descriptor(repoId)),
63 Stream.concat(
64 StreamSupport.stream(iterable.spliterator(), false),
65 Stream.concat(
66 Stream.of(allGroups(allGroupsSet)),
67
68 Stream.of(rootGroups(rootGroupsSet))))
69
70 )
71 .map(rec -> {
72 if (Type.DESCRIPTOR == rec.getType()) {
73 return rec;
74 } else if (Type.ALL_GROUPS == rec.getType()) {
75 return allGroups(allGroupsSet);
76 } else if (Type.ROOT_GROUPS == rec.getType()) {
77 return rootGroups(rootGroupsSet);
78 } else {
79 final String groupId = rec.getString(Record.GROUP_ID);
80 if (groupId != null) {
81 allGroupsSet.add(groupId);
82 rootGroupsSet.add(rootGroup(groupId));
83 }
84 return rec;
85 }
86 })
87 .collect(Collectors.toList());
88 }
89 }