Skip to content

Commit

Permalink
Properly render sort variable variable as composite.
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Julien Béti authored and odrotbohm committed Dec 1, 2023
1 parent 7826740 commit fa9d7bd
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
* @author Oliver Gierke
* @author Thomas Darimont
* @author Nick Williams
* @author Julien Béti
*/
public class HateoasSortHandlerMethodArgumentResolver extends SortHandlerMethodArgumentResolver
implements UriComponentsContributor {
Expand All @@ -58,7 +59,7 @@ public TemplateVariables getSortTemplateVariables(MethodParameter parameter, Uri

String description = String.format("pagination.%s.description", sortParameter);
TemplateVariable.VariableType type = append ? REQUEST_PARAM_CONTINUED : REQUEST_PARAM;
return new TemplateVariables(new TemplateVariable(sortParameter, type, description));
return new TemplateVariables(new TemplateVariable(sortParameter, type, description).composite());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
* Unit tests for {@link HateoasPageableHandlerMethodArgumentResolver}.
*
* @author Oliver Gierke
* @author Julien Béti
*/
class HateoasPageableHandlerMethodArgumentResolverUnitTests
extends PageableHandlerMethodArgumentResolverUnitTests {
Expand Down Expand Up @@ -66,18 +67,18 @@ void preventsPageSizeFromExceedingMayValueIfConfiguredOnWrite() throws Exception
assertUriStringFor(PageRequest.of(0, 200), "page=0&size=100");
}

@Test // DATACMNS-418
@Test // DATACMNS-418, GH-2531
void appendsTemplateVariablesCorrectly() {

assertTemplateEnrichment("/foo", "{?page,size,sort}");
assertTemplateEnrichment("/foo?bar=1", "{&page,size,sort}");
assertTemplateEnrichment("/foo?page=1", "{&size,sort}");
assertTemplateEnrichment("/foo?page=1&size=10", "{&sort}");
assertTemplateEnrichment("/foo", "{?page,size,sort*}");
assertTemplateEnrichment("/foo?bar=1", "{&page,size,sort*}");
assertTemplateEnrichment("/foo?page=1", "{&size,sort*}");
assertTemplateEnrichment("/foo?page=1&size=10", "{&sort*}");
assertTemplateEnrichment("/foo?page=1&sort=foo,asc", "{&size}");
assertTemplateEnrichment("/foo?page=1&size=10&sort=foo,asc", "");
}

@Test // DATACMNS-418
@Test // DATACMNS-418, GH-2531
void returnsCustomizedTemplateVariables() {

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

assertThat(variables).isEqualTo("{?foo,size,sort}");
assertThat(variables).isEqualTo("{?foo,size,sort*}");
}

@Test // DATACMNS-563
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
* Unit tests for {@link HateoasSortHandlerMethodArgumentResolver}
*
* @author Oliver Gierke
* @author Julien Béti
*/
class HateoasSortHandlerMethodArgumentResolverUnitTests extends SortHandlerMethodArgumentResolverUnitTests {

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

@Test // DATACMNS-418
@Test // DATACMNS-418, GH-2531
void returnCorrectTemplateVariables() {

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

var resolver = new HateoasSortHandlerMethodArgumentResolver();
assertThat(resolver.getSortTemplateVariables(null, uriComponents).toString()).isEqualTo("{?sort}");
assertThat(resolver.getSortTemplateVariables(null, uriComponents).toString()).isEqualTo("{?sort*}");
}

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

0 comments on commit fa9d7bd

Please sign in to comment.