TSK-1699 - Register CustomEditor for String[]

all String[] parameters should not be splitted when only one parameter exists, with values delimited with comma
This commit is contained in:
arolfes 2023-01-16 18:34:52 +01:00 committed by Mustapha Zorgati
parent f812639cc2
commit f854e3d579
3 changed files with 23 additions and 2 deletions

1
.gitignore vendored
View File

@ -5,6 +5,7 @@
### GENERATED ###
target/
routing/taskana-routing-rest/target\\routing.dmn
.apt_generated/
.checkstyle
bin/

View File

@ -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));
}
}

View File

@ -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<Object> auth = new HttpEntity<>(RestHelper.generateHeadersForUser("teamlead-1"));
ResponseEntity<WorkbasketAccessItemPagedRepresentationModel> 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 =