Skip to content

Commit 40edfdf

Browse files
Julien Bétiodrotbohm
Julien Béti
authored andcommitted
Properly render sort variable variable as composite.
HateoasSortHandlerMethodArgumentResolver now renders the sort template variable as composite to properly indicate that it can be submitted multiple times. Fixes GH-2531. Original pull request GH-2945.
1 parent d16d67b commit 40edfdf

File tree

3 files changed

+13
-10
lines changed

3 files changed

+13
-10
lines changed

src/main/java/org/springframework/data/web/HateoasSortHandlerMethodArgumentResolver.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
* @author Oliver Gierke
3636
* @author Thomas Darimont
3737
* @author Nick Williams
38+
* @author Julien Béti
3839
*/
3940
public class HateoasSortHandlerMethodArgumentResolver extends SortHandlerMethodArgumentResolver
4041
implements UriComponentsContributor {
@@ -58,7 +59,7 @@ public TemplateVariables getSortTemplateVariables(MethodParameter parameter, Uri
5859

5960
String description = String.format("pagination.%s.description", sortParameter);
6061
TemplateVariable.VariableType type = append ? REQUEST_PARAM_CONTINUED : REQUEST_PARAM;
61-
return new TemplateVariables(new TemplateVariable(sortParameter, type, description));
62+
return new TemplateVariables(new TemplateVariable(sortParameter, type, description).composite());
6263
}
6364

6465
@Override

src/test/java/org/springframework/data/web/HateoasPageableHandlerMethodArgumentResolverUnitTests.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
* Unit tests for {@link HateoasPageableHandlerMethodArgumentResolver}.
3030
*
3131
* @author Oliver Gierke
32+
* @author Julien Béti
3233
*/
3334
class HateoasPageableHandlerMethodArgumentResolverUnitTests
3435
extends PageableHandlerMethodArgumentResolverUnitTests {
@@ -67,18 +68,18 @@ void preventsPageSizeFromExceedingMayValueIfConfiguredOnWrite() throws Exception
6768
assertUriStringFor(PageRequest.of(0, 200), "page=0&size=100");
6869
}
6970

70-
@Test // DATACMNS-418
71+
@Test // DATACMNS-418, GH-2531
7172
void appendsTemplateVariablesCorrectly() {
7273

73-
assertTemplateEnrichment("/foo", "{?page,size,sort}");
74-
assertTemplateEnrichment("/foo?bar=1", "{&page,size,sort}");
75-
assertTemplateEnrichment("/foo?page=1", "{&size,sort}");
76-
assertTemplateEnrichment("/foo?page=1&size=10", "{&sort}");
74+
assertTemplateEnrichment("/foo", "{?page,size,sort*}");
75+
assertTemplateEnrichment("/foo?bar=1", "{&page,size,sort*}");
76+
assertTemplateEnrichment("/foo?page=1", "{&size,sort*}");
77+
assertTemplateEnrichment("/foo?page=1&size=10", "{&sort*}");
7778
assertTemplateEnrichment("/foo?page=1&sort=foo,asc", "{&size}");
7879
assertTemplateEnrichment("/foo?page=1&size=10&sort=foo,asc", "");
7980
}
8081

81-
@Test // DATACMNS-418
82+
@Test // DATACMNS-418, GH-2531
8283
void returnsCustomizedTemplateVariables() {
8384

8485
var uriComponents = UriComponentsBuilder.fromPath("/foo").build();
@@ -87,7 +88,7 @@ void returnsCustomizedTemplateVariables() {
8788
resolver.setPageParameterName("foo");
8889
var variables = resolver.getPaginationTemplateVariables(null, uriComponents).toString();
8990

90-
assertThat(variables).isEqualTo("{?foo,size,sort}");
91+
assertThat(variables).isEqualTo("{?foo,size,sort*}");
9192
}
9293

9394
@Test // DATACMNS-563

src/test/java/org/springframework/data/web/HateoasSortHandlerMethodArgumentResolverUnitTests.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
* Unit tests for {@link HateoasSortHandlerMethodArgumentResolver}
3030
*
3131
* @author Oliver Gierke
32+
* @author Julien Béti
3233
*/
3334
class HateoasSortHandlerMethodArgumentResolverUnitTests extends SortHandlerMethodArgumentResolverUnitTests {
3435

@@ -47,13 +48,13 @@ void replacesExistingRequestParameters() throws Exception {
4748
assertUriStringFor(SORT, "/?sort=firstname,lastname,desc", "/?sort=foo,asc");
4849
}
4950

50-
@Test // DATACMNS-418
51+
@Test // DATACMNS-418, GH-2531
5152
void returnCorrectTemplateVariables() {
5253

5354
var uriComponents = UriComponentsBuilder.fromPath("/").build();
5455

5556
var resolver = new HateoasSortHandlerMethodArgumentResolver();
56-
assertThat(resolver.getSortTemplateVariables(null, uriComponents).toString()).isEqualTo("{?sort}");
57+
assertThat(resolver.getSortTemplateVariables(null, uriComponents).toString()).isEqualTo("{?sort*}");
5758
}
5859

5960
private void assertUriStringFor(Sort sort, String expected) throws Exception {

0 commit comments

Comments
 (0)