From 14647f9192a6628ee9d86e962556c1916d47cc0c Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Tue, 25 Apr 2017 11:17:54 +0200 Subject: [PATCH] =?UTF-8?q?DATACMNS-1021=20-=20Add=20Order.asc(=E2=80=A6)?= =?UTF-8?q?=20and=20Order.desc(=E2=80=A6)=20factory=20methods.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We now support Order creation with Order.asc(String) and Order.desc(String) factory methods as shortcut to constructor creation via new Order(Direction, String). Sort.by(Order.asc("age"), Order.desc("name")); Deprecated Order(String) constructor in favor of the Order.by(String) factory method. Replace references to new Order(String) with Order.by(String). Original pull request: #211. --- .../org/springframework/data/domain/Sort.java | 36 +++++++++++++++++-- .../springframework/data/querydsl/QSort.java | 3 +- .../query/parser/OrderBySource.java | 5 +-- .../SortHandlerMethodArgumentResolver.java | 2 +- .../data/domain/SortUnitTests.java | 17 +++++++-- 5 files changed, 54 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/springframework/data/domain/Sort.java b/src/main/java/org/springframework/data/domain/Sort.java index d6c433b97..bb861df5f 100644 --- a/src/main/java/org/springframework/data/domain/Sort.java +++ b/src/main/java/org/springframework/data/domain/Sort.java @@ -1,5 +1,5 @@ /* - * Copyright 2008-2016 the original author or authors. + * Copyright 2008-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,6 +34,7 @@ import org.springframework.util.StringUtils; * * @author Oliver Gierke * @author Thomas Darimont + * @author Mark Paluch */ public class Sort implements Iterable, Serializable { @@ -432,13 +433,44 @@ public class Sort implements Iterable new Order(it, propertyPath.toDotPath())) - .orElseGet(() -> new Order(propertyPath.toDotPath())); + .orElseGet(() -> Order.by(propertyPath.toDotPath())); }).orElseGet(() -> direction// .map(it -> new Order(it, StringUtils.uncapitalize(propertySource))) - .orElseGet(() -> new Order(StringUtils.uncapitalize(propertySource)))); + .orElseGet(() -> Order.by(StringUtils.uncapitalize(propertySource)))); } /** diff --git a/src/main/java/org/springframework/data/web/SortHandlerMethodArgumentResolver.java b/src/main/java/org/springframework/data/web/SortHandlerMethodArgumentResolver.java index 515307ed2..4d2777033 100644 --- a/src/main/java/org/springframework/data/web/SortHandlerMethodArgumentResolver.java +++ b/src/main/java/org/springframework/data/web/SortHandlerMethodArgumentResolver.java @@ -238,7 +238,7 @@ public class SortHandlerMethodArgumentResolver implements SortArgumentResolver { return Optional.empty(); } - return Optional.of(direction.map(it -> new Order(it, property)).orElseGet(() -> new Order(property))); + return Optional.of(direction.map(it -> new Order(it, property)).orElseGet(() -> Order.by(property))); } /** diff --git a/src/test/java/org/springframework/data/domain/SortUnitTests.java b/src/test/java/org/springframework/data/domain/SortUnitTests.java index 57405d0af..7c0bee0d0 100755 --- a/src/test/java/org/springframework/data/domain/SortUnitTests.java +++ b/src/test/java/org/springframework/data/domain/SortUnitTests.java @@ -28,6 +28,7 @@ import org.springframework.data.domain.Sort.Order; * @author Oliver Gierke * @author Kevin Raymond * @author Thomas Darimont + * @author Mark Paluch */ public class SortUnitTests { @@ -99,14 +100,24 @@ public class SortUnitTests { assertThat(sort).containsExactly(new Sort.Order("foo")); } - @Test // DATACMNS-281 + @Test // DATACMNS-281, DATACMNS-1021 public void configuresIgnoreCaseForOrder() { - assertThat(new Order(Direction.ASC, "foo").ignoreCase().isIgnoreCase()).isTrue(); + assertThat(Order.asc("foo").ignoreCase().isIgnoreCase()).isTrue(); } - @Test // DATACMNS-281 + @Test // DATACMNS-281, DATACMNS-1021 public void orderDoesNotIgnoreCaseByDefault() { + assertThat(new Order(Direction.ASC, "foo").isIgnoreCase()).isFalse(); + assertThat(Order.asc("foo").isIgnoreCase()).isFalse(); + assertThat(Order.desc("foo").isIgnoreCase()).isFalse(); + } + + @Test // DATACMNS-1021 + public void createsOrderWithDirection() { + + assertThat(Order.asc("foo").getDirection()).isEqualTo(Direction.ASC); + assertThat(Order.desc("foo").getDirection()).isEqualTo(Direction.DESC); } @Test // DATACMNS-436