From 8ffc5187508c40fb0e294b5936ecc9decc0ce192 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Tue, 7 Dec 2021 09:01:46 +0100 Subject: [PATCH] =?UTF-8?q?Use=20`LinkedHashMap`=20to=20ensure=20a=20stabl?= =?UTF-8?q?e=20iteration=20order=20using=20`Columns.from(=E2=80=A6)`.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #1196 --- .../data/cassandra/core/query/Columns.java | 14 ++++++++------ .../query/PartTreeCassandraQueryUnitTests.java | 4 ++-- .../ReactivePartTreeCassandraQueryUnitTests.java | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/Columns.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/Columns.java index 1f859896c..d97717380 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/Columns.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/Columns.java @@ -17,7 +17,6 @@ package org.springframework.data.cassandra.core.query; import java.util.Arrays; import java.util.Collections; -import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; @@ -70,10 +69,11 @@ public class Columns implements Iterable { Assert.notNull(columnNames, "Column names must not be null"); - Map columns = new HashMap<>(columnNames.length, 1); + Map columns = new LinkedHashMap<>(columnNames.length, 1); - Arrays.stream(columnNames) - .forEach(columnName -> columns.put(ColumnName.from(columnName), ColumnSelector.from(columnName))); + for (String columnName : columnNames) { + columns.put(ColumnName.from(columnName), ColumnSelector.from(columnName)); + } return new Columns(columns); } @@ -88,9 +88,11 @@ public class Columns implements Iterable { Assert.notNull(columnNames, "Column names must not be null"); - Map columns = new HashMap<>(columnNames.length, 1); + Map columns = new LinkedHashMap<>(columnNames.length, 1); - Arrays.stream(columnNames).forEach(cqlId -> columns.put(ColumnName.from(cqlId), ColumnSelector.from(cqlId))); + for (CqlIdentifier cqlId : columnNames) { + columns.put(ColumnName.from(cqlId), ColumnSelector.from(cqlId)); + } return new Columns(columns); } diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/PartTreeCassandraQueryUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/PartTreeCassandraQueryUnitTests.java index 2d370bb1b..5a69d71fe 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/PartTreeCassandraQueryUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/PartTreeCassandraQueryUnitTests.java @@ -142,7 +142,7 @@ class PartTreeCassandraQueryUnitTests { String query = deriveQueryFromMethod("findDynamicallyProjectedBy", PersonProjection.class); - assertThat(query).isEqualTo("SELECT lastname,firstname FROM person"); + assertThat(query).isEqualTo("SELECT firstname,lastname FROM person"); } @Test // DATACASS-479, DATACASS-313 @@ -150,7 +150,7 @@ class PartTreeCassandraQueryUnitTests { String query = deriveQueryFromMethod("findPersonProjectedByNickname", "foo"); - assertThat(query).isEqualTo("SELECT lastname,firstname FROM person WHERE nickname='foo'"); + assertThat(query).isEqualTo("SELECT firstname,lastname FROM person WHERE nickname='foo'"); } @Test // DATACASS-357 diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactivePartTreeCassandraQueryUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactivePartTreeCassandraQueryUnitTests.java index 737ae7331..9b4211a58 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactivePartTreeCassandraQueryUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactivePartTreeCassandraQueryUnitTests.java @@ -109,7 +109,7 @@ class ReactivePartTreeCassandraQueryUnitTests { String query = deriveQueryFromMethod("findDynamicallyProjectedBy", PersonProjection.class); - assertThat(query).isEqualTo("SELECT lastname,firstname FROM person"); + assertThat(query).isEqualTo("SELECT firstname,lastname FROM person"); } @Test // DATACASS-146