From 27a8adadfbc22001b557221bde37869f269b6653 Mon Sep 17 00:00:00 2001 From: Nikola Koevski Date: Wed, 31 Jul 2019 16:54:06 +0200 Subject: [PATCH] fix(engine): ensure task queries are parsed properly in filters Related to CAM-10639 --- .../impl/json/JsonTaskQueryConverter.java | 10 +++++ .../test/api/filter/FilterTaskQueryTest.java | 39 +++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/engine/src/main/java/org/camunda/bpm/engine/impl/json/JsonTaskQueryConverter.java b/engine/src/main/java/org/camunda/bpm/engine/impl/json/JsonTaskQueryConverter.java index 88c9daed9a3..b4b2f181919 100644 --- a/engine/src/main/java/org/camunda/bpm/engine/impl/json/JsonTaskQueryConverter.java +++ b/engine/src/main/java/org/camunda/bpm/engine/impl/json/JsonTaskQueryConverter.java @@ -51,6 +51,7 @@ public class JsonTaskQueryConverter extends JsonObjectConverter { public static final String MAX_PRIORITY = "maxPriority"; public static final String ASSIGNEE = "assignee"; public static final String ASSIGNEE_LIKE = "assigneeLike"; + public static final String ASSIGNEE_IN = "assigneeIn"; public static final String INVOLVED_USER = "involvedUser"; public static final String OWNER = "owner"; public static final String UNASSIGNED = "unassigned"; @@ -139,6 +140,12 @@ public JsonObject toJsonObject(TaskQuery taskQuery, boolean isOrQueryActive) { JsonUtil.addField(json, MIN_PRIORITY, query.getMinPriority()); JsonUtil.addField(json, MAX_PRIORITY, query.getMaxPriority()); JsonUtil.addField(json, ASSIGNEE, query.getAssignee()); + + if (query.getAssigneeIn() != null) { + JsonUtil.addArrayField(json, ASSIGNEE_IN, + query.getAssigneeIn().toArray(new String[query.getAssigneeIn().size()])); + } + JsonUtil.addField(json, ASSIGNEE_LIKE, query.getAssigneeLike()); JsonUtil.addField(json, INVOLVED_USER, query.getInvolvedUser()); JsonUtil.addField(json, OWNER, query.getOwner()); @@ -304,6 +311,9 @@ public TaskQuery toObject(JsonObject json) { if (json.has(ASSIGNEE_LIKE)) { query.taskAssigneeLike(JsonUtil.getString(json, ASSIGNEE_LIKE)); } + if (json.has(ASSIGNEE_IN)) { + query.taskAssigneeIn(getArray(JsonUtil.getArray(json, ASSIGNEE_IN))); + } if (json.has(INVOLVED_USER)) { query.taskInvolvedUser(JsonUtil.getString(json, INVOLVED_USER)); } diff --git a/engine/src/test/java/org/camunda/bpm/engine/test/api/filter/FilterTaskQueryTest.java b/engine/src/test/java/org/camunda/bpm/engine/test/api/filter/FilterTaskQueryTest.java index 47e6a9b36f1..41ddfac3447 100644 --- a/engine/src/test/java/org/camunda/bpm/engine/test/api/filter/FilterTaskQueryTest.java +++ b/engine/src/test/java/org/camunda/bpm/engine/test/api/filter/FilterTaskQueryTest.java @@ -150,6 +150,7 @@ public void testTaskQuery() { query.taskAssigneeExpression(testString); query.taskAssigneeLike(testString); query.taskAssigneeLikeExpression(testString); + query.taskAssigneeIn(testString); query.taskInvolvedUser(testString); query.taskInvolvedUserExpression(testString); query.taskOwner(testString); @@ -247,6 +248,7 @@ public void testTaskQuery() { assertEquals(testString, query.getExpressions().get("taskAssignee")); assertEquals(testString, query.getAssigneeLike()); assertEquals(testString, query.getExpressions().get("taskAssigneeLike")); + assertTrue(query.getAssigneeIn().contains(testString)); assertEquals(testString, query.getInvolvedUser()); assertEquals(testString, query.getExpressions().get("taskInvolvedUser")); assertEquals(testString, query.getOwner()); @@ -1873,6 +1875,43 @@ public void testDueDate() { assertThat(filterService.count(filter.getId()), is(1L)); } + public void testAssigneeInPositive() { + // given + TaskQueryImpl taskQuery = new TaskQueryImpl(); + taskQuery.taskAssigneeIn(testString); + + // when + // save filter + filter.setQuery(taskQuery); + filterService.saveFilter(filter); + + // fetch from db + filter = filterService.createTaskFilterQuery().singleResult(); + taskQuery = filter.getQuery(); + + // then + assertTrue(taskQuery.getAssigneeIn().contains(testString)); + } + + public void testAssigneeInNegative() { + // given + TaskQueryImpl taskQuery = new TaskQueryImpl(); + + // when + // save filter + filter.setQuery(taskQuery); + filterService.saveFilter(filter); + + // fetch from db + filter = filterService.createTaskFilterQuery().singleResult(); + + // test query + taskQuery = filter.getQuery(); + + // then + assertNull(taskQuery.getAssigneeIn()); + } + /** * See CAM-9613 */