Skip to content

Commit 6e22ffd

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 1548ab6 commit 6e22ffd

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

+2-1
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

+8-7
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
* Unit tests for {@link HateoasPageableHandlerMethodArgumentResolver}.
2929
*
3030
* @author Oliver Gierke
31+
* @author Julien Béti
3132
*/
3233
class HateoasPageableHandlerMethodArgumentResolverUnitTests
3334
extends PageableHandlerMethodArgumentResolverUnitTests {
@@ -66,18 +67,18 @@ void preventsPageSizeFromExceedingMayValueIfConfiguredOnWrite() throws Exception
6667
assertUriStringFor(PageRequest.of(0, 200), "page=0&size=100");
6768
}
6869

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

72-
assertTemplateEnrichment("/foo", "{?page,size,sort}");
73-
assertTemplateEnrichment("/foo?bar=1", "{&page,size,sort}");
74-
assertTemplateEnrichment("/foo?page=1", "{&size,sort}");
75-
assertTemplateEnrichment("/foo?page=1&size=10", "{&sort}");
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*}");
7677
assertTemplateEnrichment("/foo?page=1&sort=foo,asc", "{&size}");
7778
assertTemplateEnrichment("/foo?page=1&size=10&sort=foo,asc", "");
7879
}
7980

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

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

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

9293
@Test // DATACMNS-563

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

+3-2
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
* Unit tests for {@link HateoasSortHandlerMethodArgumentResolver}
2929
*
3030
* @author Oliver Gierke
31+
* @author Julien Béti
3132
*/
3233
class HateoasSortHandlerMethodArgumentResolverUnitTests extends SortHandlerMethodArgumentResolverUnitTests {
3334

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

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

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

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

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

0 commit comments

Comments
 (0)