Fix ordering of metadata entries
This commit provides a consistent ordering for groups that share the same configuration property prefix. See gh-26230
This commit is contained in:
committed by
Stephane Nicoll
parent
20da9826cc
commit
3e34b0a60a
@@ -160,26 +160,18 @@ class JsonConverter {
|
||||
|
||||
private static class ItemMetadataComparator implements Comparator<ItemMetadata> {
|
||||
|
||||
private final Comparator<ItemMetadata> itemComparator = Comparator.comparing(this::isDeprecated)
|
||||
.thenComparing(ItemMetadata::getName).thenComparing(ItemMetadata::getSourceType);
|
||||
|
||||
private final Comparator<ItemMetadata> groupComparator = Comparator.comparing(ItemMetadata::getName)
|
||||
.thenComparing(ItemMetadata::getSourceType);
|
||||
|
||||
@Override
|
||||
public int compare(ItemMetadata o1, ItemMetadata o2) {
|
||||
if (o1.isOfItemType(ItemType.GROUP)) {
|
||||
return compareGroup(o1, o2);
|
||||
return this.groupComparator.compare(o1, o2);
|
||||
}
|
||||
return compareProperty(o1, o2);
|
||||
}
|
||||
|
||||
private int compareGroup(ItemMetadata o1, ItemMetadata o2) {
|
||||
return o1.getName().compareTo(o2.getName());
|
||||
}
|
||||
|
||||
private int compareProperty(ItemMetadata o1, ItemMetadata o2) {
|
||||
if (isDeprecated(o1) && !isDeprecated(o2)) {
|
||||
return 1;
|
||||
}
|
||||
if (isDeprecated(o2) && !isDeprecated(o1)) {
|
||||
return -1;
|
||||
}
|
||||
return o1.getName().compareTo(o2.getName());
|
||||
return this.itemComparator.compare(o1, o2);
|
||||
}
|
||||
|
||||
private boolean isDeprecated(ItemMetadata item) {
|
||||
|
||||
Reference in New Issue
Block a user