From 6c4fef76359694bc53222c5e90f1ee3468783e7f Mon Sep 17 00:00:00 2001 From: Mustapha Zorgati <15628173+mustaphazorgati@users.noreply.github.com> Date: Tue, 2 Jun 2020 05:20:10 +0200 Subject: [PATCH] TSK-1265: further cleanup of representationModelAssemblers --- .../ClassificationDefinitionController.java | 4 +-- ...ificationRepresentationModelAssembler.java | 18 +++++----- ...onSummaryRepresentationModelAssembler.java | 12 +++---- .../java/pro/taskana/common/rest/Mapping.java | 14 ++++---- .../assembler/TaskanaPagingAssembler.java | 4 +-- .../monitor/rest/MonitorController.java | 8 ++--- .../task/rest/TaskCommentController.java | 6 ++-- ...ttachmentRepresentationModelAssembler.java | 6 +--- ...skCommentRepresentationModelAssembler.java | 36 +++++++++---------- .../TaskRepresentationModelAssembler.java | 36 ++++++++----------- ...skSummaryRepresentationModelAssembler.java | 25 +++++++------ .../TaskCommentRepresentationModel.java | 34 +++++++++--------- .../rest/models/TaskRepresentationModel.java | 31 +++++++++------- .../rest/WorkbasketAccessItemController.java | 4 +-- .../rest/WorkbasketDefinitionController.java | 4 +-- ...ccessItemRepresentationModelAssembler.java | 2 +- ...efinitionRepresentationModelAssembler.java | 17 ++++----- ...etSummaryRepresentationModelAssembler.java | 20 ++++++----- ...sificationDefinitionControllerIntTest.java | 6 ++-- ...DefinitionControllerRestDocumentation.java | 4 +-- .../MonitorControllerRestDocumentation.java | 6 ++-- ...AccessItemControllerRestDocumentation.java | 4 +-- ...DefinitionControllerRestDocumentation.java | 4 +-- .../rest/TaskCommentControllerIntTest.java | 14 ++++---- ...mmentRepresentationModelAssemblerTest.java | 4 +-- .../TaskRepresentationModelAssemberTest.java | 5 +-- ...WorkbasketAccessItemControllerIntTest.java | 12 +++---- ...WorkbasketDefinitionControllerIntTest.java | 4 +-- 28 files changed, 168 insertions(+), 176 deletions(-) diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/classification/rest/ClassificationDefinitionController.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/classification/rest/ClassificationDefinitionController.java index f805c1887..32e406520 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/classification/rest/ClassificationDefinitionController.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/classification/rest/ClassificationDefinitionController.java @@ -66,7 +66,7 @@ public class ClassificationDefinitionController { this.classificationRepresentationModelAssembler = classificationRepresentationModelAssembler; } - @GetMapping(path = Mapping.URL_CLASSIFICATIONDEFINITION) + @GetMapping(path = Mapping.URL_CLASSIFICATIONDEFINITIONS) @Transactional(readOnly = true, rollbackFor = Exception.class) public ResponseEntity> exportClassifications( @RequestParam(required = false) String domain) { @@ -93,7 +93,7 @@ public class ClassificationDefinitionController { return response; } - @PostMapping(path = Mapping.URL_CLASSIFICATIONDEFINITION) + @PostMapping(path = Mapping.URL_CLASSIFICATIONDEFINITIONS) @Transactional(rollbackFor = Exception.class) public ResponseEntity importClassifications(@RequestParam("file") MultipartFile file) throws InvalidArgumentException, NotAuthorizedException, ConcurrencyException, diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/classification/rest/assembler/ClassificationRepresentationModelAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/classification/rest/assembler/ClassificationRepresentationModelAssembler.java index 20ce5e8bf..e7174225b 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/classification/rest/assembler/ClassificationRepresentationModelAssembler.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/classification/rest/assembler/ClassificationRepresentationModelAssembler.java @@ -37,15 +37,6 @@ public class ClassificationRepresentationModelAssembler public ClassificationRepresentationModel toModel(@NonNull Classification classification) { ClassificationRepresentationModel repModel = new ClassificationRepresentationModel(); - try { - repModel.add( - WebMvcLinkBuilder.linkTo( - methodOn(ClassificationController.class) - .getClassification(classification.getId())) - .withSelfRel()); - } catch (ClassificationNotFoundException e) { - throw new SystemException("caught unexpected Exception.", e.getCause()); - } repModel.setClassificationId(classification.getId()); repModel.setApplicationEntryPoint(classification.getApplicationEntryPoint()); repModel.setCategory(classification.getCategory()); @@ -69,6 +60,15 @@ public class ClassificationRepresentationModelAssembler repModel.setCreated(classification.getCreated()); repModel.setModified(classification.getModified()); repModel.setDescription(classification.getDescription()); + try { + repModel.add( + WebMvcLinkBuilder.linkTo( + methodOn(ClassificationController.class) + .getClassification(classification.getId())) + .withSelfRel()); + } catch (ClassificationNotFoundException e) { + throw new SystemException("caught unexpected Exception.", e.getCause()); + } return repModel; } diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/classification/rest/assembler/ClassificationSummaryRepresentationModelAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/classification/rest/assembler/ClassificationSummaryRepresentationModelAssembler.java index 5921eb4cf..9c0666004 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/classification/rest/assembler/ClassificationSummaryRepresentationModelAssembler.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/classification/rest/assembler/ClassificationSummaryRepresentationModelAssembler.java @@ -35,8 +35,8 @@ public class ClassificationSummaryRepresentationModelAssembler @Override public ClassificationSummaryRepresentationModel toModel( @NonNull ClassificationSummary classificationSummary) { - ClassificationSummaryRepresentationModel repModel - = new ClassificationSummaryRepresentationModel(); + ClassificationSummaryRepresentationModel repModel = + new ClassificationSummaryRepresentationModel(); repModel.setClassificationId(classificationSummary.getId()); repModel.setApplicationEntryPoint(classificationSummary.getApplicationEntryPoint()); repModel.setCategory(classificationSummary.getCategory()); @@ -62,8 +62,8 @@ public class ClassificationSummaryRepresentationModelAssembler public ClassificationSummary toEntityModel(ClassificationSummaryRepresentationModel repModel) { ClassificationImpl classification = (ClassificationImpl) - classificationService - .newClassification(repModel.getKey(), repModel.getDomain(), repModel.getType()); + classificationService.newClassification( + repModel.getKey(), repModel.getDomain(), repModel.getType()); classification.setId(repModel.getClassificationId()); classification.setApplicationEntryPoint(repModel.getApplicationEntryPoint()); classification.setCategory(repModel.getCategory()); @@ -88,10 +88,10 @@ public class ClassificationSummaryRepresentationModelAssembler return CLASSIFICATIONS; } - @PageLinks(Mapping.URL_CLASSIFICATIONS) @Override + @PageLinks(Mapping.URL_CLASSIFICATIONS) public TaskanaPagedModel toPageModel( - Iterable entities, PageMetadata pageMetadata) { + Iterable entities, PageMetadata pageMetadata) { return TaskanaPagingAssembler.super.toPageModel(entities, pageMetadata); } } diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/Mapping.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/Mapping.java index 5bf561903..3279c02bf 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/Mapping.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/Mapping.java @@ -8,13 +8,13 @@ public final class Mapping { public static final String URL_ACCESSID_GROUPS = URL_ACCESSID + "/groups"; public static final String URL_CLASSIFICATIONS = PRE + "classifications"; public static final String URL_CLASSIFICATIONS_ID = URL_CLASSIFICATIONS + "/{classificationId}"; - public static final String URL_CLASSIFICATIONDEFINITION = PRE + "classification-definitions"; + public static final String URL_CLASSIFICATIONDEFINITIONS = PRE + "classification-definitions"; public static final String URL_MONITOR = PRE + "monitor"; - public static final String URL_MONITOR_TASKSSTATUS = URL_MONITOR + "/tasks-status-report"; - public static final String URL_MONITOR_TASKSWORKBASKET = URL_MONITOR + "/tasks-workbasket-report"; - public static final String URL_MONITOR_TASKSWORKBASKETPLANNED = + public static final String URL_MONITOR_TASKS_STATUS = URL_MONITOR + "/tasks-status-report"; + public static final String URL_MONITOR_TASKS_WORKBASKET = URL_MONITOR + "/tasks-workbasket-report"; + public static final String URL_MONITOR_TASKS_WORKBASKET_PLANNED = URL_MONITOR + "/tasks-workbasket-planned-date-report"; - public static final String URL_MONITOR_TASKSCLASSIFICATION = + public static final String URL_MONITOR_TASKS_CLASSIFICATION = URL_MONITOR + "/tasks-classification-report"; public static final String URL_MONITOR_TIMESTAMP = URL_MONITOR + "/timestamp-report"; public static final String URL_DOMAIN = PRE + "domains"; @@ -36,14 +36,14 @@ public final class Mapping { public static final String URL_TASKS_ID_COMPLETE = URL_TASKS_ID + "/complete"; public static final String URL_TASKS_ID_TRANSFER_WORKBASKETID = URL_TASKS_ID + "/transfer/{workbasketId}"; - public static final String URL_WORKBASKETACCESSITEMS = PRE + "workbasket-access-items"; + public static final String URL_WORKBASKET_ACCESS_ITEMS = PRE + "workbasket-access-items"; public static final String URL_WORKBASKET = PRE + "workbaskets"; public static final String URL_WORKBASKET_ID = URL_WORKBASKET + "/{workbasketId}"; public static final String URL_WORKBASKET_ID_ACCESSITEMS = URL_WORKBASKET_ID + "/workbasketAccessItems"; public static final String URL_WORKBASKET_ID_DISTRIBUTION = URL_WORKBASKET_ID + "/distribution-targets"; - public static final String URL_WORKBASKETDEFINITIONS = PRE + "workbasket-definitions"; + public static final String URL_WORKBASKET_DEFINITIONS = PRE + "workbasket-definitions"; private Mapping() {} } diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/assembler/TaskanaPagingAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/assembler/TaskanaPagingAssembler.java index beb8207d2..107dcfaa4 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/assembler/TaskanaPagingAssembler.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/assembler/TaskanaPagingAssembler.java @@ -15,7 +15,7 @@ public interface TaskanaPagingAssembler toPageModel( - Iterable entities, PageMetadata pageMetadata) { + Iterable entities, PageMetadata pageMetadata) { return StreamSupport.stream(entities.spliterator(), false) .map(this::toModel) .collect( @@ -23,7 +23,7 @@ public interface TaskanaPagingAssembler new TaskanaPagedModel<>(getProperty(), l, pageMetadata))); } - default TaskanaPagedModel toPageModel(Iterable entities) { + default TaskanaPagedModel toPageModel(Iterable entities) { return toPageModel(entities, null); } } diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/monitor/rest/MonitorController.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/monitor/rest/MonitorController.java index 2b375c0b3..f62218b69 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/monitor/rest/MonitorController.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/monitor/rest/MonitorController.java @@ -44,7 +44,7 @@ public class MonitorController { this.reportRepresentationModelAssembler = reportRepresentationModelAssembler; } - @GetMapping(path = Mapping.URL_MONITOR_TASKSSTATUS) + @GetMapping(path = Mapping.URL_MONITOR_TASKS_STATUS) @Transactional(readOnly = true, rollbackFor = Exception.class) public ResponseEntity getTasksStatusReport( @RequestParam(required = false) List domains, @@ -68,7 +68,7 @@ public class MonitorController { return response; } - @GetMapping(path = Mapping.URL_MONITOR_TASKSWORKBASKET) + @GetMapping(path = Mapping.URL_MONITOR_TASKS_WORKBASKET) @Transactional(readOnly = true, rollbackFor = Exception.class) public ResponseEntity getTasksWorkbasketReport( @RequestParam(value = "states") List states) @@ -90,7 +90,7 @@ public class MonitorController { return ResponseEntity.status(HttpStatus.OK).body(report); } - @GetMapping(path = Mapping.URL_MONITOR_TASKSWORKBASKETPLANNED) + @GetMapping(path = Mapping.URL_MONITOR_TASKS_WORKBASKET_PLANNED) @Transactional(readOnly = true, rollbackFor = Exception.class) public ResponseEntity getTasksWorkbasketPlannedDateReport( @RequestParam(value = "daysInPast") int daysInPast, @@ -114,7 +114,7 @@ public class MonitorController { return ResponseEntity.status(HttpStatus.OK).body(report); } - @GetMapping(path = Mapping.URL_MONITOR_TASKSCLASSIFICATION) + @GetMapping(path = Mapping.URL_MONITOR_TASKS_CLASSIFICATION) @Transactional(readOnly = true, rollbackFor = Exception.class) public ResponseEntity getTasksClassificationReport() throws NotAuthorizedException, InvalidArgumentException { diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/TaskCommentController.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/TaskCommentController.java index a41efaa55..d520fe2c1 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/TaskCommentController.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/TaskCommentController.java @@ -3,6 +3,7 @@ package pro.taskana.task.rest; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.hateoas.config.EnableHypermediaSupport; import org.springframework.hateoas.config.EnableHypermediaSupport.HypermediaType; import org.springframework.http.HttpStatus; @@ -35,9 +36,10 @@ public class TaskCommentController { private static final Logger LOGGER = LoggerFactory.getLogger(TaskCommentController.class); - private TaskService taskService; - private TaskCommentRepresentationModelAssembler taskCommentRepresentationModelAssembler; + private final TaskService taskService; + private final TaskCommentRepresentationModelAssembler taskCommentRepresentationModelAssembler; + @Autowired TaskCommentController( TaskService taskService, TaskCommentRepresentationModelAssembler taskCommentRepresentationModelAssembler) { diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/assembler/AttachmentRepresentationModelAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/assembler/AttachmentRepresentationModelAssembler.java index 721fe4ad3..99236635b 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/assembler/AttachmentRepresentationModelAssembler.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/assembler/AttachmentRepresentationModelAssembler.java @@ -53,11 +53,7 @@ public class AttachmentRepresentationModelAssembler return repModel; } - public List toAttachmentList(List resources) { - return resources.stream().map(this::toEntityModel).collect(Collectors.toList()); - } - - private AttachmentImpl toEntityModel( + public AttachmentImpl toEntityModel( AttachmentRepresentationModel attachmentRepresentationModel) { AttachmentImpl attachment = (AttachmentImpl) taskService.newAttachment(); attachment.setId(attachmentRepresentationModel.getAttachmentId()); diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/assembler/TaskCommentRepresentationModelAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/assembler/TaskCommentRepresentationModelAssembler.java index 3257dec5c..1bbf0c70c 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/assembler/TaskCommentRepresentationModelAssembler.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/assembler/TaskCommentRepresentationModelAssembler.java @@ -4,7 +4,6 @@ import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.linkTo; import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.methodOn; import static pro.taskana.common.rest.models.TaskanaPagedModelKeys.TASK_COMMENTS; -import java.time.Instant; import java.util.List; import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Autowired; @@ -15,7 +14,9 @@ import org.springframework.stereotype.Component; import pro.taskana.common.api.exceptions.SystemException; import pro.taskana.common.rest.Mapping; +import pro.taskana.common.rest.assembler.TaskanaPagingAssembler; import pro.taskana.common.rest.models.TaskanaPagedModel; +import pro.taskana.common.rest.models.TaskanaPagedModelKeys; import pro.taskana.resource.rest.PageLinks; import pro.taskana.task.api.TaskService; import pro.taskana.task.api.models.TaskComment; @@ -26,7 +27,7 @@ import pro.taskana.task.rest.models.TaskCommentRepresentationModel; /** EntityModel assembler for {@link TaskCommentRepresentationModel}. */ @Component public class TaskCommentRepresentationModelAssembler - implements RepresentationModelAssembler { + implements TaskanaPagingAssembler { private final TaskService taskService; @@ -38,14 +39,13 @@ public class TaskCommentRepresentationModelAssembler @NonNull @Override public TaskCommentRepresentationModel toModel(@NonNull TaskComment taskComment) { - TaskCommentRepresentationModel repModel = - new TaskCommentRepresentationModel(); + TaskCommentRepresentationModel repModel = new TaskCommentRepresentationModel(); repModel.setTaskCommentId(taskComment.getId()); repModel.setTaskId(taskComment.getTaskId()); repModel.setTextField(taskComment.getTextField()); repModel.setCreator(taskComment.getCreator()); - repModel.setCreated(taskComment.getCreated().toString()); - repModel.setModified(taskComment.getModified().toString()); + repModel.setCreated(taskComment.getCreated()); + repModel.setModified(taskComment.getModified()); try { repModel.add( linkTo(methodOn(TaskCommentController.class).getTaskComment(taskComment.getId())) @@ -57,29 +57,25 @@ public class TaskCommentRepresentationModelAssembler } public TaskComment toEntityModel(TaskCommentRepresentationModel repModel) { - TaskCommentImpl taskComment = (TaskCommentImpl) taskService.newTaskComment(repModel.getTaskId()); taskComment.setId(repModel.getTaskCommentId()); taskComment.setTextField(repModel.getTextField()); taskComment.setCreator(repModel.getCreator()); - if (repModel.getCreated() != null) { - taskComment.setCreated(Instant.parse(repModel.getCreated())); - } - if (repModel.getModified() != null) { - taskComment.setModified(Instant.parse(repModel.getModified())); - } + taskComment.setCreated(repModel.getCreated()); + taskComment.setModified(repModel.getModified()); return taskComment; } + @Override @PageLinks(Mapping.URL_TASK_COMMENTS) public TaskanaPagedModel toPageModel( - List taskComments, PageMetadata pageMetadata) { - return taskComments.stream() - .map(this::toModel) - .collect( - Collectors.collectingAndThen( - Collectors.toList(), - list -> new TaskanaPagedModel<>(TASK_COMMENTS, list, pageMetadata))); + Iterable taskComments, PageMetadata pageMetadata) { + return TaskanaPagingAssembler.super.toPageModel(taskComments, pageMetadata); + } + + @Override + public TaskanaPagedModelKeys getProperty() { + return TASK_COMMENTS; } } diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/assembler/TaskRepresentationModelAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/assembler/TaskRepresentationModelAssembler.java index 1f8d1403c..c74c564ec 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/assembler/TaskRepresentationModelAssembler.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/assembler/TaskRepresentationModelAssembler.java @@ -11,11 +11,8 @@ import org.springframework.lang.NonNull; import org.springframework.stereotype.Component; import pro.taskana.classification.rest.assembler.ClassificationSummaryRepresentationModelAssembler; -import pro.taskana.common.api.exceptions.InvalidArgumentException; -import pro.taskana.common.api.exceptions.NotAuthorizedException; import pro.taskana.common.api.exceptions.SystemException; import pro.taskana.task.api.TaskService; -import pro.taskana.task.api.exceptions.TaskNotFoundException; import pro.taskana.task.api.models.Task; import pro.taskana.task.internal.models.TaskImpl; import pro.taskana.task.rest.TaskController; @@ -23,20 +20,14 @@ import pro.taskana.task.rest.models.TaskRepresentationModel; import pro.taskana.task.rest.models.TaskRepresentationModel.CustomAttribute; import pro.taskana.workbasket.rest.assembler.WorkbasketSummaryRepresentationModelAssembler; -/** - * EntityModel assembler for {@link TaskRepresentationModel}. - */ +/** EntityModel assembler for {@link TaskRepresentationModel}. */ @Component public class TaskRepresentationModelAssembler implements RepresentationModelAssembler { private final TaskService taskService; - private final ClassificationSummaryRepresentationModelAssembler classificationAssembler; - - private final WorkbasketSummaryRepresentationModelAssembler - workbasketAssembler; - + private final WorkbasketSummaryRepresentationModelAssembler workbasketAssembler; private final AttachmentRepresentationModelAssembler attachmentAssembler; @Autowired @@ -47,8 +38,7 @@ public class TaskRepresentationModelAssembler AttachmentRepresentationModelAssembler attachmentAssembler) { this.taskService = taskService; this.classificationAssembler = classificationAssembler; - this.workbasketAssembler - = workbasketAssembler; + this.workbasketAssembler = workbasketAssembler; this.attachmentAssembler = attachmentAssembler; } @@ -85,14 +75,13 @@ public class TaskRepresentationModelAssembler .collect(Collectors.toList())); repModel.setCustomAttributes( task.getCustomAttributes().entrySet().stream() - .map(e -> new TaskRepresentationModel.CustomAttribute(e.getKey(), e.getValue())) + .map(CustomAttribute::of) .collect(Collectors.toList())); repModel.setCallbackInfo( task.getCallbackInfo().entrySet().stream() - .map(e -> new TaskRepresentationModel.CustomAttribute(e.getKey(), e.getValue())) + .map(CustomAttribute::of) .collect(Collectors.toList())); try { - repModel.add(linkTo(methodOn(TaskController.class).getTask(task.getId())).withSelfRel()); repModel.setCustom1(task.getCustomAttribute("1")); repModel.setCustom2(task.getCustomAttribute("2")); repModel.setCustom3(task.getCustomAttribute("3")); @@ -109,15 +98,16 @@ public class TaskRepresentationModelAssembler repModel.setCustom14(task.getCustomAttribute("14")); repModel.setCustom15(task.getCustomAttribute("15")); repModel.setCustom16(task.getCustomAttribute("16")); - } catch (InvalidArgumentException | TaskNotFoundException | NotAuthorizedException e) { + repModel.add(linkTo(methodOn(TaskController.class).getTask(task.getId())).withSelfRel()); + } catch (Exception e) { throw new SystemException("caught unexpected Exception.", e.getCause()); } return repModel; } public Task toEntityModel(TaskRepresentationModel repModel) { - TaskImpl task = (TaskImpl) taskService - .newTask(repModel.getWorkbasketSummary().getWorkbasketId()); + TaskImpl task = + (TaskImpl) taskService.newTask(repModel.getWorkbasketSummary().getWorkbasketId()); task.setId(repModel.getTaskId()); task.setExternalId(repModel.getExternalId()); task.setCreated(repModel.getCreated()); @@ -134,8 +124,7 @@ public class TaskRepresentationModelAssembler task.setState(repModel.getState()); task.setClassificationSummary( classificationAssembler.toEntityModel(repModel.getClassificationSummary())); - task - .setWorkbasketSummary(workbasketAssembler.toEntityModel(repModel.getWorkbasketSummary())); + task.setWorkbasketSummary(workbasketAssembler.toEntityModel(repModel.getWorkbasketSummary())); task.setBusinessProcessId(repModel.getBusinessProcessId()); task.setParentBusinessProcessId(repModel.getParentBusinessProcessId()); task.setOwner(repModel.getOwner()); @@ -158,7 +147,10 @@ public class TaskRepresentationModelAssembler task.setCustom14(repModel.getCustom14()); task.setCustom15(repModel.getCustom15()); task.setCustom16(repModel.getCustom16()); - task.setAttachments(attachmentAssembler.toAttachmentList(repModel.getAttachments())); + task.setAttachments( + repModel.getAttachments().stream() + .map(attachmentAssembler::toEntityModel) + .collect(Collectors.toList())); task.setCustomAttributes( repModel.getCustomAttributes().stream() .filter(e -> Objects.nonNull(e.getKey()) && !e.getKey().isEmpty()) diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/assembler/TaskSummaryRepresentationModelAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/assembler/TaskSummaryRepresentationModelAssembler.java index 5dcc9cd31..a6d5eb259 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/assembler/TaskSummaryRepresentationModelAssembler.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/assembler/TaskSummaryRepresentationModelAssembler.java @@ -6,7 +6,6 @@ import java.util.List; import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.hateoas.PagedModel.PageMetadata; -import org.springframework.hateoas.server.RepresentationModelAssembler; import org.springframework.lang.NonNull; import org.springframework.stereotype.Component; @@ -14,7 +13,9 @@ import pro.taskana.classification.rest.assembler.ClassificationSummaryRepresenta import pro.taskana.common.api.exceptions.InvalidArgumentException; import pro.taskana.common.api.exceptions.SystemException; import pro.taskana.common.rest.Mapping; +import pro.taskana.common.rest.assembler.TaskanaPagingAssembler; import pro.taskana.common.rest.models.TaskanaPagedModel; +import pro.taskana.common.rest.models.TaskanaPagedModelKeys; import pro.taskana.resource.rest.PageLinks; import pro.taskana.task.api.TaskService; import pro.taskana.task.api.models.TaskSummary; @@ -22,12 +23,10 @@ import pro.taskana.task.internal.models.TaskImpl; import pro.taskana.task.rest.models.TaskSummaryRepresentationModel; import pro.taskana.workbasket.rest.assembler.WorkbasketSummaryRepresentationModelAssembler; -/** - * EntityModel assembler for {@link TaskSummaryRepresentationModel}. - */ +/** EntityModel assembler for {@link TaskSummaryRepresentationModel}. */ @Component public class TaskSummaryRepresentationModelAssembler - implements RepresentationModelAssembler { + implements TaskanaPagingAssembler { private final ClassificationSummaryRepresentationModelAssembler classificationAssembler; private final WorkbasketSummaryRepresentationModelAssembler workbasketAssembler; @@ -118,8 +117,8 @@ public class TaskSummaryRepresentationModelAssembler taskSummary.setState(repModel.getState()); taskSummary.setClassificationSummary( classificationAssembler.toEntityModel(repModel.getClassificationSummary())); - taskSummary - .setWorkbasketSummary(workbasketAssembler.toEntityModel(repModel.getWorkbasketSummary())); + taskSummary.setWorkbasketSummary( + workbasketAssembler.toEntityModel(repModel.getWorkbasketSummary())); taskSummary.setBusinessProcessId(repModel.getBusinessProcessId()); taskSummary.setParentBusinessProcessId(repModel.getParentBusinessProcessId()); taskSummary.setOwner(repModel.getOwner()); @@ -152,11 +151,11 @@ public class TaskSummaryRepresentationModelAssembler @PageLinks(Mapping.URL_TASKS) public TaskanaPagedModel toPageModel( List taskSummaries, PageMetadata pageMetadata) { - return taskSummaries.stream() - .map(this::toModel) - .collect( - Collectors.collectingAndThen( - Collectors.toList(), - list -> new TaskanaPagedModel<>(TASKS, list, pageMetadata))); + return TaskanaPagingAssembler.super.toPageModel(taskSummaries, pageMetadata); + } + + @Override + public TaskanaPagedModelKeys getProperty() { + return TASKS; } } diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/models/TaskCommentRepresentationModel.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/models/TaskCommentRepresentationModel.java index 539cb5c95..5edbc913a 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/models/TaskCommentRepresentationModel.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/models/TaskCommentRepresentationModel.java @@ -1,5 +1,6 @@ package pro.taskana.task.rest.models; +import java.time.Instant; import org.springframework.hateoas.RepresentationModel; import pro.taskana.task.api.models.TaskComment; @@ -12,15 +13,15 @@ public class TaskCommentRepresentationModel private String taskId; private String textField; private String creator; - private String created; - private String modified; + private Instant created; + private Instant modified; public String getTaskCommentId() { return taskCommentId; } - public void setTaskCommentId(String id) { - this.taskCommentId = id; + public void setTaskCommentId(String taskCommentId) { + this.taskCommentId = taskCommentId; } public String getTaskId() { @@ -31,14 +32,6 @@ public class TaskCommentRepresentationModel this.taskId = taskId; } - public String getCreator() { - return creator; - } - - public void setCreator(String creator) { - this.creator = creator; - } - public String getTextField() { return textField; } @@ -47,20 +40,27 @@ public class TaskCommentRepresentationModel this.textField = textField; } - public String getCreated() { + public String getCreator() { + return creator; + } + + public void setCreator(String creator) { + this.creator = creator; + } + + public Instant getCreated() { return created; } - public void setCreated(String created) { + public void setCreated(Instant created) { this.created = created; } - public String getModified() { + public Instant getModified() { return modified; } - public void setModified(String modified) { + public void setModified(Instant modified) { this.modified = modified; } - } diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/models/TaskRepresentationModel.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/models/TaskRepresentationModel.java index 82ca1b8af..dad14cc77 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/models/TaskRepresentationModel.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/models/TaskRepresentationModel.java @@ -4,17 +4,15 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Map.Entry; import pro.taskana.task.api.models.Task; import pro.taskana.task.rest.assembler.AttachmentRepresentationModelAssembler; -/** - * EntityModel class for {@link Task}. - */ +/** EntityModel class for {@link Task}. */ @JsonIgnoreProperties("attachmentSummaries") public class TaskRepresentationModel extends TaskSummaryRepresentationModel { - protected AttachmentRepresentationModelAssembler attachmentAssembler; // All objects have to be serializable private List customAttributes = Collections.emptyList(); @@ -51,27 +49,34 @@ public class TaskRepresentationModel extends TaskSummaryRepresentationModel { */ public static class CustomAttribute { - private final String key; - private final String value; + private String key; + private String value; - @SuppressWarnings("unused") - public CustomAttribute() { - this(null, null); - // necessary for jackson. + public static CustomAttribute of(Entry entry) { + return of(entry.getKey(), entry.getValue()); } - public CustomAttribute(String key, String value) { - this.key = key; - this.value = value; + public static CustomAttribute of (String key, String value) { + CustomAttribute customAttribute = new CustomAttribute(); + customAttribute.setKey(key); + customAttribute.setValue(value); + return customAttribute; } public String getKey() { return key; } + public void setKey(String key) { + this.key = key; + } + public String getValue() { return value; } + public void setValue(String value) { + this.value = value; + } } } diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/workbasket/rest/WorkbasketAccessItemController.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/workbasket/rest/WorkbasketAccessItemController.java index 5725982e1..218a55c22 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/workbasket/rest/WorkbasketAccessItemController.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/workbasket/rest/WorkbasketAccessItemController.java @@ -72,7 +72,7 @@ public class WorkbasketAccessItemController extends AbstractPagingController { * @throws NotAuthorizedException if the user is not authorized. * @throws InvalidArgumentException if some argument is invalid. */ - @GetMapping(path = Mapping.URL_WORKBASKETACCESSITEMS) + @GetMapping(path = Mapping.URL_WORKBASKET_ACCESS_ITEMS) public ResponseEntity> getWorkbasketAccessItems( @RequestParam MultiValueMap params) @@ -110,7 +110,7 @@ public class WorkbasketAccessItemController extends AbstractPagingController { * @throws NotAuthorizedException if the user is not authorized. * @throws InvalidArgumentException if some argument is invalid. */ - @DeleteMapping(path = Mapping.URL_WORKBASKETACCESSITEMS) + @DeleteMapping(path = Mapping.URL_WORKBASKET_ACCESS_ITEMS) public ResponseEntity removeWorkbasketAccessItems( @RequestParam("access-id") String accessId) throws NotAuthorizedException, InvalidArgumentException { diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/workbasket/rest/WorkbasketDefinitionController.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/workbasket/rest/WorkbasketDefinitionController.java index a8abc8f10..96f3de4e1 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/workbasket/rest/WorkbasketDefinitionController.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/workbasket/rest/WorkbasketDefinitionController.java @@ -73,7 +73,7 @@ public class WorkbasketDefinitionController { this.mapper = mapper; } - @GetMapping(path = Mapping.URL_WORKBASKETDEFINITIONS) + @GetMapping(path = Mapping.URL_WORKBASKET_DEFINITIONS) @Transactional(readOnly = true, rollbackFor = Exception.class) public ResponseEntity> exportWorkbaskets(@RequestParam(required = false) String domain) { @@ -122,7 +122,7 @@ public class WorkbasketDefinitionController { * workbasket and access_id already exists. * @throws ConcurrencyException if workbasket was updated by an other user */ - @PostMapping(path = Mapping.URL_WORKBASKETDEFINITIONS) + @PostMapping(path = Mapping.URL_WORKBASKET_DEFINITIONS) @Transactional(rollbackFor = Exception.class) public ResponseEntity importWorkbaskets(@RequestParam("file") MultipartFile file) throws IOException, NotAuthorizedException, DomainNotFoundException, diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/workbasket/rest/assembler/WorkbasketAccessItemRepresentationModelAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/workbasket/rest/assembler/WorkbasketAccessItemRepresentationModelAssembler.java index 5802a0453..e42557bc4 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/workbasket/rest/assembler/WorkbasketAccessItemRepresentationModelAssembler.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/workbasket/rest/assembler/WorkbasketAccessItemRepresentationModelAssembler.java @@ -115,7 +115,7 @@ public class WorkbasketAccessItemRepresentationModelAssembler return pageModel; } - @PageLinks(Mapping.URL_WORKBASKETACCESSITEMS) + @PageLinks(Mapping.URL_WORKBASKET_ACCESS_ITEMS) public TaskanaPagedModel toPageModel( List workbasketAccessItems, PageMetadata pageMetadata) { return workbasketAccessItems.stream() diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/workbasket/rest/assembler/WorkbasketDefinitionRepresentationModelAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/workbasket/rest/assembler/WorkbasketDefinitionRepresentationModelAssembler.java index 25f4a582f..c84bb6e08 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/workbasket/rest/assembler/WorkbasketDefinitionRepresentationModelAssembler.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/workbasket/rest/assembler/WorkbasketDefinitionRepresentationModelAssembler.java @@ -34,16 +34,14 @@ public class WorkbasketDefinitionRepresentationModelAssembler private final WorkbasketService workbasketService; @Autowired - public WorkbasketDefinitionRepresentationModelAssembler(WorkbasketService workbasketService, - WorkbasketRepresentationModelAssembler workbasketAssembler - ) { + public WorkbasketDefinitionRepresentationModelAssembler(WorkbasketService workbasketService) { this.workbasketService = workbasketService; } @NonNull public WorkbasketDefinitionRepresentationModel toModel(@NonNull Workbasket workbasket) { - WorkbasketRepresentationModelWithoutLinks basket - = new WorkbasketRepresentationModelWithoutLinks(); + WorkbasketRepresentationModelWithoutLinks basket = + new WorkbasketRepresentationModelWithoutLinks(); basket.setKey(workbasket.getKey()); basket.setModified(workbasket.getModified()); @@ -64,7 +62,7 @@ public class WorkbasketDefinitionRepresentationModelAssembler basket.setOrgLevel4(workbasket.getOrgLevel4()); List authorizations = new ArrayList<>(); - Set distroTargets = null; + Set distroTargets; try { for (WorkbasketAccessItem accessItem : workbasketService.getWorkbasketAccessItems(basket.getWorkbasketId())) { @@ -78,8 +76,8 @@ public class WorkbasketDefinitionRepresentationModelAssembler throw new SystemException("Caught Exception", e); } - WorkbasketDefinitionRepresentationModel repModel - = new WorkbasketDefinitionRepresentationModel(); + WorkbasketDefinitionRepresentationModel repModel = + new WorkbasketDefinitionRepresentationModel(); repModel.setWorkbasket(basket); repModel.setAuthorizations(authorizations); @@ -89,8 +87,7 @@ public class WorkbasketDefinitionRepresentationModelAssembler public Workbasket toEntityModel(WorkbasketRepresentationModel repModel) { WorkbasketImpl workbasket = - (WorkbasketImpl) - workbasketService.newWorkbasket(repModel.getKey(), repModel.getDomain()); + (WorkbasketImpl) workbasketService.newWorkbasket(repModel.getKey(), repModel.getDomain()); workbasket.setId(repModel.getWorkbasketId()); workbasket.setName(repModel.getName()); workbasket.setType(repModel.getType()); diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/workbasket/rest/assembler/WorkbasketSummaryRepresentationModelAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/workbasket/rest/assembler/WorkbasketSummaryRepresentationModelAssembler.java index 104710800..70d81cfb1 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/workbasket/rest/assembler/WorkbasketSummaryRepresentationModelAssembler.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/workbasket/rest/assembler/WorkbasketSummaryRepresentationModelAssembler.java @@ -2,6 +2,7 @@ package pro.taskana.workbasket.rest.assembler; import static pro.taskana.common.rest.models.TaskanaPagedModelKeys.DISTRIBUTION_TARGETS; import static pro.taskana.common.rest.models.TaskanaPagedModelKeys.WORKBASKETS; +import static pro.taskana.common.rest.models.TaskanaPagedModelKeys.WORKBASKET_DEFINITIONS; import java.util.List; import java.util.stream.Collectors; @@ -12,7 +13,9 @@ import org.springframework.lang.NonNull; import org.springframework.stereotype.Component; import pro.taskana.common.rest.Mapping; +import pro.taskana.common.rest.assembler.TaskanaPagingAssembler; import pro.taskana.common.rest.models.TaskanaPagedModel; +import pro.taskana.common.rest.models.TaskanaPagedModelKeys; import pro.taskana.resource.rest.PageLinks; import pro.taskana.workbasket.api.WorkbasketService; import pro.taskana.workbasket.api.models.WorkbasketSummary; @@ -24,7 +27,7 @@ import pro.taskana.workbasket.rest.models.WorkbasketSummaryRepresentationModel; */ @Component public class WorkbasketSummaryRepresentationModelAssembler implements - RepresentationModelAssembler { + TaskanaPagingAssembler { private WorkbasketService workbasketService; @@ -80,15 +83,16 @@ public class WorkbasketSummaryRepresentationModelAssembler implements return workbasket; } + @Override @PageLinks(Mapping.URL_WORKBASKET) public TaskanaPagedModel toPageModel( - List workbasketSummaries, PageMetadata pageMetadata) { - return workbasketSummaries.stream() - .map(this::toModel) - .collect( - Collectors.collectingAndThen( - Collectors.toList(), - list -> new TaskanaPagedModel<>(WORKBASKETS, list, pageMetadata))); + Iterable entities, PageMetadata pageMetadata) { + return TaskanaPagingAssembler.super.toPageModel(entities, pageMetadata); + } + + @Override + public TaskanaPagedModelKeys getProperty() { + return WORKBASKETS; } @PageLinks(Mapping.URL_WORKBASKET_ID_DISTRIBUTION) diff --git a/rest/taskana-rest-spring/src/test/java/pro/taskana/classification/rest/ClassificationDefinitionControllerIntTest.java b/rest/taskana-rest-spring/src/test/java/pro/taskana/classification/rest/ClassificationDefinitionControllerIntTest.java index 2eeb14cae..96cd7ba9d 100644 --- a/rest/taskana-rest-spring/src/test/java/pro/taskana/classification/rest/ClassificationDefinitionControllerIntTest.java +++ b/rest/taskana-rest-spring/src/test/java/pro/taskana/classification/rest/ClassificationDefinitionControllerIntTest.java @@ -79,7 +79,7 @@ class ClassificationDefinitionControllerIntTest { void testExportClassifications() { ResponseEntity> response = template.exchange( - restHelper.toUrl(Mapping.URL_CLASSIFICATIONDEFINITION) + "?domain=DOMAIN_B", + restHelper.toUrl(Mapping.URL_CLASSIFICATIONDEFINITIONS) + "?domain=DOMAIN_B", HttpMethod.GET, restHelper.defaultRequest(), CLASSIFICATION_PAGE_MODEL_TYPE); @@ -99,7 +99,7 @@ class ClassificationDefinitionControllerIntTest { void testExportClassificationsFromWrongDomain() { ResponseEntity> response = template.exchange( - restHelper.toUrl(Mapping.URL_CLASSIFICATIONDEFINITION) + "?domain=ADdfe", + restHelper.toUrl(Mapping.URL_CLASSIFICATIONDEFINITIONS) + "?domain=ADdfe", HttpMethod.GET, restHelper.defaultRequest(), CLASSIFICATION_PAGE_MODEL_TYPE); @@ -444,7 +444,7 @@ class ClassificationDefinitionControllerIntTest { body.add("file", new FileSystemResource(tmpFile)); HttpEntity> requestEntity = new HttpEntity<>(body, headers); - String serverUrl = restHelper.toUrl(Mapping.URL_CLASSIFICATIONDEFINITION); + String serverUrl = restHelper.toUrl(Mapping.URL_CLASSIFICATIONDEFINITIONS); return template.postForEntity(serverUrl, requestEntity, Void.class); } diff --git a/rest/taskana-rest-spring/src/test/java/pro/taskana/doc/api/ClassificationDefinitionControllerRestDocumentation.java b/rest/taskana-rest-spring/src/test/java/pro/taskana/doc/api/ClassificationDefinitionControllerRestDocumentation.java index 2471bccdb..4ce550d26 100644 --- a/rest/taskana-rest-spring/src/test/java/pro/taskana/doc/api/ClassificationDefinitionControllerRestDocumentation.java +++ b/rest/taskana-rest-spring/src/test/java/pro/taskana/doc/api/ClassificationDefinitionControllerRestDocumentation.java @@ -37,7 +37,7 @@ class ClassificationDefinitionControllerRestDocumentation extends BaseRestDocume this.mockMvc .perform( RestDocumentationRequestBuilders.get( - restHelper.toUrl(Mapping.URL_CLASSIFICATIONDEFINITION)) + restHelper.toUrl(Mapping.URL_CLASSIFICATIONDEFINITIONS)) .accept("application/json") .header("Authorization", "Basic dGVhbWxlYWRfMTp0ZWFtbGVhZF8x")) .andExpect(MockMvcResultMatchers.status().isOk()) @@ -54,7 +54,7 @@ class ClassificationDefinitionControllerRestDocumentation extends BaseRestDocume this.mockMvc .perform( - multipart(restHelper.toUrl(Mapping.URL_CLASSIFICATIONDEFINITION)) + multipart(restHelper.toUrl(Mapping.URL_CLASSIFICATIONDEFINITIONS)) .file("file", definitionString.getBytes(UTF_8)) .header("Authorization", "Basic dGVhbWxlYWRfMTp0ZWFtbGVhZF8x")) .andExpect(MockMvcResultMatchers.status().isNoContent()) diff --git a/rest/taskana-rest-spring/src/test/java/pro/taskana/doc/api/MonitorControllerRestDocumentation.java b/rest/taskana-rest-spring/src/test/java/pro/taskana/doc/api/MonitorControllerRestDocumentation.java index 439b8ee66..ad95891ad 100644 --- a/rest/taskana-rest-spring/src/test/java/pro/taskana/doc/api/MonitorControllerRestDocumentation.java +++ b/rest/taskana-rest-spring/src/test/java/pro/taskana/doc/api/MonitorControllerRestDocumentation.java @@ -52,7 +52,7 @@ class MonitorControllerRestDocumentation extends BaseRestDocumentation { void getTaskStatusReport() throws Exception { this.mockMvc .perform( - RestDocumentationRequestBuilders.get(restHelper.toUrl(Mapping.URL_MONITOR_TASKSSTATUS)) + RestDocumentationRequestBuilders.get(restHelper.toUrl(Mapping.URL_MONITOR_TASKS_STATUS)) .header("Authorization", "Basic YWRtaW46YWRtaW4=")) .andExpect(MockMvcResultMatchers.status().isOk()) .andDo( @@ -65,7 +65,7 @@ class MonitorControllerRestDocumentation extends BaseRestDocumentation { this.mockMvc .perform( RestDocumentationRequestBuilders.get( - restHelper.toUrl(Mapping.URL_MONITOR_TASKSWORKBASKET) + restHelper.toUrl(Mapping.URL_MONITOR_TASKS_WORKBASKET) + "?daysInPast=4&states=READY,CLAIMED,COMPLETED") .accept("application/hal+json") .header("Authorization", "Basic YWRtaW46YWRtaW4=")) @@ -80,7 +80,7 @@ class MonitorControllerRestDocumentation extends BaseRestDocumentation { this.mockMvc .perform( RestDocumentationRequestBuilders.get( - restHelper.toUrl(Mapping.URL_MONITOR_TASKSCLASSIFICATION)) + restHelper.toUrl(Mapping.URL_MONITOR_TASKS_CLASSIFICATION)) .accept("application/hal+json") .header("Authorization", "Basic YWRtaW46YWRtaW4=")) .andExpect(MockMvcResultMatchers.status().isOk()) diff --git a/rest/taskana-rest-spring/src/test/java/pro/taskana/doc/api/WorkbasketAccessItemControllerRestDocumentation.java b/rest/taskana-rest-spring/src/test/java/pro/taskana/doc/api/WorkbasketAccessItemControllerRestDocumentation.java index 25f8ce62d..c312ea037 100644 --- a/rest/taskana-rest-spring/src/test/java/pro/taskana/doc/api/WorkbasketAccessItemControllerRestDocumentation.java +++ b/rest/taskana-rest-spring/src/test/java/pro/taskana/doc/api/WorkbasketAccessItemControllerRestDocumentation.java @@ -113,7 +113,7 @@ class WorkbasketAccessItemControllerRestDocumentation extends BaseRestDocumentat this.mockMvc .perform( RestDocumentationRequestBuilders.get( - restHelper.toUrl(Mapping.URL_WORKBASKETACCESSITEMS) + restHelper.toUrl(Mapping.URL_WORKBASKET_ACCESS_ITEMS) + "?sort-by=workbasket-key&order=asc&access-ids=user_2_2") .accept("application/hal+json") .header("Authorization", "Basic dGVhbWxlYWRfMTp0ZWFtbGVhZF8x")) @@ -129,7 +129,7 @@ class WorkbasketAccessItemControllerRestDocumentation extends BaseRestDocumentat this.mockMvc .perform( RestDocumentationRequestBuilders.delete( - restHelper.toUrl(Mapping.URL_WORKBASKETACCESSITEMS) + "?access-id=user_2_2") + restHelper.toUrl(Mapping.URL_WORKBASKET_ACCESS_ITEMS) + "?access-id=user_2_2") .header("Authorization", "Basic dGVhbWxlYWRfMTp0ZWFtbGVhZF8x")) .andExpect(MockMvcResultMatchers.status().isNoContent()) .andDo(MockMvcRestDocumentation.document("RemoveWorkbasketAccessItemsDocTest")); diff --git a/rest/taskana-rest-spring/src/test/java/pro/taskana/doc/api/WorkbasketDefinitionControllerRestDocumentation.java b/rest/taskana-rest-spring/src/test/java/pro/taskana/doc/api/WorkbasketDefinitionControllerRestDocumentation.java index cf0aa1eca..b423d1ab7 100644 --- a/rest/taskana-rest-spring/src/test/java/pro/taskana/doc/api/WorkbasketDefinitionControllerRestDocumentation.java +++ b/rest/taskana-rest-spring/src/test/java/pro/taskana/doc/api/WorkbasketDefinitionControllerRestDocumentation.java @@ -39,7 +39,7 @@ class WorkbasketDefinitionControllerRestDocumentation extends BaseRestDocumentat this.mockMvc .perform( RestDocumentationRequestBuilders - .get(restHelper.toUrl(Mapping.URL_WORKBASKETDEFINITIONS)) + .get(restHelper.toUrl(Mapping.URL_WORKBASKET_DEFINITIONS)) .accept("application/json") .header("Authorization", "Basic dGVhbWxlYWRfMTp0ZWFtbGVhZF8x")) .andExpect(MockMvcResultMatchers.status().isOk()) @@ -64,7 +64,7 @@ class WorkbasketDefinitionControllerRestDocumentation extends BaseRestDocumentat this.mockMvc .perform( - multipart(restHelper.toUrl(Mapping.URL_WORKBASKETDEFINITIONS)) + multipart(restHelper.toUrl(Mapping.URL_WORKBASKET_DEFINITIONS)) .file("file", definitionString.getBytes(UTF_8)) .header("Authorization", "Basic dGVhbWxlYWRfMTp0ZWFtbGVhZF8x")) .andExpect(MockMvcResultMatchers.status().isNoContent()) diff --git a/rest/taskana-rest-spring/src/test/java/pro/taskana/task/rest/TaskCommentControllerIntTest.java b/rest/taskana-rest-spring/src/test/java/pro/taskana/task/rest/TaskCommentControllerIntTest.java index 65afe6371..4881e8fb0 100644 --- a/rest/taskana-rest-spring/src/test/java/pro/taskana/task/rest/TaskCommentControllerIntTest.java +++ b/rest/taskana-rest-spring/src/test/java/pro/taskana/task/rest/TaskCommentControllerIntTest.java @@ -160,13 +160,13 @@ class TaskCommentControllerIntTest { HttpMethod.GET, new HttpEntity(restHelper.getHeadersAdmin()), ParameterizedTypeReference.forType(TaskCommentRepresentationModel.class)); - assertThat(getTaskCommentResponse.getBody().getLink(IanaLinkRelations.SELF)).isNotNull(); - assertThat(getTaskCommentResponse.getBody().getCreator()).isEqualTo("user_1_1"); - assertThat(getTaskCommentResponse.getBody().getTextField()).isEqualTo("some text in textfield"); + assertThat(getTaskCommentResponse.getBody()).isNotNull(); + TaskCommentRepresentationModel taskCommentToUpdate = getTaskCommentResponse.getBody(); + assertThat(taskCommentToUpdate.getLink(IanaLinkRelations.SELF)).isNotNull(); + assertThat(taskCommentToUpdate.getCreator()).isEqualTo("user_1_1"); + assertThat(taskCommentToUpdate.getTextField()).isEqualTo("some text in textfield"); - TaskCommentRepresentationModel taskCommentRepresentationModelToUpdate = - getTaskCommentResponse.getBody(); - taskCommentRepresentationModelToUpdate.setModified(Instant.now().toString()); + taskCommentToUpdate.setModified(Instant.now()); ThrowingCallable httpCall = () -> { @@ -174,7 +174,7 @@ class TaskCommentControllerIntTest { url, HttpMethod.PUT, new HttpEntity<>( - taskCommentRepresentationModelToUpdate, + taskCommentToUpdate, restHelper.getHeadersUser_1_1()), ParameterizedTypeReference.forType(TaskCommentRepresentationModel.class)); }; diff --git a/rest/taskana-rest-spring/src/test/java/pro/taskana/task/rest/assembler/TaskCommentRepresentationModelAssemblerTest.java b/rest/taskana-rest-spring/src/test/java/pro/taskana/task/rest/assembler/TaskCommentRepresentationModelAssemblerTest.java index 3a08f3aea..a52d0d674 100644 --- a/rest/taskana-rest-spring/src/test/java/pro/taskana/task/rest/assembler/TaskCommentRepresentationModelAssemblerTest.java +++ b/rest/taskana-rest-spring/src/test/java/pro/taskana/task/rest/assembler/TaskCommentRepresentationModelAssemblerTest.java @@ -54,8 +54,8 @@ class TaskCommentRepresentationModelAssemblerTest { taskCommentRepresentationModel.setTaskId("TKI:000000000000000000000000000000000000"); taskCommentRepresentationModel.setTaskCommentId("TCI:000000000000000000000000000000000000"); taskCommentRepresentationModel.setCreator("user_1_1"); - taskCommentRepresentationModel.setCreated("2010-01-01T12:00:00Z"); - taskCommentRepresentationModel.setModified("2011-11-11T11:00:00Z"); + taskCommentRepresentationModel.setCreated(Instant.parse("2010-01-01T12:00:00Z")); + taskCommentRepresentationModel.setModified(Instant.parse("2011-11-11T11:00:00Z")); TaskComment taskComment = taskCommentRepresentationModelAssembler.toEntityModel(taskCommentRepresentationModel); diff --git a/rest/taskana-rest-spring/src/test/java/pro/taskana/task/rest/assembler/TaskRepresentationModelAssemberTest.java b/rest/taskana-rest-spring/src/test/java/pro/taskana/task/rest/assembler/TaskRepresentationModelAssemberTest.java index 21856bf99..511f86cf3 100644 --- a/rest/taskana-rest-spring/src/test/java/pro/taskana/task/rest/assembler/TaskRepresentationModelAssemberTest.java +++ b/rest/taskana-rest-spring/src/test/java/pro/taskana/task/rest/assembler/TaskRepresentationModelAssemberTest.java @@ -6,6 +6,7 @@ import java.time.Instant; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -89,9 +90,9 @@ class TaskRepresentationModelAssemberTest { resource.setRead(true); resource.setTransferred(true); resource.setCustomAttributes( - Collections.singletonList(new TaskRepresentationModel.CustomAttribute("abc", "def"))); + Collections.singletonList(TaskRepresentationModel.CustomAttribute.of("abc", "def"))); resource.setCallbackInfo( - Collections.singletonList(new TaskRepresentationModel.CustomAttribute("ghi", "jkl"))); + Collections.singletonList(TaskRepresentationModel.CustomAttribute.of("ghi", "jkl"))); resource.setAttachments(Collections.singletonList(attachement)); resource.setCustom1("custom1"); resource.setCustom2("custom2"); diff --git a/rest/taskana-rest-spring/src/test/java/pro/taskana/workbasket/rest/WorkbasketAccessItemControllerIntTest.java b/rest/taskana-rest-spring/src/test/java/pro/taskana/workbasket/rest/WorkbasketAccessItemControllerIntTest.java index cf6845108..304ae44a0 100644 --- a/rest/taskana-rest-spring/src/test/java/pro/taskana/workbasket/rest/WorkbasketAccessItemControllerIntTest.java +++ b/rest/taskana-rest-spring/src/test/java/pro/taskana/workbasket/rest/WorkbasketAccessItemControllerIntTest.java @@ -45,7 +45,7 @@ class WorkbasketAccessItemControllerIntTest { void testGetAllWorkbasketAccessItems() { ResponseEntity> response = template.exchange( - restHelper.toUrl(Mapping.URL_WORKBASKETACCESSITEMS), + restHelper.toUrl(Mapping.URL_WORKBASKET_ACCESS_ITEMS), HttpMethod.GET, restHelper.defaultRequest(), WORKBASKET_ACCESS_ITEM_PAGE_MODEL_TYPE); @@ -58,7 +58,7 @@ class WorkbasketAccessItemControllerIntTest { String parameters = "?sort-by=workbasket-key&order=asc&page-size=9&access-ids=user_1_1&page=1"; ResponseEntity> response = template.exchange( - restHelper.toUrl(Mapping.URL_WORKBASKETACCESSITEMS) + parameters, + restHelper.toUrl(Mapping.URL_WORKBASKET_ACCESS_ITEMS) + parameters, HttpMethod.GET, restHelper.defaultRequest(), WORKBASKET_ACCESS_ITEM_PAGE_MODEL_TYPE); @@ -77,7 +77,7 @@ class WorkbasketAccessItemControllerIntTest { void testThrowsExceptionIfInvalidFilterIsUsed() { ThrowingCallable httpCall = () -> template.exchange( - restHelper.toUrl(Mapping.URL_WORKBASKETACCESSITEMS) + restHelper.toUrl(Mapping.URL_WORKBASKET_ACCESS_ITEMS) + "?sort-by=workbasket-key&order=asc&page=1&page-size=9&invalid=user_1_1", HttpMethod.GET, restHelper.defaultRequest(), @@ -94,7 +94,7 @@ class WorkbasketAccessItemControllerIntTest { String parameters = "?sort-by=workbasket-key&order=asc&page-size=9&access-ids=user_1_1&page=1"; ResponseEntity> response = template.exchange( - restHelper.toUrl(Mapping.URL_WORKBASKETACCESSITEMS) + parameters, + restHelper.toUrl(Mapping.URL_WORKBASKET_ACCESS_ITEMS) + parameters, HttpMethod.GET, restHelper.defaultRequest(), WORKBASKET_ACCESS_ITEM_PAGE_MODEL_TYPE); @@ -124,7 +124,7 @@ class WorkbasketAccessItemControllerIntTest { String parameters = "?access-id=user_1_1"; ResponseEntity response = template.exchange( - restHelper.toUrl(Mapping.URL_WORKBASKETACCESSITEMS) + parameters, + restHelper.toUrl(Mapping.URL_WORKBASKET_ACCESS_ITEMS) + parameters, HttpMethod.DELETE, restHelper.defaultRequest(), ParameterizedTypeReference.forType(Void.class)); @@ -137,7 +137,7 @@ class WorkbasketAccessItemControllerIntTest { String parameters = "?access-id=cn=DevelopersGroup,ou=groups,o=TaskanaTest"; ThrowingCallable httpCall = () -> template.exchange( - restHelper.toUrl(Mapping.URL_WORKBASKETACCESSITEMS) + parameters, + restHelper.toUrl(Mapping.URL_WORKBASKET_ACCESS_ITEMS) + parameters, HttpMethod.DELETE, restHelper.defaultRequest(), ParameterizedTypeReference.forType(Void.class)); diff --git a/rest/taskana-rest-spring/src/test/java/pro/taskana/workbasket/rest/WorkbasketDefinitionControllerIntTest.java b/rest/taskana-rest-spring/src/test/java/pro/taskana/workbasket/rest/WorkbasketDefinitionControllerIntTest.java index e0838a3c8..dc15055e9 100644 --- a/rest/taskana-rest-spring/src/test/java/pro/taskana/workbasket/rest/WorkbasketDefinitionControllerIntTest.java +++ b/rest/taskana-rest-spring/src/test/java/pro/taskana/workbasket/rest/WorkbasketDefinitionControllerIntTest.java @@ -261,7 +261,7 @@ class WorkbasketDefinitionControllerIntTest { private ResponseEntity> executeExportRequestForDomain(String domain) { return TEMPLATE.exchange( - restHelper.toUrl(Mapping.URL_WORKBASKETDEFINITIONS) + "?domain=" + domain, + restHelper.toUrl(Mapping.URL_WORKBASKET_DEFINITIONS) + "?domain=" + domain, HttpMethod.GET, restHelper.defaultRequest(), new ParameterizedTypeReference>( @@ -292,7 +292,7 @@ class WorkbasketDefinitionControllerIntTest { body.add("file", new FileSystemResource(tmpFile)); HttpEntity> requestEntity = new HttpEntity<>(body, headers); - String serverUrl = restHelper.toUrl(Mapping.URL_WORKBASKETDEFINITIONS); + String serverUrl = restHelper.toUrl(Mapping.URL_WORKBASKET_DEFINITIONS); ResponseEntity responseImport = TEMPLATE.postForEntity(serverUrl, requestEntity, Void.class);