Skip to content

Commit 3b0ed14

Browse files
committed
spring-projects#2168 No TemplateVariable generated for null Pageable
1 parent 8b708ea commit 3b0ed14

File tree

5 files changed

+41
-0
lines changed

5 files changed

+41
-0
lines changed

pom.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434
<xmlbeam>1.4.26</xmlbeam>
3535
<java-module-name>spring.data.commons</java-module-name>
3636
<kotlin.api.target>1.8</kotlin.api.target>
37+
38+
<spring-hateoas>2.2.0.1.cosium</spring-hateoas>
3739
</properties>
3840

3941
<dependencies>

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
* @since 1.6
4141
* @author Oliver Gierke
4242
* @author Nick Williams
43+
* @author Réda Housni Alaoui
4344
*/
4445
@SuppressWarnings("null")
4546
public class HateoasPageableHandlerMethodArgumentResolver extends PageableHandlerMethodArgumentResolver
@@ -123,6 +124,11 @@ public void enhance(UriComponentsBuilder builder, @Nullable MethodParameter para
123124
this.sortResolver.enhance(builder, parameter, pageable.getSort());
124125
}
125126

127+
@Override
128+
public TemplateVariables enhance(TemplateVariables templateVariables, UriComponents uriComponents, MethodParameter parameter) {
129+
return templateVariables.concat(getPaginationTemplateVariables(parameter, uriComponents));
130+
}
131+
126132
private static HateoasSortHandlerMethodArgumentResolver getDefaultedSortResolver(
127133
@Nullable HateoasSortHandlerMethodArgumentResolver sortResolver) {
128134
return sortResolver == null ? DEFAULT_SORT_RESOLVER : sortResolver;

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
* @author Thomas Darimont
3838
* @author Nick Williams
3939
* @author Julien Béti
40+
* @author Réda Housni Alaoui
4041
*/
4142
public class HateoasSortHandlerMethodArgumentResolver extends SortHandlerMethodArgumentResolver
4243
implements UriComponentsContributor {
@@ -78,4 +79,9 @@ public void enhance(UriComponentsBuilder builder, @Nullable MethodParameter para
7879
builder.queryParam(sortParameter, expression);
7980
}
8081
}
82+
83+
@Override
84+
public TemplateVariables enhance(TemplateVariables templateVariables, UriComponents uriComponents, MethodParameter parameter) {
85+
return templateVariables.concat(getSortTemplateVariables(parameter, uriComponents));
86+
}
8187
}

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,17 @@
2121
import org.springframework.core.MethodParameter;
2222
import org.springframework.data.domain.PageRequest;
2323
import org.springframework.data.domain.Pageable;
24+
import org.springframework.hateoas.TemplateVariables;
2425
import org.springframework.hateoas.server.mvc.UriComponentsContributor;
26+
import org.springframework.web.util.UriComponents;
2527
import org.springframework.web.util.UriComponentsBuilder;
2628

2729
/**
2830
* Unit tests for {@link HateoasPageableHandlerMethodArgumentResolver}.
2931
*
3032
* @author Oliver Gierke
3133
* @author Julien Béti
34+
* @author Réda Housni Alaoui
3235
*/
3336
class HateoasPageableHandlerMethodArgumentResolverUnitTests
3437
extends PageableHandlerMethodArgumentResolverUnitTests {
@@ -116,6 +119,18 @@ void enhancesUnpaged() {
116119
assertThat(builder).isEqualTo(builder);
117120
}
118121

122+
@Test // DATACMNS-1752
123+
void enhanceTemplateVariables() {
124+
125+
UriComponents uriComponents = UriComponentsBuilder.fromPath("/foo").build();
126+
127+
HateoasPageableHandlerMethodArgumentResolver resolver = getResolver();
128+
resolver.setPageParameterName("foo");
129+
String variables = resolver.enhance(TemplateVariables.NONE, uriComponents, null).toString();
130+
131+
assertThat(variables).isEqualTo("{?foo,size,sort*}");
132+
}
133+
119134
@Override
120135
protected HateoasPageableHandlerMethodArgumentResolver getResolver() {
121136

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,16 @@
2222

2323
import org.junit.jupiter.api.Test;
2424
import org.springframework.data.domain.Sort;
25+
import org.springframework.hateoas.TemplateVariables;
26+
import org.springframework.web.util.UriComponents;
2527
import org.springframework.web.util.UriComponentsBuilder;
2628

2729
/**
2830
* Unit tests for {@link HateoasSortHandlerMethodArgumentResolver}
2931
*
3032
* @author Oliver Gierke
3133
* @author Julien Béti
34+
* @author Réda Housni Alaoui
3235
*/
3336
class HateoasSortHandlerMethodArgumentResolverUnitTests extends SortHandlerMethodArgumentResolverUnitTests {
3437

@@ -56,6 +59,15 @@ void returnCorrectTemplateVariables() {
5659
assertThat(resolver.getSortTemplateVariables(null, uriComponents).toString()).isEqualTo("{?sort*}");
5760
}
5861

62+
@Test // DATACMNS-1752
63+
void enhanceTemplateVariables(){
64+
65+
UriComponents uriComponents = UriComponentsBuilder.fromPath("/").build();
66+
67+
HateoasSortHandlerMethodArgumentResolver resolver = new HateoasSortHandlerMethodArgumentResolver();
68+
assertThat(resolver.enhance(TemplateVariables.NONE, uriComponents, null).toString()).isEqualTo("{?sort*}");
69+
}
70+
5971
private void assertUriStringFor(Sort sort, String expected) throws Exception {
6072
assertUriStringFor(sort, expected, "/");
6173
}

0 commit comments

Comments
 (0)