From 46ff9d25a6f4b49ac683bf49175a2f44f83a372d Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Thu, 11 May 2023 15:59:42 +0200 Subject: [PATCH] Allow reversing `Sort`. We now allow reversing the sort order of Sort instances to flip ASC and DESC sort orders. Closes #2805 --- .../org/springframework/data/domain/Sort.java | 47 +++++++++++++++++-- .../data/domain/SortUnitTests.java | 15 ++++++ 2 files changed, 59 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/springframework/data/domain/Sort.java b/src/main/java/org/springframework/data/domain/Sort.java index 5c2af3ba7..2520d5630 100644 --- a/src/main/java/org/springframework/data/domain/Sort.java +++ b/src/main/java/org/springframework/data/domain/Sort.java @@ -194,7 +194,7 @@ public class Sort implements Streamable these = new ArrayList(this.toList()); + List these = new ArrayList(this.toList()); for (Order order : sort) { these.add(order); @@ -203,6 +203,31 @@ public class Sort implements Streamable reversed = doReverse(); + + return Sort.by(reversed); + } + + protected List doReverse() { + + List reversed = new ArrayList<>(orders.size()); + + for (Order order : this) { + reversed.add(order.reverse()); + } + + return reversed; + } + /** * Returns the order registered for the given property. * @@ -260,7 +285,13 @@ public class Sort implements Streamable it.with(direction)).collect(Collectors.toList())); + List result = new ArrayList<>(orders.size()); + + for (Order order : this) { + result.add(order.with(direction)); + } + + return Sort.by(result); } /** @@ -332,7 +363,7 @@ public class Sort implements Streamable