From c307845b5bee34dd5aa173563078dd161980a3cf Mon Sep 17 00:00:00 2001 From: Marco Rietveld Date: Sat, 15 Mar 2014 19:06:09 +0100 Subject: [PATCH] BZ-1074322 - REST /task/query parameter pageSize=10 returns all the tasks (cherry picked from commit 7df519904fd15da66b1f4d3023f72b9401d1cc02) --- .../GetTasksByVariousFieldsCommand.java | 81 ++++++--- .../task/impl/TaskQueryServiceImpl.java | 43 ++++- .../task/TaskQueryServiceBaseTest.java | 161 +++++++++++------- 3 files changed, 203 insertions(+), 82 deletions(-) diff --git a/jbpm-human-task/jbpm-human-task-core/src/main/java/org/jbpm/services/task/commands/GetTasksByVariousFieldsCommand.java b/jbpm-human-task/jbpm-human-task-core/src/main/java/org/jbpm/services/task/commands/GetTasksByVariousFieldsCommand.java index f15e89c406..ee71f2ad39 100644 --- a/jbpm-human-task/jbpm-human-task-core/src/main/java/org/jbpm/services/task/commands/GetTasksByVariousFieldsCommand.java +++ b/jbpm-human-task/jbpm-human-task-core/src/main/java/org/jbpm/services/task/commands/GetTasksByVariousFieldsCommand.java @@ -1,15 +1,10 @@ package org.jbpm.services.task.commands; -import static org.kie.internal.task.api.TaskQueryService.ACTUAL_OWNER_ID_LIST; -import static org.kie.internal.task.api.TaskQueryService.BUSINESS_ADMIN_ID_LIST; -import static org.kie.internal.task.api.TaskQueryService.LANGUAGE; -import static org.kie.internal.task.api.TaskQueryService.POTENTIAL_OWNER_ID_LIST; -import static org.kie.internal.task.api.TaskQueryService.PROCESS_INST_ID_LIST; -import static org.kie.internal.task.api.TaskQueryService.STATUS_LIST; -import static org.kie.internal.task.api.TaskQueryService.TASK_ID_LIST; -import static org.kie.internal.task.api.TaskQueryService.WORK_ITEM_ID_LIST; +import static org.kie.internal.task.api.TaskQueryService.*; import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -21,6 +16,7 @@ import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlSchemaType; +import org.jbpm.services.task.persistence.JPATaskPersistenceContext; import org.kie.api.task.model.Status; import org.kie.api.task.model.TaskSummary; import org.kie.internal.command.Context; @@ -59,6 +55,9 @@ public class GetTasksByVariousFieldsCommand extends UserGroupCallbackTaskCommand @XmlElement private List language; + @XmlElement + private Integer maxResults; + public GetTasksByVariousFieldsCommand() { } @@ -72,6 +71,12 @@ public GetTasksByVariousFieldsCommand(List workItemIds, List taskIds public GetTasksByVariousFieldsCommand(List workItemIds, List taskIds, List procInstIds, List busAdmins, List potOwners, List taskOwners, List statuses, List language, boolean union) { + this(workItemIds, taskIds, procInstIds, busAdmins, potOwners, taskOwners, statuses, language, union, null); + } + + public GetTasksByVariousFieldsCommand(List workItemIds, List taskIds, List procInstIds, + List busAdmins, List potOwners, List taskOwners, List statuses, + List language, boolean union, Integer maxResults) { this.workItemIds = workItemIds; this.taskIds = taskIds; this.procInstIds = procInstIds; @@ -79,33 +84,55 @@ public GetTasksByVariousFieldsCommand(List workItemIds, List taskIds this.potOwners = potOwners; this.taskOwners = taskOwners; this.statuses = statuses; - this.union = union; this.language = language; - } + this.union = union; + this.maxResults = maxResults; + } - @SuppressWarnings("unchecked") public GetTasksByVariousFieldsCommand(Map> params, boolean union) { + this(params, union, null); + } + + @SuppressWarnings("unchecked") + public GetTasksByVariousFieldsCommand(Map> params, boolean union, Integer maxResults) { this.union = union; - + this.maxResults = maxResults; + if( params == null ) { - return; + params = new HashMap>(); + } else { + this.workItemIds = (List) params.get(WORK_ITEM_ID_LIST); + this.taskIds = (List) params.get(TASK_ID_LIST); + this.procInstIds = (List) params.get(PROCESS_INST_ID_LIST); + this.busAdmins = (List) params.get(BUSINESS_ADMIN_ID_LIST); + this.potOwners = (List) params.get(POTENTIAL_OWNER_ID_LIST); + this.taskOwners = (List) params.get(ACTUAL_OWNER_ID_LIST); + this.statuses = (List) params.get(STATUS_LIST); + this.language = (List) params.get(LANGUAGE); } - this.workItemIds = (List) params.get(WORK_ITEM_ID_LIST); - this.taskIds = (List) params.get(TASK_ID_LIST); - this.procInstIds = (List) params.get(PROCESS_INST_ID_LIST); - this.busAdmins = (List) params.get(BUSINESS_ADMIN_ID_LIST); - this.potOwners = (List) params.get(POTENTIAL_OWNER_ID_LIST); - this.taskOwners = (List) params.get(ACTUAL_OWNER_ID_LIST); - this.statuses = (List) params.get(STATUS_LIST); - this.language = (List) params.get(LANGUAGE); } public List execute(Context cntxt) { - TaskContext context = (TaskContext) cntxt; + TaskContext context = (TaskContext) cntxt; potOwners = populateOrganizationalEntityWithGroupInfo(potOwners, context); busAdmins = populateOrganizationalEntityWithGroupInfo(busAdmins, context); - return context.getTaskQueryService().getTasksByVariousFields(workItemIds, taskIds, procInstIds, busAdmins, potOwners, taskOwners, statuses, language, union); + + Map> params = new HashMap>(); + params.put(WORK_ITEM_ID_LIST, workItemIds); + params.put(TASK_ID_LIST, taskIds); + params.put(PROCESS_INST_ID_LIST, procInstIds); + params.put(BUSINESS_ADMIN_ID_LIST, busAdmins); + params.put(POTENTIAL_OWNER_ID_LIST, potOwners); + params.put(ACTUAL_OWNER_ID_LIST, taskOwners); + params.put(STATUS_LIST, statuses); + params.put(LANGUAGE, language); + if( maxResults != null && maxResults.intValue() > 0 ) { + Integer [] maxResultsArr = { maxResults }; + params.put(JPATaskPersistenceContext.MAX_RESULTS, Arrays.asList(maxResultsArr)); + } + + return context.getTaskQueryService().getTasksByVariousFields(params, union); } public List getWorkItemIds() { @@ -180,6 +207,14 @@ public void setUnion(Boolean union) { this.union = union; } + public Integer getMaxResults() { + return maxResults; + } + + public void setMaxResults(Integer maxResults) { + this.maxResults = maxResults; + } + /** * Populates given list with group information taken from UserGroupCallback implementation * to allow proper query for tasks based on user assignments. diff --git a/jbpm-human-task/jbpm-human-task-core/src/main/java/org/jbpm/services/task/impl/TaskQueryServiceImpl.java b/jbpm-human-task/jbpm-human-task-core/src/main/java/org/jbpm/services/task/impl/TaskQueryServiceImpl.java index cf230e4825..977b656757 100644 --- a/jbpm-human-task/jbpm-human-task-core/src/main/java/org/jbpm/services/task/impl/TaskQueryServiceImpl.java +++ b/jbpm-human-task/jbpm-human-task-core/src/main/java/org/jbpm/services/task/impl/TaskQueryServiceImpl.java @@ -17,6 +17,7 @@ package org.jbpm.services.task.impl; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.Date; import java.util.HashMap; @@ -25,6 +26,7 @@ import java.util.Map; import java.util.Set; +import org.jbpm.services.task.persistence.JPATaskPersistenceContext; import org.jbpm.services.task.utils.ClassUtil; import org.kie.api.task.model.OrganizationalEntity; import org.kie.api.task.model.Status; @@ -386,6 +388,7 @@ public List getTasksAssignedAsPotentialOwnerByExpirationDateOptiona persistenceContext.addParametersToMap("userId", userId, "groupIds", "", "status", status, "expirationDate", expirationDate, "language", "en-UK"), ClassUtil.>castClass(List.class)); //@TODO: FIX LANGUANGE } + @Override public List getTasksByVariousFields(List workItemIds, List taskIds, List procInstIds, @@ -403,6 +406,32 @@ public List getTasksByVariousFields(List workItemIds, List getTasksByVariousFields(List workItemIds, List taskIds, List procInstIds, + List busAdmins, List potOwners, List taskOwners, + List status, List language, boolean union, Integer maxResults) { + Map> params = new HashMap>(); + params.put(WORK_ITEM_ID_LIST, workItemIds); + params.put(TASK_ID_LIST, taskIds); + params.put(PROCESS_INST_ID_LIST, procInstIds); + params.put(BUSINESS_ADMIN_ID_LIST, busAdmins); + params.put(POTENTIAL_OWNER_ID_LIST, potOwners); + params.put(ACTUAL_OWNER_ID_LIST, taskOwners); + params.put(STATUS_LIST, status); + params.put(LANGUAGE, language); + + if( maxResults != null ) { + if( maxResults <= 0 ) { + return new ArrayList(); + } + Integer [] maxResultsArr = { maxResults }; + params.put(MAX_RESULTS, Arrays.asList(maxResultsArr)); + } + + return getTasksByVariousFields(params, union); + } public List getTasksByVariousFields( Map> parameters, boolean union ) { StringBuilder queryBuilder = new StringBuilder(VARIOUS_FIELDS_TASKSUM_QUERY); @@ -420,6 +449,14 @@ public List getTasksByVariousFields( Map> parameter List language = stringQueryAdder.checkNullAndInstanceOf(parameters, LANGUAGE); List status = statusQueryAdder.checkNullAndInstanceOf(parameters, STATUS_LIST); + List maxResultsList = parameters.get(JPATaskPersistenceContext.MAX_RESULTS); + if( maxResultsList != null && ! maxResultsList.isEmpty() ) { + Object maxResults = maxResultsList.get(0); + if( maxResults instanceof Integer ) { + params.put(JPATaskPersistenceContext.MAX_RESULTS, maxResults); + } + } + if( workItemIds != null && workItemIds.size() > 0 ) { String paramName = "workItemIds"; longQueryAdder.addToQueryBuilder( @@ -478,8 +515,12 @@ public List getTasksByVariousFields( Map> parameter if( ! statusQueryAdder.firstUse ) { queryBuilder.append(")"); } + + // order by task id + queryBuilder.append(" ORDER BY t.id" ); + String query = queryBuilder.toString(); - logger.debug("QUERY: " + query); + logger.debug("QUERY: {}", query); return persistenceContext.queryStringWithParametersInTransaction(query, params, ClassUtil.>castClass(List.class)); } diff --git a/jbpm-human-task/jbpm-human-task-core/src/test/java/org/jbpm/services/task/TaskQueryServiceBaseTest.java b/jbpm-human-task/jbpm-human-task-core/src/test/java/org/jbpm/services/task/TaskQueryServiceBaseTest.java index a26c63a906..0c682bf294 100644 --- a/jbpm-human-task/jbpm-human-task-core/src/test/java/org/jbpm/services/task/TaskQueryServiceBaseTest.java +++ b/jbpm-human-task/jbpm-human-task-core/src/test/java/org/jbpm/services/task/TaskQueryServiceBaseTest.java @@ -32,6 +32,8 @@ import javax.naming.InitialContext; import javax.transaction.UserTransaction; +import org.jbpm.services.task.commands.GetTasksByVariousFieldsCommand; +import org.jbpm.services.task.impl.TaskQueryServiceImpl; import org.jbpm.services.task.impl.factories.TaskFactory; import org.junit.Ignore; import org.junit.Test; @@ -39,6 +41,7 @@ import org.kie.api.task.model.Status; import org.kie.api.task.model.Task; import org.kie.api.task.model.TaskSummary; +import org.kie.internal.task.api.InternalTaskService; import org.kie.internal.task.api.TaskModelProvider; import org.kie.internal.task.api.TaskQueryService; import org.kie.internal.task.api.model.InternalI18NText; @@ -793,17 +796,69 @@ public void testGetTasksOwnedByExpirationDateBeforeSpecifiedDate() { } } + @Test + public void testModifyTaskName() { + // JBPM-4148 + String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), "; + str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Bobba Fet') ],businessAdministrators = [ new User('Administrator') ], }),"; + str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })"; + Task task = TaskFactory.evalTask(new StringReader(str)); + taskService.addTask(task, new HashMap()); + List tasks = taskService.getTasksAssignedAsPotentialOwner("Bobba Fet", "en-UK"); + assertEquals(1, tasks.size()); + assertEquals("This is my task name", tasks.get(0).getName()); + + Task newTask = taskService.getTaskById(tasks.get(0).getId()); + List updatedNames = new ArrayList(); + I18NText updatedName = TaskModelProvider.getFactory().newI18NText(); + ((InternalI18NText) updatedName).setLanguage(newTask.getNames().get(0).getLanguage()); + ((InternalI18NText) updatedName).setText("New task name"); + updatedNames.add(updatedName); + + taskService.setTaskNames(newTask.getId(), updatedNames); + + List newTasks = taskService.getTasksAssignedAsPotentialOwner("Bobba Fet", "en-UK"); + assertEquals(1, newTasks.size()); + assertEquals("New task name", newTasks.get(0).getName()); + } + + @Test + public void testModifyTaskNameWithinTX() throws Exception{ + // JBPM-4148 + String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), "; + str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Bobba Fet') ],businessAdministrators = [ new User('Administrator') ], }),"; + str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })"; + Task task = TaskFactory.evalTask(new StringReader(str)); + taskService.addTask(task, new HashMap()); + List tasks = taskService.getTasksAssignedAsPotentialOwner("Bobba Fet", "en-UK"); + assertEquals(1, tasks.size()); + assertEquals("This is my task name", tasks.get(0).getName()); + + UserTransaction ut = InitialContext.doLookup("java:comp/UserTransaction"); + ut.begin(); + Task newTask = taskService.getTaskById(tasks.get(0).getId()); + ((InternalI18NText)newTask.getNames().get(0)).setText("New task name"); + ut.commit(); + + List newTasks = taskService.getTasksAssignedAsPotentialOwner("Bobba Fet", "en-UK"); + assertEquals(1, newTasks.size()); + assertEquals("New task name", newTasks.get(0).getName()); + } + + @Test public void testGetTasksByVariousFields() { Task [] tasks = new Task[12]; List workItemIds = new ArrayList(); + List procInstIds = new ArrayList(); List taskIds = new ArrayList(); List busAdmins = new ArrayList(); List potOwners = new ArrayList(); List statuses = new ArrayList(); statuses.add(Status.Reserved); - + long workItemId = 23; + long procInstId = 101; String busAdmin = "Wintermute"; String potOwner = "Maelcum"; String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), "; @@ -814,12 +869,14 @@ public void testGetTasksByVariousFields() { str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })"; Task taskImpl = TaskFactory.evalTask(new StringReader(str)); ((InternalTaskData) taskImpl.getTaskData()).setWorkItemId(workItemId); - ((InternalTaskData) taskImpl.getTaskData()).setProcessInstanceId(workItemId); + ((InternalTaskData) taskImpl.getTaskData()).setProcessInstanceId(procInstId); taskService.addTask(taskImpl, new HashMap()); taskIds.add(taskImpl.getId()); + long firstTaskid = taskIds.get(0); assertEquals( potOwner, taskImpl.getTaskData().getActualOwner().getId() ); tasks[0] = taskImpl; + procInstIds.add(procInstId); workItemIds.add(workItemId); busAdmins.add(busAdmin); potOwners.add(potOwner); @@ -828,6 +885,7 @@ public void testGetTasksByVariousFields() { assertEquals("List of tasks", 1, results.size()); workItemId = 25; + procInstId = 103; busAdmin = "Neuromancer"; potOwner = "Hideo"; str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), "; @@ -838,7 +896,7 @@ public void testGetTasksByVariousFields() { str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })"; taskImpl = TaskFactory.evalTask(new StringReader(str)); ((InternalTaskData) taskImpl.getTaskData()).setWorkItemId(workItemId); - ((InternalTaskData) taskImpl.getTaskData()).setProcessInstanceId(workItemId); + ((InternalTaskData) taskImpl.getTaskData()).setProcessInstanceId(procInstId); taskService.addTask(taskImpl, new HashMap()); taskIds.add(taskImpl.getId()); assertEquals( potOwner, taskImpl.getTaskData().getActualOwner().getId() ); @@ -848,12 +906,14 @@ public void testGetTasksByVariousFields() { tasks[1] = (Task) taskService.getTaskById(taskImpl.getId()); statuses.add(tasks[1].getTaskData().getStatus()); + procInstIds.add(procInstId); workItemIds.add(workItemId); busAdmins.add(busAdmin); potOwners.add(potOwner); - + // Add one more task, just to make sure things are working wel workItemId = 57; + procInstId = 111; busAdmin = "reviewer"; potOwner = "translator"; str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), "; @@ -864,29 +924,49 @@ public void testGetTasksByVariousFields() { str += "names = [ new I18NText( 'nl-NL', 'Koude Bevel')] })"; taskImpl = TaskFactory.evalTask(new StringReader(str)); ((InternalTaskData) taskImpl.getTaskData()).setWorkItemId(workItemId); - ((InternalTaskData) taskImpl.getTaskData()).setProcessInstanceId(workItemId); + ((InternalTaskData) taskImpl.getTaskData()).setProcessInstanceId(procInstId); + taskService.addTask(taskImpl, new HashMap()); assertEquals( potOwner, taskImpl.getTaskData().getActualOwner().getId() ); taskService.start(taskImpl.getId(), potOwner); taskService.fail(taskImpl.getId(), busAdmin, null); - + + // everything results = taskService.getTasksByVariousFields(null, null, null, null, null, null, null, null, false); assertEquals("List of tasks", 3, results.size()); + testOrderByTaskIdAscending(results); + + // max results + GetTasksByVariousFieldsCommand queryCmd = new GetTasksByVariousFieldsCommand(); + queryCmd.setUnion(false); + queryCmd.setMaxResults(2); + results = ((InternalTaskService) taskService).execute(queryCmd); + assertEquals("List of tasks", 2, results.size()); + testOrderByTaskIdAscending(results); + assertEquals( "Did not order when returning tasks (first task id: " + results.get(0).getId(), firstTaskid, results.get(0).getId()); + // single param tests results = taskService.getTasksByVariousFields(workItemIds, null, null, null, null, null, null, null, false); assertEquals("List of tasks", 2, results.size()); + testOrderByTaskIdAscending(results); results = taskService.getTasksByVariousFields(null, taskIds, null, null, null, null, null, null, false ); assertEquals("List of tasks", 2, results.size()); - results = taskService.getTasksByVariousFields(null, null, workItemIds, null, null, null, null, null, false); + testOrderByTaskIdAscending(results); + results = taskService.getTasksByVariousFields(null, null, procInstIds, null, null, null, null, null, false); assertEquals("List of tasks", 2, results.size()); + testOrderByTaskIdAscending(results); results = taskService.getTasksByVariousFields(null, null, null, busAdmins, null, null, null, null, false); assertEquals("List of tasks", 2, results.size()); + testOrderByTaskIdAscending(results); results = taskService.getTasksByVariousFields(null, null, null, null, potOwners, null, null, null, false); assertEquals("List of tasks", 2, results.size()); + testOrderByTaskIdAscending(results); results = taskService.getTasksByVariousFields(null, null, null, null, null, potOwners, null, null, false); assertEquals("List of tasks", 2, results.size()); + testOrderByTaskIdAscending(results); results = taskService.getTasksByVariousFields(null, null, null, null, null, null, statuses, null, false); assertEquals("List of tasks", 2, results.size()); + testOrderByTaskIdAscending(results); // work item id and/or task id List testLongList = new ArrayList(); @@ -897,14 +977,17 @@ public void testGetTasksByVariousFields() { assertEquals("List of tasks", 0, results.size()); results = taskService.getTasksByVariousFields(testLongList, testLongListTwo, null, null, null, null, null, null, true); assertEquals("List of tasks", 2, results.size()); + testOrderByTaskIdAscending(results); // task id and/or process instance id testLongList.clear(); - testLongList.add(workItemIds.get(1)); + testLongList.add(procInstIds.get(1)); results = taskService.getTasksByVariousFields(null, testLongListTwo, testLongList, null, null, null, null, null, true); assertEquals("List of tasks", 1, results.size()); + testOrderByTaskIdAscending(results); results = taskService.getTasksByVariousFields(null, testLongListTwo, testLongList, null, null, null, null, null, false); assertEquals("List of tasks", 1, results.size()); + testOrderByTaskIdAscending(results); // process instance id and/or bus admin List testStringList = new ArrayList(); @@ -913,7 +996,8 @@ public void testGetTasksByVariousFields() { assertEquals("List of tasks", 0, results.size()); results = taskService.getTasksByVariousFields(null, testLongListTwo, null, testStringList, null, null, null, null, true); assertEquals("List of tasks", 2, results.size()); - + testOrderByTaskIdAscending(results); + // bus admin and/or pot owner testStringList.clear(); testStringList.add(busAdmins.get(1)); @@ -923,6 +1007,7 @@ public void testGetTasksByVariousFields() { assertEquals("List of tasks", 0, results.size()); results = taskService.getTasksByVariousFields(null, null, null, testStringList, testStringListTwo, null, null, null, true); assertEquals("List of tasks", 2, results.size()); + testOrderByTaskIdAscending(results); // pot owner and/or task owner testStringList.clear(); @@ -931,6 +1016,7 @@ public void testGetTasksByVariousFields() { assertEquals("List of tasks", 0, results.size()); results = taskService.getTasksByVariousFields(null, null, null, null, testStringListTwo, testStringList, null, null, true); assertEquals("List of tasks", 2, results.size()); + testOrderByTaskIdAscending(results); // task owner and/or status List testStatusList = new ArrayList(); @@ -939,68 +1025,27 @@ public void testGetTasksByVariousFields() { assertEquals("List of tasks", 0, results.size()); results = taskService.getTasksByVariousFields(null, null, null, null, null, testStringList, testStatusList, null, true); assertEquals("List of tasks", 2, results.size()); + testOrderByTaskIdAscending(results); // status and/or language List testLangList = new ArrayList(); testLangList.add("en-UK"); results = taskService.getTasksByVariousFields(null, null, null, null, null, null, testStatusList, testLangList, true); assertEquals("List of tasks", 2, results.size()); + testOrderByTaskIdAscending(results); testLangList.clear(); testLangList.add("nl-BE"); results = taskService.getTasksByVariousFields(null, null, null, null, null, testStringList, testStatusList, null, false); assertEquals("List of tasks", 0, results.size()); } - - @Test - public void testModifyTaskName() { - // JBPM-4148 - String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), "; - str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Bobba Fet') ],businessAdministrators = [ new User('Administrator') ], }),"; - str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })"; - Task task = TaskFactory.evalTask(new StringReader(str)); - taskService.addTask(task, new HashMap()); - List tasks = taskService.getTasksAssignedAsPotentialOwner("Bobba Fet", "en-UK"); - assertEquals(1, tasks.size()); - assertEquals("This is my task name", tasks.get(0).getName()); - - Task newTask = taskService.getTaskById(tasks.get(0).getId()); - List updatedNames = new ArrayList(); - I18NText updatedName = TaskModelProvider.getFactory().newI18NText(); - ((InternalI18NText) updatedName).setLanguage(newTask.getNames().get(0).getLanguage()); - ((InternalI18NText) updatedName).setText("New task name"); - updatedNames.add(updatedName); - - taskService.setTaskNames(newTask.getId(), updatedNames); - - List newTasks = taskService.getTasksAssignedAsPotentialOwner("Bobba Fet", "en-UK"); - assertEquals(1, newTasks.size()); - assertEquals("New task name", newTasks.get(0).getName()); - } - - @Test - public void testModifyTaskNameWithinTX() throws Exception{ - // JBPM-4148 - String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), "; - str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Bobba Fet') ],businessAdministrators = [ new User('Administrator') ], }),"; - str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })"; - Task task = TaskFactory.evalTask(new StringReader(str)); - taskService.addTask(task, new HashMap()); - List tasks = taskService.getTasksAssignedAsPotentialOwner("Bobba Fet", "en-UK"); - assertEquals(1, tasks.size()); - assertEquals("This is my task name", tasks.get(0).getName()); - - UserTransaction ut = InitialContext.doLookup("java:comp/UserTransaction"); - ut.begin(); - Task newTask = taskService.getTaskById(tasks.get(0).getId()); - ((InternalI18NText)newTask.getNames().get(0)).setText("New task name"); - ut.commit(); - - List newTasks = taskService.getTasksAssignedAsPotentialOwner("Bobba Fet", "en-UK"); - assertEquals(1, newTasks.size()); - assertEquals("New task name", newTasks.get(0).getName()); + + private void testOrderByTaskIdAscending(List results) { + for( int i = 1; i < results.size(); ++i ) { + assertTrue("Tasks not correctly ordered: " + results.get(0).getId() + " ? " + results.get(1).getId(), + results.get(i-1).getId() < results.get(i).getId()); + } } - @Test public void testGetTasksByVariousFieldsWithUserGroupCallback() {