Skip to content

Commit c19197d

Browse files
committed
Use LinkedHashMap to ensure a stable iteration order using Columns.from(…).
Closes #1196
1 parent 7cccd60 commit c19197d

File tree

3 files changed

+11
-9
lines changed

3 files changed

+11
-9
lines changed

spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/Columns.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
import java.util.Arrays;
1919
import java.util.Collections;
20-
import java.util.HashMap;
2120
import java.util.Iterator;
2221
import java.util.LinkedHashMap;
2322
import java.util.List;
@@ -70,10 +69,11 @@ public static Columns from(String... columnNames) {
7069

7170
Assert.notNull(columnNames, "Column names must not be null");
7271

73-
Map<ColumnName, Selector> columns = new HashMap<>(columnNames.length, 1);
72+
Map<ColumnName, Selector> columns = new LinkedHashMap<>(columnNames.length, 1);
7473

75-
Arrays.stream(columnNames)
76-
.forEach(columnName -> columns.put(ColumnName.from(columnName), ColumnSelector.from(columnName)));
74+
for (String columnName : columnNames) {
75+
columns.put(ColumnName.from(columnName), ColumnSelector.from(columnName));
76+
}
7777

7878
return new Columns(columns);
7979
}
@@ -88,9 +88,11 @@ public static Columns from(CqlIdentifier... columnNames) {
8888

8989
Assert.notNull(columnNames, "Column names must not be null");
9090

91-
Map<ColumnName, Selector> columns = new HashMap<>(columnNames.length, 1);
91+
Map<ColumnName, Selector> columns = new LinkedHashMap<>(columnNames.length, 1);
9292

93-
Arrays.stream(columnNames).forEach(cqlId -> columns.put(ColumnName.from(cqlId), ColumnSelector.from(cqlId)));
93+
for (CqlIdentifier cqlId : columnNames) {
94+
columns.put(ColumnName.from(cqlId), ColumnSelector.from(cqlId));
95+
}
9496

9597
return new Columns(columns);
9698
}

spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/PartTreeCassandraQueryUnitTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,15 +142,15 @@ void usesDynamicProjection() {
142142

143143
String query = deriveQueryFromMethod("findDynamicallyProjectedBy", PersonProjection.class);
144144

145-
assertThat(query).isEqualTo("SELECT lastname,firstname FROM person");
145+
assertThat(query).isEqualTo("SELECT firstname,lastname FROM person");
146146
}
147147

148148
@Test // DATACASS-479, DATACASS-313
149149
void usesProjectionQueryHiddenField() {
150150

151151
String query = deriveQueryFromMethod("findPersonProjectedByNickname", "foo");
152152

153-
assertThat(query).isEqualTo("SELECT lastname,firstname FROM person WHERE nickname='foo'");
153+
assertThat(query).isEqualTo("SELECT firstname,lastname FROM person WHERE nickname='foo'");
154154
}
155155

156156
@Test // DATACASS-357

spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactivePartTreeCassandraQueryUnitTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ void usesDynamicProjection() {
109109

110110
String query = deriveQueryFromMethod("findDynamicallyProjectedBy", PersonProjection.class);
111111

112-
assertThat(query).isEqualTo("SELECT lastname,firstname FROM person");
112+
assertThat(query).isEqualTo("SELECT firstname,lastname FROM person");
113113
}
114114

115115
@Test // DATACASS-146

0 commit comments

Comments
 (0)