Properly order subclasses to ensure generation
ci/woodpecker/push/woodpecker Pipeline was successful Details

This commit is contained in:
Johannes Frohnmeyer 2022-11-24 21:06:03 +01:00
parent 943d9134b3
commit 3f86f09606
Signed by: Johannes
GPG Key ID: E76429612C2929F4
2 changed files with 26 additions and 1 deletions

View File

@ -114,7 +114,13 @@ public class GsonCompileProcessor extends AbstractProcessor2 {
}
}
for (var entry : seen.keySet().stream().collect(Collectors.groupingBy(ClassName::packageName)).entrySet()) {
Map<List<String>, TypeSpec.Builder> known = entry.value.stream().collect(Collectors.toMap(ClassName::simpleNames, seen::get));
Map<List<String>, TypeSpec.Builder> known = entry.value.stream()
.collect(Collectors.toMap(
ClassName::simpleNames,
seen::get,
(u, v) -> u,
() -> new TreeMap<>(StringListComparator.INSTANCE.reversed())
));
// Generate additional parent classes
for (List<String> klazz : known.keySet().stream().toList()) {
List<String> current = new LinkedList<>();

View File

@ -0,0 +1,19 @@
package io.gitlab.jfronny.gson.compile.processor;
import java.util.Comparator;
import java.util.List;
public enum StringListComparator implements Comparator<List<String>> {
INSTANCE;
@Override
public int compare(List<String> left, List<String> right) {
int dif = left.size() - right.size();
if (dif != 0) return dif;
for (int i = 0; i < left.size(); i++) {
dif = left.get(i).compareTo(right.get(i));
if (dif != 0) return dif;
}
return 0;
}
}