Skip to content

Commit 7c5392f

Browse files
authored
Merge pull request #49048 from gsmet/load-complex-objects-order
Always load properties and fields of recorded objects in the same order
2 parents 5c9f2ad + 45017df commit 7c5392f

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

core/deployment/src/main/java/io/quarkus/deployment/recording/BytecodeRecorderImpl.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import java.util.Arrays;
2525
import java.util.Collection;
2626
import java.util.Collections;
27+
import java.util.Comparator;
2728
import java.util.HashMap;
2829
import java.util.HashSet;
2930
import java.util.IdentityHashMap;
@@ -1459,8 +1460,10 @@ public void prepare(MethodContext context) {
14591460
}
14601461
}
14611462

1462-
//now handle accessible fields
1463-
for (Field field : param.getClass().getFields()) {
1463+
//now handle accessible fields, in a deterministic order
1464+
Field[] fields = param.getClass().getFields();
1465+
Arrays.sort(fields, Comparator.comparing(Field::getName));
1466+
for (Field field : fields) {
14641467
// check if the field is ignored
14651468
if (ignoreField(field)) {
14661469
continue;

core/deployment/src/main/java/io/quarkus/deployment/recording/PropertyUtils.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
import java.util.ArrayList;
77
import java.util.Arrays;
88
import java.util.HashMap;
9-
import java.util.HashSet;
109
import java.util.List;
1110
import java.util.Map;
1211
import java.util.Set;
12+
import java.util.TreeSet;
1313
import java.util.concurrent.ConcurrentHashMap;
1414
import java.util.concurrent.ConcurrentMap;
1515
import java.util.function.Function;
@@ -53,7 +53,8 @@ public Property[] apply(Class<?> type) {
5353
}
5454
}
5555

56-
Set<String> names = new HashSet<>(getters.keySet());
56+
// we want to return the properties in a deterministic order
57+
Set<String> names = new TreeSet<>(getters.keySet());
5758
names.addAll(isGetters.keySet());
5859
names.addAll(setters.keySet());
5960
for (String i : names) {

0 commit comments

Comments
 (0)