diff --git a/.gitignore b/.gitignore index 4213f2669..f6fa21ee3 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ ### GENERATED ### target/ +routing/taskana-routing-rest/target\\routing.dmn .apt_generated/ .checkstyle bin/ diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/JsonPropertyEditorRegistrator.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/InitBinderControllerAdvice.java similarity index 79% rename from rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/JsonPropertyEditorRegistrator.java rename to rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/InitBinderControllerAdvice.java index 49105b954..70fb5bbf9 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/JsonPropertyEditorRegistrator.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/InitBinderControllerAdvice.java @@ -2,6 +2,7 @@ package pro.taskana.common.rest; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.propertyeditors.StringArrayPropertyEditor; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.InitBinder; @@ -11,12 +12,12 @@ import pro.taskana.task.api.models.ObjectReference; import pro.taskana.task.internal.models.ObjectReferenceImpl; @ControllerAdvice -public class JsonPropertyEditorRegistrator { +public class InitBinderControllerAdvice { private final ObjectMapper objectMapper; @Autowired - public JsonPropertyEditorRegistrator(ObjectMapper objectMapper) { + public InitBinderControllerAdvice(ObjectMapper objectMapper) { this.objectMapper = objectMapper; } @@ -27,5 +28,6 @@ public class JsonPropertyEditorRegistrator { new JsonPropertyEditor(objectMapper, PriorityColumnHeaderRepresentationModel.class)); binder.registerCustomEditor( ObjectReference.class, new JsonPropertyEditor(objectMapper, ObjectReferenceImpl.class)); + binder.registerCustomEditor(String[].class, new StringArrayPropertyEditor(null)); } } 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 e8d0c43a4..68a91e5a7 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 @@ -103,6 +103,24 @@ class WorkbasketAccessItemControllerIntTest { assertThat(response.getBody().getPageMetadata().getNumber()).isEqualTo(1); } + @Test + void should_notSplitQueryParameterByComma_When_accessId_containsTwo() { + String parameters = + "?sort-by=WORKBASKET_KEY&order=ASCENDING&page=1&page-size=9&access-id=user-1-1,user-1-2"; + String url = restHelper.toUrl(RestEndpoints.URL_WORKBASKET_ACCESS_ITEMS) + parameters; + HttpEntity auth = new HttpEntity<>(RestHelper.generateHeadersForUser("teamlead-1")); + + ResponseEntity response = + TEMPLATE.exchange( + url, HttpMethod.GET, auth, WORKBASKET_ACCESS_ITEM_PAGED_REPRESENTATION_MODEL_TYPE); + assertThat(response.getBody()).isNotNull(); + assertThat(response.getBody().getContent()).hasSize(0); + assertThat(response.getBody().getPageMetadata().getSize()).isEqualTo(9); + assertThat(response.getBody().getPageMetadata().getTotalElements()).isEqualTo(0); + assertThat(response.getBody().getPageMetadata().getTotalPages()).isEqualTo(0); + assertThat(response.getBody().getPageMetadata().getNumber()).isEqualTo(1); + } + @Test void should_DeleteAllAccessItemForUser_ifValidAccessIdOfUserIsSupplied() { String url =