DATAREST-31 - Improved link rendering for search resources.
If the search resource is capable of paging we now augment the link with pagination template variables.
This commit is contained in:
@@ -62,6 +62,7 @@ class RepositorySearchController extends AbstractRepositoryRestController {
|
||||
|
||||
private final EntityLinks entityLinks;
|
||||
private final ResourceMappings mappings;
|
||||
private final PagedResourcesAssembler<Object> assembler;
|
||||
|
||||
/**
|
||||
* Creates a new {@link RepositorySearchController} using the given {@link PagedResourcesAssembler},
|
||||
@@ -83,6 +84,7 @@ class RepositorySearchController extends AbstractRepositoryRestController {
|
||||
|
||||
this.entityLinks = entityLinks;
|
||||
this.mappings = mappings;
|
||||
this.assembler = assembler;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -235,7 +237,13 @@ class RepositorySearchController extends AbstractRepositoryRestController {
|
||||
String parameterTemplateVariable = getParameterTemplateVariable(mapping.getParameterNames());
|
||||
String href = builder.slash(mapping.getPath()).toString().concat(parameterTemplateVariable);
|
||||
|
||||
links.add(new Link(href, mapping.getRel()));
|
||||
Link link = new Link(href, mapping.getRel());
|
||||
|
||||
if (mapping.isPagingResource()) {
|
||||
link = assembler.appendPaginationParameterTemplates(link);
|
||||
}
|
||||
|
||||
links.add(link);
|
||||
}
|
||||
|
||||
return new Links(links);
|
||||
|
||||
@@ -61,9 +61,10 @@ public class RepositorySearchControllerIntegrationTests extends AbstractControll
|
||||
ResourceTester tester = ResourceTester.of(resource);
|
||||
tester.assertNumberOfLinks(4);
|
||||
tester.assertHasLinkEndingWith("findFirstPersonByFirstName", "findFirstPersonByFirstName{?firstName}");
|
||||
tester.assertHasLinkEndingWith("firstname", "firstname{?firstName}");
|
||||
tester.assertHasLinkEndingWith("findByCreatedUsingISO8601Date", "findByCreatedUsingISO8601Date{?date}");
|
||||
tester.assertHasLinkEndingWith("findByCreatedGreaterThan", "findByCreatedGreaterThan{?date}");
|
||||
tester.assertHasLinkEndingWith("firstname", "firstname{?firstName,page,size,sort}");
|
||||
tester.assertHasLinkEndingWith("findByCreatedUsingISO8601Date",
|
||||
"findByCreatedUsingISO8601Date{?date,page,size,sort}");
|
||||
tester.assertHasLinkEndingWith("findByCreatedGreaterThan", "findByCreatedGreaterThan{?date,page,size,sort}");
|
||||
}
|
||||
|
||||
@Test(expected = ResourceNotFoundException.class)
|
||||
|
||||
Reference in New Issue
Block a user