From ea57597e789f5574a1c6cc744e60dade760a2026 Mon Sep 17 00:00:00 2001 From: Shao Date: Sun, 5 Sep 2021 09:56:35 -0500 Subject: [PATCH 1/3] fix map in deterministic order --- .../org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cayenne-server/src/main/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java b/cayenne-server/src/main/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java index 1baaa276c3..0d2b7250e2 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java @@ -20,7 +20,7 @@ import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.regex.Pattern; @@ -108,7 +108,7 @@ protected void appendParameters(StringBuilder buffer, String label, ParameterBin @SuppressWarnings("unchecked") private Map> collectBindings(ParameterBinding[] bindings) { - Map> bindingsMap = new HashMap<>(); + Map> bindingsMap = new LinkedHashMap<>(); String key = null; String value; From 6be35d89e65aaba58dfc911237eafb2bcbdb3f0a Mon Sep 17 00:00:00 2001 From: Shunfan Shao Date: Mon, 22 Nov 2021 20:47:45 -0600 Subject: [PATCH 2/3] fix: guarantee elements order dependent on getDeclareFields --- .../src/main/java/org/apache/cayenne/reflect/PojoMapper.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cayenne-server/src/main/java/org/apache/cayenne/reflect/PojoMapper.java b/cayenne-server/src/main/java/org/apache/cayenne/reflect/PojoMapper.java index c0abf6e197..e4007628fd 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/reflect/PojoMapper.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/reflect/PojoMapper.java @@ -23,6 +23,8 @@ import java.lang.invoke.MethodHandles; import java.lang.reflect.Field; import java.util.function.Function; +import java.util.Arrays; +import java.util.Comparator; import org.apache.cayenne.CayenneRuntimeException; @@ -48,6 +50,8 @@ public PojoMapper(Class type) { } Field[] declaredFields = type.getDeclaredFields(); + java.util.Arrays.sort(declaredFields, Comparator.comparing(Field::getName)); + this.setters = new MethodHandle[declaredFields.length]; int i = 0; for(Field field : declaredFields) { From 4c17c86ed08d2ca4f9918cf45c2628dfc505a1d6 Mon Sep 17 00:00:00 2001 From: Shunfan Shao Date: Mon, 22 Nov 2021 20:55:52 -0600 Subject: [PATCH 3/3] revert non-relevant changes --- .../org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cayenne-server/src/main/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java b/cayenne-server/src/main/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java index 0d2b7250e2..1baaa276c3 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java @@ -20,7 +20,7 @@ import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashMap; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.regex.Pattern; @@ -108,7 +108,7 @@ protected void appendParameters(StringBuilder buffer, String label, ParameterBin @SuppressWarnings("unchecked") private Map> collectBindings(ParameterBinding[] bindings) { - Map> bindingsMap = new LinkedHashMap<>(); + Map> bindingsMap = new HashMap<>(); String key = null; String value;