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 046754a9e..6e951a13d 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 @@ -112,8 +112,12 @@ public class TaskRepresentationModelAssembler public Task toEntityModel(TaskRepresentationModel repModel) throws InvalidArgumentException { verifyCorrectCustomAttributesFormat(repModel); - TaskImpl task = - (TaskImpl) taskService.newTask(repModel.getWorkbasketSummary().getWorkbasketId()); + TaskImpl task; + if (repModel.getWorkbasketSummary() != null) { + task = (TaskImpl) taskService.newTask(repModel.getWorkbasketSummary().getWorkbasketId()); + } else { + task = (TaskImpl) taskService.newTask(); + } task.setId(repModel.getTaskId()); task.setExternalId(repModel.getExternalId()); task.setCreated(repModel.getCreated()); @@ -130,7 +134,9 @@ public class TaskRepresentationModelAssembler task.setState(repModel.getState()); task.setClassificationSummary( classificationAssembler.toEntityModel(repModel.getClassificationSummary())); - task.setWorkbasketSummary(workbasketAssembler.toEntityModel(repModel.getWorkbasketSummary())); + if (repModel.getWorkbasketSummary() != null) { + task.setWorkbasketSummary(workbasketAssembler.toEntityModel(repModel.getWorkbasketSummary())); + } task.setBusinessProcessId(repModel.getBusinessProcessId()); task.setParentBusinessProcessId(repModel.getParentBusinessProcessId()); task.setOwner(repModel.getOwner()); 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 0e8a90f07..a4a5afd30 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 @@ -116,8 +116,10 @@ public class TaskSummaryRepresentationModelAssembler taskSummary.setState(repModel.getState()); taskSummary.setClassificationSummary( classificationAssembler.toEntityModel(repModel.getClassificationSummary())); - taskSummary.setWorkbasketSummary( - workbasketAssembler.toEntityModel(repModel.getWorkbasketSummary())); + if (repModel.getWorkbasketSummary() != null) { + taskSummary.setWorkbasketSummary( + workbasketAssembler.toEntityModel(repModel.getWorkbasketSummary())); + } taskSummary.setBusinessProcessId(repModel.getBusinessProcessId()); taskSummary.setParentBusinessProcessId(repModel.getParentBusinessProcessId()); taskSummary.setOwner(repModel.getOwner()); 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 6d033d046..025217e53 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 @@ -116,6 +116,35 @@ class TaskRepresentationModelAssemberTest { testEquality(task, repModel); } + @Test + void should_ReturnEntity_When_ConvertingRepresentationModelWithoutWorkbasketSummaryToEntity() + throws Exception { + // given + ObjectReferenceRepresentationModel primaryObjRef = new ObjectReferenceRepresentationModel(); + primaryObjRef.setId("abc"); + ClassificationSummaryRepresentationModel classificationSummary = + new ClassificationSummaryRepresentationModel(); + classificationSummary.setKey("keyabc"); + classificationSummary.setDomain("DOMAIN_A"); + classificationSummary.setType("MANUAL"); + AttachmentRepresentationModel attachment = new AttachmentRepresentationModel(); + attachment.setClassificationSummary(classificationSummary); + attachment.setAttachmentId("attachmentId"); + attachment.setObjectReference(primaryObjRef); + TaskRepresentationModel repModel = new TaskRepresentationModel(); + repModel.setTaskId("taskId"); + repModel.setExternalId("externalId"); + repModel.setClassificationSummary(classificationSummary); + repModel.setPrimaryObjRef(primaryObjRef); + // when + Task task = assembler.toEntityModel(repModel); + // then + assertThat(repModel.getWorkbasketSummary()).isNull(); + assertThat(task.getWorkbasketSummary()) + .isNotNull() + .hasAllNullFieldsOrPropertiesExcept("markedForDeletion"); + } + @Test void should_ReturnRepresentationModel_When_ConvertingEntityToRepresentationModel() throws Exception { diff --git a/rest/taskana-rest-spring/src/test/java/pro/taskana/task/rest/assembler/TaskSummaryRepresentationModelAssemblerTest.java b/rest/taskana-rest-spring/src/test/java/pro/taskana/task/rest/assembler/TaskSummaryRepresentationModelAssemblerTest.java index e51ac53e0..7397d26aa 100644 --- a/rest/taskana-rest-spring/src/test/java/pro/taskana/task/rest/assembler/TaskSummaryRepresentationModelAssemblerTest.java +++ b/rest/taskana-rest-spring/src/test/java/pro/taskana/task/rest/assembler/TaskSummaryRepresentationModelAssemblerTest.java @@ -186,6 +186,34 @@ class TaskSummaryRepresentationModelAssemblerTest { testEquality(task, repModel); } + @Test + void should_ReturnEntity_When_ConvertingRepresentationModelWithoutWorkbasketSummaryToEntity() { + // given + ObjectReferenceRepresentationModel primaryObjRef = new ObjectReferenceRepresentationModel(); + primaryObjRef.setId("abc"); + ClassificationSummaryRepresentationModel classificationSummary = + new ClassificationSummaryRepresentationModel(); + classificationSummary.setKey("keyabc"); + classificationSummary.setDomain("DOMAIN_A"); + classificationSummary.setType("MANUAL"); + AttachmentRepresentationModel attachment = new AttachmentRepresentationModel(); + attachment.setClassificationSummary(classificationSummary); + attachment.setAttachmentId("attachmentId"); + attachment.setObjectReference(primaryObjRef); + TaskRepresentationModel repModel = new TaskRepresentationModel(); + repModel.setTaskId("taskId"); + repModel.setExternalId("externalId"); + repModel.setClassificationSummary(classificationSummary); + repModel.setPrimaryObjRef(primaryObjRef); + // when + TaskSummary taskSummary = assembler.toEntityModel(repModel); + // then + assertThat(repModel.getWorkbasketSummary()).isNull(); + assertThat(taskSummary.getWorkbasketSummary()) + .isNotNull() + .hasAllNullFieldsOrPropertiesExcept("markedForDeletion"); + } + @Test void should_Equal_When_ComparingEntityWithConvertedEntity() { // given