TSK-889: Replace WorkbasketAccessItemListResource with equivalent PaginatedListResource
This commit is contained in:
parent
479faed8de
commit
f06f87f41e
|
@ -41,7 +41,7 @@ import pro.taskana.rest.resource.DistributionTargetListResource;
|
||||||
import pro.taskana.rest.resource.DistributionTargetResource;
|
import pro.taskana.rest.resource.DistributionTargetResource;
|
||||||
import pro.taskana.rest.resource.DistributionTargetResourceAssembler;
|
import pro.taskana.rest.resource.DistributionTargetResourceAssembler;
|
||||||
import pro.taskana.rest.resource.PagedResources.PageMetadata;
|
import pro.taskana.rest.resource.PagedResources.PageMetadata;
|
||||||
import pro.taskana.rest.resource.WorkbasketAccessItemListResource;
|
import pro.taskana.rest.resource.WorkbasketAccessItemPaginatedListResource;
|
||||||
import pro.taskana.rest.resource.WorkbasketAccessItemResource;
|
import pro.taskana.rest.resource.WorkbasketAccessItemResource;
|
||||||
import pro.taskana.rest.resource.WorkbasketAccessItemResourceAssembler;
|
import pro.taskana.rest.resource.WorkbasketAccessItemResourceAssembler;
|
||||||
import pro.taskana.rest.resource.WorkbasketResource;
|
import pro.taskana.rest.resource.WorkbasketResource;
|
||||||
|
@ -201,11 +201,11 @@ public class WorkbasketController extends AbstractPagingController {
|
||||||
|
|
||||||
@GetMapping(path = Mapping.URL_WORKBASKET_ID_ACCESSITEMS)
|
@GetMapping(path = Mapping.URL_WORKBASKET_ID_ACCESSITEMS)
|
||||||
@Transactional(readOnly = true, rollbackFor = Exception.class)
|
@Transactional(readOnly = true, rollbackFor = Exception.class)
|
||||||
public ResponseEntity<WorkbasketAccessItemListResource> getWorkbasketAccessItems(
|
public ResponseEntity<WorkbasketAccessItemPaginatedListResource> getWorkbasketAccessItems(
|
||||||
@PathVariable(value = "workbasketId") String workbasketId)
|
@PathVariable(value = "workbasketId") String workbasketId)
|
||||||
throws NotAuthorizedException, WorkbasketNotFoundException {
|
throws NotAuthorizedException, WorkbasketNotFoundException {
|
||||||
LOGGER.debug("Entry to getWorkbasketAccessItems(workbasketId= {})", workbasketId);
|
LOGGER.debug("Entry to getWorkbasketAccessItems(workbasketId= {})", workbasketId);
|
||||||
ResponseEntity<WorkbasketAccessItemListResource> result;
|
ResponseEntity<WorkbasketAccessItemPaginatedListResource> result;
|
||||||
|
|
||||||
List<WorkbasketAccessItem> accessItems =
|
List<WorkbasketAccessItem> accessItems =
|
||||||
workbasketService.getWorkbasketAccessItems(workbasketId);
|
workbasketService.getWorkbasketAccessItems(workbasketId);
|
||||||
|
@ -221,7 +221,7 @@ public class WorkbasketController extends AbstractPagingController {
|
||||||
|
|
||||||
@PutMapping(path = Mapping.URL_WORKBASKET_ID_ACCESSITEMS)
|
@PutMapping(path = Mapping.URL_WORKBASKET_ID_ACCESSITEMS)
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ResponseEntity<WorkbasketAccessItemListResource> setWorkbasketAccessItems(
|
public ResponseEntity<WorkbasketAccessItemPaginatedListResource> setWorkbasketAccessItems(
|
||||||
@PathVariable(value = "workbasketId") String workbasketId,
|
@PathVariable(value = "workbasketId") String workbasketId,
|
||||||
@RequestBody List<WorkbasketAccessItemResource> workbasketAccessResourceItems)
|
@RequestBody List<WorkbasketAccessItemResource> workbasketAccessResourceItems)
|
||||||
throws NotAuthorizedException, InvalidArgumentException, WorkbasketNotFoundException {
|
throws NotAuthorizedException, InvalidArgumentException, WorkbasketNotFoundException {
|
||||||
|
@ -237,7 +237,7 @@ public class WorkbasketController extends AbstractPagingController {
|
||||||
List<WorkbasketAccessItem> updatedWbAccessItems =
|
List<WorkbasketAccessItem> updatedWbAccessItems =
|
||||||
workbasketService.getWorkbasketAccessItems(workbasketId);
|
workbasketService.getWorkbasketAccessItems(workbasketId);
|
||||||
|
|
||||||
ResponseEntity<WorkbasketAccessItemListResource> response =
|
ResponseEntity<WorkbasketAccessItemPaginatedListResource> response =
|
||||||
ResponseEntity.ok(
|
ResponseEntity.ok(
|
||||||
workbasketAccessItemResourceAssembler.toResources(workbasketId, updatedWbAccessItems));
|
workbasketAccessItemResourceAssembler.toResources(workbasketId, updatedWbAccessItems));
|
||||||
if (LOGGER.isDebugEnabled()) {
|
if (LOGGER.isDebugEnabled()) {
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
package pro.taskana.rest.resource;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
|
||||||
import java.util.Collection;
|
|
||||||
import org.springframework.hateoas.Link;
|
|
||||||
|
|
||||||
/** Resource class for {@link WorkbasketAccessItemResource} without Pagination. */
|
|
||||||
public class WorkbasketAccessItemListResource extends WorkbasketAccessItemPaginatedListResource {
|
|
||||||
|
|
||||||
public WorkbasketAccessItemListResource() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
public WorkbasketAccessItemListResource(
|
|
||||||
Collection<WorkbasketAccessItemResource> content, Link... links) {
|
|
||||||
super(content, null, links);
|
|
||||||
}
|
|
||||||
|
|
||||||
public WorkbasketAccessItemListResource(
|
|
||||||
Collection<WorkbasketAccessItemResource> content, Iterable<Link> links) {
|
|
||||||
super(content, null, links);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@JsonIgnore
|
|
||||||
public PageMetadata getMetadata() {
|
|
||||||
return super.getMetadata();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -2,6 +2,7 @@ package pro.taskana.rest.resource;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Objects;
|
||||||
import org.springframework.hateoas.Link;
|
import org.springframework.hateoas.Link;
|
||||||
|
|
||||||
/** Resource class for {@link WorkbasketAccessItemResource} with Pagination. */
|
/** Resource class for {@link WorkbasketAccessItemResource} with Pagination. */
|
||||||
|
@ -29,4 +30,14 @@ public class WorkbasketAccessItemPaginatedListResource
|
||||||
public Collection<WorkbasketAccessItemResource> getContent() {
|
public Collection<WorkbasketAccessItemResource> getContent() {
|
||||||
return super.getContent();
|
return super.getContent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageMetadata getMetadata() {
|
||||||
|
PageMetadata pageMetadata = super.getMetadata();
|
||||||
|
if (Objects.isNull(pageMetadata)) {
|
||||||
|
Collection<WorkbasketAccessItemResource> content = getContent();
|
||||||
|
return new PageMetadata(content.size(), 0, content.size());
|
||||||
|
}
|
||||||
|
return pageMetadata;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,11 +54,11 @@ public class WorkbasketAccessItemResourceAssembler
|
||||||
return new WorkbasketAccessItemPaginatedListResource(toResources(entities), pageMetadata);
|
return new WorkbasketAccessItemPaginatedListResource(toResources(entities), pageMetadata);
|
||||||
}
|
}
|
||||||
|
|
||||||
public WorkbasketAccessItemListResource toResources(
|
public WorkbasketAccessItemPaginatedListResource toResources(
|
||||||
String workbasketId, List<WorkbasketAccessItem> entities)
|
String workbasketId, List<WorkbasketAccessItem> entities)
|
||||||
throws NotAuthorizedException, WorkbasketNotFoundException {
|
throws NotAuthorizedException, WorkbasketNotFoundException {
|
||||||
WorkbasketAccessItemListResource accessItemListResource =
|
WorkbasketAccessItemPaginatedListResource accessItemListResource =
|
||||||
new WorkbasketAccessItemListResource(super.toResources(entities));
|
new WorkbasketAccessItemPaginatedListResource(super.toResources(entities), null);
|
||||||
accessItemListResource.add(
|
accessItemListResource.add(
|
||||||
linkTo(methodOn(WorkbasketController.class).getWorkbasketAccessItems(workbasketId))
|
linkTo(methodOn(WorkbasketController.class).getWorkbasketAccessItems(workbasketId))
|
||||||
.withSelfRel());
|
.withSelfRel());
|
||||||
|
|
|
@ -56,7 +56,10 @@ class WorkbasketAccessItemControllerRestDocumentation extends BaseRestDocumentat
|
||||||
accessItemFieldDescriptionsMap.put("accessItems.permCustom11", "");
|
accessItemFieldDescriptionsMap.put("accessItems.permCustom11", "");
|
||||||
accessItemFieldDescriptionsMap.put("accessItems.permCustom12", "");
|
accessItemFieldDescriptionsMap.put("accessItems.permCustom12", "");
|
||||||
accessItemFieldDescriptionsMap.put("_links.self.href", "Link to self");
|
accessItemFieldDescriptionsMap.put("_links.self.href", "Link to self");
|
||||||
accessItemFieldDescriptionsMap.put("page", "Number of page");
|
accessItemFieldDescriptionsMap.put("page.size", "The page size");
|
||||||
|
accessItemFieldDescriptionsMap.put("page.number", "Zero-indexed current page");
|
||||||
|
accessItemFieldDescriptionsMap.put("page.totalElements", "The total number of elements");
|
||||||
|
accessItemFieldDescriptionsMap.put("page.totalPages", "Total amount of pages");
|
||||||
|
|
||||||
accessItemFieldDescriptors =
|
accessItemFieldDescriptors =
|
||||||
new FieldDescriptor[] {
|
new FieldDescriptor[] {
|
||||||
|
@ -106,7 +109,13 @@ class WorkbasketAccessItemControllerRestDocumentation extends BaseRestDocumentat
|
||||||
.description(accessItemFieldDescriptionsMap.get("accessItems.permCustom12")),
|
.description(accessItemFieldDescriptionsMap.get("accessItems.permCustom12")),
|
||||||
fieldWithPath("_links.self.href")
|
fieldWithPath("_links.self.href")
|
||||||
.description(accessItemFieldDescriptionsMap.get("_links.self.href")),
|
.description(accessItemFieldDescriptionsMap.get("_links.self.href")),
|
||||||
fieldWithPath("page").description(accessItemFieldDescriptionsMap.get("page"))
|
fieldWithPath("page.size").description(accessItemFieldDescriptionsMap.get("page.size")),
|
||||||
|
fieldWithPath("page.number")
|
||||||
|
.description(accessItemFieldDescriptionsMap.get("page.number")),
|
||||||
|
fieldWithPath("page.totalElements")
|
||||||
|
.description(accessItemFieldDescriptionsMap.get("page.totalElements")),
|
||||||
|
fieldWithPath("page.totalPages")
|
||||||
|
.description(accessItemFieldDescriptionsMap.get("page.totalPages")),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -109,6 +109,10 @@ class WorkbasketControllerRestDocumentation extends BaseRestDocumentation {
|
||||||
accessItemFieldDescriptionsMap.put("accessItems.permCustom12", "");
|
accessItemFieldDescriptionsMap.put("accessItems.permCustom12", "");
|
||||||
accessItemFieldDescriptionsMap.put(
|
accessItemFieldDescriptionsMap.put(
|
||||||
"accessItems._links.workbasket.href", "Link to the workbasket");
|
"accessItems._links.workbasket.href", "Link to the workbasket");
|
||||||
|
accessItemFieldDescriptionsMap.put("page.size", "The page size");
|
||||||
|
accessItemFieldDescriptionsMap.put("page.number", "Zero-indexed current page");
|
||||||
|
accessItemFieldDescriptionsMap.put("page.totalElements", "The total number of elements");
|
||||||
|
accessItemFieldDescriptionsMap.put("page.totalPages", "Total amount of pages");
|
||||||
|
|
||||||
allWorkbasketsFieldDescriptors =
|
allWorkbasketsFieldDescriptors =
|
||||||
new FieldDescriptor[] {
|
new FieldDescriptor[] {
|
||||||
|
@ -225,6 +229,13 @@ class WorkbasketControllerRestDocumentation extends BaseRestDocumentation {
|
||||||
.description(accessItemFieldDescriptionsMap.get("accessItems.permCustom11")),
|
.description(accessItemFieldDescriptionsMap.get("accessItems.permCustom11")),
|
||||||
fieldWithPath("accessItems[].permCustom12")
|
fieldWithPath("accessItems[].permCustom12")
|
||||||
.description(accessItemFieldDescriptionsMap.get("accessItems.permCustom12")),
|
.description(accessItemFieldDescriptionsMap.get("accessItems.permCustom12")),
|
||||||
|
fieldWithPath("page.size").description(accessItemFieldDescriptionsMap.get("page.size")),
|
||||||
|
fieldWithPath("page.number")
|
||||||
|
.description(accessItemFieldDescriptionsMap.get("page.number")),
|
||||||
|
fieldWithPath("page.totalElements")
|
||||||
|
.description(accessItemFieldDescriptionsMap.get("page.totalElements")),
|
||||||
|
fieldWithPath("page.totalPages")
|
||||||
|
.description(accessItemFieldDescriptionsMap.get("page.totalPages")),
|
||||||
fieldWithPath("_links.self.href").ignored(),
|
fieldWithPath("_links.self.href").ignored(),
|
||||||
fieldWithPath("_links.workbasket.href").ignored()
|
fieldWithPath("_links.workbasket.href").ignored()
|
||||||
};
|
};
|
||||||
|
@ -233,6 +244,7 @@ class WorkbasketControllerRestDocumentation extends BaseRestDocumentation {
|
||||||
new FieldDescriptor[] {
|
new FieldDescriptor[] {
|
||||||
subsectionWithPath("accessItems")
|
subsectionWithPath("accessItems")
|
||||||
.description("An array of <<access-item, Access Items>>"),
|
.description("An array of <<access-item, Access Items>>"),
|
||||||
|
subsectionWithPath("page").description("Number of page"),
|
||||||
fieldWithPath("_links.self.href").ignored(),
|
fieldWithPath("_links.self.href").ignored(),
|
||||||
fieldWithPath("_links.workbasket.href").ignored()
|
fieldWithPath("_links.workbasket.href").ignored()
|
||||||
};
|
};
|
||||||
|
|
|
@ -21,7 +21,6 @@ import org.springframework.web.client.RestTemplate;
|
||||||
|
|
||||||
import pro.taskana.RestHelper;
|
import pro.taskana.RestHelper;
|
||||||
import pro.taskana.TaskanaSpringBootTest;
|
import pro.taskana.TaskanaSpringBootTest;
|
||||||
import pro.taskana.rest.resource.WorkbasketAccessItemListResource;
|
|
||||||
import pro.taskana.rest.resource.WorkbasketAccessItemPaginatedListResource;
|
import pro.taskana.rest.resource.WorkbasketAccessItemPaginatedListResource;
|
||||||
|
|
||||||
/** Test WorkbasketAccessItemController. */
|
/** Test WorkbasketAccessItemController. */
|
||||||
|
@ -39,24 +38,24 @@ class WorkbasketAccessItemControllerIntTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testGetAllWorkbasketAccessItems() {
|
void testGetAllWorkbasketAccessItems() {
|
||||||
ResponseEntity<WorkbasketAccessItemListResource> response =
|
ResponseEntity<WorkbasketAccessItemPaginatedListResource> response =
|
||||||
template.exchange(
|
template.exchange(
|
||||||
restHelper.toUrl(Mapping.URL_WORKBASKETACCESSITEMS),
|
restHelper.toUrl(Mapping.URL_WORKBASKETACCESSITEMS),
|
||||||
HttpMethod.GET,
|
HttpMethod.GET,
|
||||||
restHelper.defaultRequest(),
|
restHelper.defaultRequest(),
|
||||||
ParameterizedTypeReference.forType(WorkbasketAccessItemListResource.class));
|
ParameterizedTypeReference.forType(WorkbasketAccessItemPaginatedListResource.class));
|
||||||
assertNotNull(response.getBody().getLink(Link.REL_SELF));
|
assertNotNull(response.getBody().getLink(Link.REL_SELF));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testGetWorkbasketAccessItemsKeepingFilters() {
|
void testGetWorkbasketAccessItemsKeepingFilters() {
|
||||||
String parameters = "?sort-by=workbasket-key&order=asc&page=1&page-size=9&access-ids=user_1_1";
|
String parameters = "?sort-by=workbasket-key&order=asc&page=1&page-size=9&access-ids=user_1_1";
|
||||||
ResponseEntity<WorkbasketAccessItemListResource> response =
|
ResponseEntity<WorkbasketAccessItemPaginatedListResource> response =
|
||||||
template.exchange(
|
template.exchange(
|
||||||
restHelper.toUrl(Mapping.URL_WORKBASKETACCESSITEMS) + parameters,
|
restHelper.toUrl(Mapping.URL_WORKBASKETACCESSITEMS) + parameters,
|
||||||
HttpMethod.GET,
|
HttpMethod.GET,
|
||||||
restHelper.defaultRequest(),
|
restHelper.defaultRequest(),
|
||||||
ParameterizedTypeReference.forType(WorkbasketAccessItemListResource.class));
|
ParameterizedTypeReference.forType(WorkbasketAccessItemPaginatedListResource.class));
|
||||||
assertNotNull(response.getBody().getLink(Link.REL_SELF));
|
assertNotNull(response.getBody().getLink(Link.REL_SELF));
|
||||||
assertTrue(response.getBody().getLink(Link.REL_SELF).getHref().endsWith(parameters));
|
assertTrue(response.getBody().getLink(Link.REL_SELF).getHref().endsWith(parameters));
|
||||||
}
|
}
|
||||||
|
@ -69,7 +68,7 @@ class WorkbasketAccessItemControllerIntTest {
|
||||||
+ "?sort-by=workbasket-key&order=asc&page=1&page-size=9&invalid=user_1_1",
|
+ "?sort-by=workbasket-key&order=asc&page=1&page-size=9&invalid=user_1_1",
|
||||||
HttpMethod.GET,
|
HttpMethod.GET,
|
||||||
restHelper.defaultRequest(),
|
restHelper.defaultRequest(),
|
||||||
ParameterizedTypeReference.forType(WorkbasketAccessItemListResource.class));
|
ParameterizedTypeReference.forType(WorkbasketAccessItemPaginatedListResource.class));
|
||||||
fail();
|
fail();
|
||||||
} catch (HttpClientErrorException e) {
|
} catch (HttpClientErrorException e) {
|
||||||
assertEquals(HttpStatus.BAD_REQUEST, e.getStatusCode());
|
assertEquals(HttpStatus.BAD_REQUEST, e.getStatusCode());
|
||||||
|
|
Loading…
Reference in New Issue