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() {