From 7dfe69e6d612abebc9e2ccb501cfe4e3e0ca12c5 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Fri, 25 Mar 2022 13:35:49 +0100 Subject: [PATCH] Retain case-sensitivity and null-handling when changing `Sort` direction. We now retain case-sensitivity and null-handling configuration when changing the entire Sort direction. Closes #2585 --- .../java/org/springframework/data/domain/Sort.java | 2 +- .../springframework/data/domain/SortUnitTests.java | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/springframework/data/domain/Sort.java b/src/main/java/org/springframework/data/domain/Sort.java index 0de637c16..ef44c8cea 100644 --- a/src/main/java/org/springframework/data/domain/Sort.java +++ b/src/main/java/org/springframework/data/domain/Sort.java @@ -277,7 +277,7 @@ public class Sort implements Streamable new Order(direction, it.getProperty())).collect(Collectors.toList())); + return Sort.by(stream().map(it -> it.with(direction)).collect(Collectors.toList())); } /** diff --git a/src/test/java/org/springframework/data/domain/SortUnitTests.java b/src/test/java/org/springframework/data/domain/SortUnitTests.java index ac73ef919..65723e1c7 100755 --- a/src/test/java/org/springframework/data/domain/SortUnitTests.java +++ b/src/test/java/org/springframework/data/domain/SortUnitTests.java @@ -104,9 +104,12 @@ class SortUnitTests { assertThat(sort).containsExactly(Order.by("foo")); } - @Test // DATACMNS-281, DATACMNS-1021 + @Test // DATACMNS-281, DATACMNS-1021, GH-2585 void configuresIgnoreCaseForOrder() { + assertThat(Order.asc("foo").ignoreCase().isIgnoreCase()).isTrue(); + assertThat(Sort.by(Order.by("foo").ignoreCase()).descending().iterator().next().isIgnoreCase()).isTrue(); + assertThat(Sort.by(Order.by("foo").ignoreCase()).ascending().iterator().next().isIgnoreCase()).isTrue(); } @Test // DATACMNS-281, DATACMNS-1021 @@ -154,6 +157,15 @@ class SortUnitTests { assertThat(Order.by("foo").getNullHandling()).isEqualTo(NATIVE); } + @Test // GH-2585 + void retainsNullHandlingAfterChangingDirection() { + + assertThat(Sort.by(Order.by("foo").with(NULLS_FIRST)).ascending().iterator().next().getNullHandling()) + .isEqualTo(NULLS_FIRST); + assertThat(Sort.by(Order.by("foo").with(NULLS_FIRST)).descending().iterator().next().getNullHandling()) + .isEqualTo(NULLS_FIRST); + } + @Test // DATACMNS-908 void createsNewOrderForDifferentProperty() {