Skip to content

Commit

Permalink
- BZ-1105868: adding checks for empty lists
Browse files Browse the repository at this point in the history
  • Loading branch information
salaboy committed Jun 10, 2014
1 parent d2aa02f commit 32fba6d
Show file tree
Hide file tree
Showing 4 changed files with 234 additions and 22 deletions.
Expand Up @@ -66,7 +66,7 @@ public void setStatuses(List<Status> status) {
public List<TaskSummary> execute(Context cntxt) {
TaskContext context = (TaskContext) cntxt;
doCallbackUserOperation(userId, context);
if (groupsIds != null) {
if (groupsIds != null && !groupsIds.isEmpty()) {
return context.getTaskQueryService().getTasksAssignedAsPotentialOwnerByStatusByGroup(userId, groupsIds, status, language);
}

Expand Down
Expand Up @@ -45,6 +45,14 @@ public class TaskQueryServiceImpl implements TaskQueryService {
private static final Logger logger = LoggerFactory.getLogger(TaskQueryServiceImpl.class);

private TaskPersistenceContext persistenceContext;

private static final List<Status> allActiveStatus = new ArrayList<Status>(){{
this.add(Status.Created);
this.add(Status.Ready);
this.add(Status.Reserved);
this.add(Status.InProgress);
this.add(Status.Suspended);
}};

public TaskQueryServiceImpl() {
}
Expand Down Expand Up @@ -77,18 +85,27 @@ public List<TaskSummary> getTasksAssignedAsPotentialOwner(String userId, String
}

public List<TaskSummary> getTasksAssignedAsPotentialOwner(String userId, List<String> groupIds, String language) {
if(groupIds == null || groupIds.isEmpty()){
return getTasksAssignedAsPotentialOwner(userId, language);
}
return (List<TaskSummary>) persistenceContext.queryWithParametersInTransaction("TasksAssignedAsPotentialOwnerWithGroups",
persistenceContext.addParametersToMap("userId", userId, "groupIds", groupIds, "language", language),
ClassUtil.<List<TaskSummary>>castClass(List.class));
}

public List<TaskSummary> getTasksAssignedByGroup(String groupId, String language) {
if(groupId == null || groupId.isEmpty()){
return Collections.EMPTY_LIST;
}
return (List<TaskSummary>) persistenceContext.queryWithParametersInTransaction("TasksAssignedAsPotentialOwnerByGroup",
persistenceContext.addParametersToMap("groupId", groupId, "language", language),
ClassUtil.<List<TaskSummary>>castClass(List.class));
}

public List<TaskSummary> getTasksAssignedByGroupsByExpirationDateOptional(List<String> groupIds, String language, Date expirationDate) {
if(groupIds == null || groupIds.isEmpty()){
return Collections.EMPTY_LIST;
}
List<Object[]> tasksByGroups = (List<Object[]>)persistenceContext.queryWithParametersInTransaction("TasksAssignedAsPotentialOwnerByGroupsByExpirationDateOptional",
persistenceContext.addParametersToMap("groupIds", groupIds, "expirationDate", expirationDate),
ClassUtil.<List<Object[]>>castClass(List.class));
Expand Down Expand Up @@ -122,15 +139,19 @@ protected List<TaskSummary> collectTasksByPotentialOwners(List<Object[]> tasksBy
}

public List<TaskSummary> getTasksAssignedByGroupsByExpirationDate(List<String> groupIds, String language, Date expirationDate) {

if(groupIds == null || groupIds.isEmpty()){
return Collections.EMPTY_LIST;
}
List<Object[]> tasksByGroups = (List<Object[]>) persistenceContext.queryWithParametersInTransaction("TasksAssignedAsPotentialOwnerByGroupsByExpirationDate",
persistenceContext.addParametersToMap("groupIds", groupIds, "expirationDate", expirationDate),
ClassUtil.<List<Object[]>>castClass(List.class));
return collectTasksByPotentialOwners(tasksByGroups, language);
}

public List<TaskSummary> getTasksAssignedByGroups(List<String> groupIds, String language) {

if(groupIds == null || groupIds.isEmpty()){
return Collections.EMPTY_LIST;
}
List<Object[]> tasksByGroups = (List<Object[]>) persistenceContext.queryWithParametersInTransaction("TasksAssignedAsPotentialOwnerByGroups",
persistenceContext.addParametersToMap("groupIds", groupIds),
ClassUtil.<List<Object[]>>castClass(List.class));
Expand Down Expand Up @@ -183,6 +204,12 @@ public Map<Long, List<OrganizationalEntity>> getPotentialOwnersForTaskIds(List<L
}

public List<TaskSummary> getTasksAssignedAsPotentialOwner(String userId, List<String> groupIds, String language, int firstResult, int maxResults) {
if(groupIds == null || groupIds.isEmpty()){
return (List<TaskSummary>) persistenceContext.queryWithParametersInTransaction("TasksAssignedAsPotentialOwner",
persistenceContext.addParametersToMap("userId", userId, "language", language,
"firstResult", firstResult, "maxResults", maxResults),
ClassUtil.<List<TaskSummary>>castClass(List.class));
}
return (List<TaskSummary>) persistenceContext.queryWithParametersInTransaction("TasksAssignedAsPotentialOwnerWithGroups",
persistenceContext.addParametersToMap("userId", userId, "groupIds", groupIds, "language", language,
"firstResult", firstResult, "maxResults", maxResults),
Expand Down Expand Up @@ -218,7 +245,9 @@ public List<TaskSummary> getTasksOwned(String userId, String language) {


public List<TaskSummary> getTasksOwnedByStatus(String userId, List<Status> status, String language) {

if(status == null || status.isEmpty()){
status = allActiveStatus;
}
List<TaskSummary> taskOwned = (List<TaskSummary>) persistenceContext.queryWithParametersInTransaction("TasksOwnedWithParticularStatus",
persistenceContext.addParametersToMap("userId", userId, "status", status, "language", language),
ClassUtil.<List<TaskSummary>>castClass(List.class));
Expand Down Expand Up @@ -253,13 +282,22 @@ public List<TaskSummary> getTasksOwnedByStatus(String userId, List<Status> statu
}

public List<TaskSummary> getTasksAssignedAsPotentialOwnerByStatus(String userId, List<Status> status, String language) {
if(status == null || status.isEmpty()){
status = allActiveStatus;
}
return (List<TaskSummary>) persistenceContext.queryWithParametersInTransaction("TasksAssignedAsPotentialOwnerByStatus",
persistenceContext.addParametersToMap("userId", userId ,"language", language,"status", status),
ClassUtil.<List<TaskSummary>>castClass(List.class));

}

public List<TaskSummary> getTasksAssignedAsPotentialOwnerByStatusByGroup(String userId, List<String> groupIds, List<Status> status, String language) {
if(status == null || status.isEmpty()){
status = allActiveStatus;
}
if(groupIds == null || groupIds.isEmpty()){
return getTasksAssignedAsPotentialOwnerByStatus(userId, status, language);
}
return (List<TaskSummary>) persistenceContext.queryWithParametersInTransaction("TasksAssignedAsPotentialOwnerByStatusByGroup",
persistenceContext.addParametersToMap("userId", userId, "groupIds", groupIds, "status", status, "language", language),
ClassUtil.<List<TaskSummary>>castClass(List.class));
Expand Down Expand Up @@ -302,24 +340,39 @@ public Task getTaskByWorkItemId(long workItemId) {
return (Task) (tasks.get(0));
}
@Override
public List<TaskSummary> getTasksAssignedAsPotentialOwnerByExpirationDate(String userId, List<String> groupsIds,
public List<TaskSummary> getTasksAssignedAsPotentialOwnerByExpirationDate(String userId, List<String> groupIds,
List<Status> status, Date expirationDate) {
return (List<TaskSummary>) persistenceContext.queryWithParametersInTransaction("TasksAssignedAsPotentialOwnerStatusByExpirationDate",
persistenceContext.addParametersToMap("userId", userId, "groupIds", groupsIds, "status", status, "expirationDate", expirationDate, "language", "en-UK"),
if(status == null || status.isEmpty()){
status = allActiveStatus;
}
if(groupIds == null || groupIds.isEmpty()){
return getTasksAssignedAsPotentialOwnerByExpirationDate(userId, status, expirationDate);
}
return (List<TaskSummary>) persistenceContext.queryWithParametersInTransaction("TasksAssignedAsPotentialOwnerStatusByExpirationDateByGroup",
persistenceContext.addParametersToMap("userId", userId, "groupIds", groupIds, "status", status, "expirationDate", expirationDate, "language", "en-UK"),
ClassUtil.<List<TaskSummary>>castClass(List.class));

}

@Override
public List<TaskSummary> getTasksAssignedAsPotentialOwnerByExpirationDateOptional(String userId, List<String> groupsIds,
public List<TaskSummary> getTasksAssignedAsPotentialOwnerByExpirationDateOptional(String userId, List<String> groupIds,
List<Status> status, Date expirationDate) {
return (List<TaskSummary>) persistenceContext.queryWithParametersInTransaction("TasksAssignedAsPotentialOwnerStatusByExpirationDateOptional",
persistenceContext.addParametersToMap("userId", userId, "groupIds", groupsIds, "status", status, "expirationDate", expirationDate, "language", "en-UK"),
ClassUtil.<List<TaskSummary>>castClass(List.class)); //@TODO: FIX LANGUANGE
if(status == null || status.isEmpty()){
status = allActiveStatus;
}
if(groupIds == null || groupIds.isEmpty()){
return getTasksAssignedAsPotentialOwnerByExpirationDateOptional(userId, status, expirationDate);
}
return (List<TaskSummary>) persistenceContext.queryWithParametersInTransaction("TasksAssignedAsPotentialOwnerStatusByExpirationDateOptionalByGroup",
persistenceContext.addParametersToMap("userId", userId, "groupIds", groupIds, "status", status, "expirationDate", expirationDate, "language", "en-UK"),
ClassUtil.<List<TaskSummary>>castClass(List.class));

}
@Override
public List<TaskSummary> getTasksOwnedByExpirationDate(String userId, List<Status> status, Date expirationDate) {
if(status == null || status.isEmpty()){
status = allActiveStatus;
}
return persistenceContext.queryWithParametersInTransaction("TasksOwnedWithParticularStatusByExpirationDate",
persistenceContext.addParametersToMap("userId", userId, "status", status, "expirationDate", expirationDate, "language", "en-UK"),
ClassUtil.<List<TaskSummary>>castClass(List.class));
Expand All @@ -329,6 +382,9 @@ public List<TaskSummary> getTasksOwnedByExpirationDate(String userId, List<Stat

@Override
public List<TaskSummary> getTasksOwnedByExpirationDateOptional(String userId, List<Status> status, Date expirationDate) {
if(status == null || status.isEmpty()){
status = allActiveStatus;
}
return (List<TaskSummary>) persistenceContext.queryWithParametersInTransaction("TasksOwnedWithParticularStatusByExpirationDateOptional",
persistenceContext.addParametersToMap("userId", userId, "status", status, "expirationDate", expirationDate, "language", "en-UK"),
ClassUtil.<List<TaskSummary>>castClass(List.class)); //@TODO: FIX LANGUANGE
Expand All @@ -337,13 +393,19 @@ public List<TaskSummary> getTasksOwnedByExpirationDateOptional(String userId, Li

@Override
public List<TaskSummary> getTasksOwnedByExpirationDateBeforeSpecifiedDate(String userId, List<Status> status, Date date) {
if(status == null || status.isEmpty()){
status = allActiveStatus;
}
return (List<TaskSummary>) persistenceContext.queryWithParametersInTransaction("TasksOwnedWithParticularStatusByExpirationDateBeforeSpecifiedDate",
persistenceContext.addParametersToMap("userId", userId, "status", status, "date", date, "language", "en-UK"),
ClassUtil.<List<TaskSummary>>castClass(List.class));
}

@Override
public List<TaskSummary> getTasksByStatusByProcessInstanceId(long processInstanceId, List<Status> status, String language) {
if(status == null || status.isEmpty()){
status = allActiveStatus;
}
List<TaskSummary> tasks = (List<TaskSummary>) persistenceContext.queryWithParametersInTransaction("TasksByStatusByProcessId",
persistenceContext.addParametersToMap("processInstanceId", processInstanceId,
"status", status,
Expand All @@ -356,6 +418,9 @@ public List<TaskSummary> getTasksByStatusByProcessInstanceId(long processInstanc
@Override
public List<TaskSummary> getTasksByStatusByProcessInstanceIdByTaskName(long processInstanceId, List<Status> status, String taskName,
String language) {
if(status == null || status.isEmpty()){
status = allActiveStatus;
}
List<TaskSummary> tasks = (List<TaskSummary>)persistenceContext.queryWithParametersInTransaction("TasksByStatusByProcessIdByTaskName",
persistenceContext.addParametersToMap("processInstanceId", processInstanceId,
"status", status,
Expand All @@ -376,15 +441,21 @@ public List<Long> getTasksByProcessInstanceId(long processInstanceId) {

@Override
public List<TaskSummary> getTasksAssignedAsPotentialOwnerByExpirationDate(String userId, List<Status> status, Date expirationDate) {
if(status == null || status.isEmpty()){
status = allActiveStatus;
}
return (List<TaskSummary>) persistenceContext.queryWithParametersInTransaction("TasksAssignedAsPotentialOwnerStatusByExpirationDate",
persistenceContext.addParametersToMap("userId", userId, "groupIds", "", "status", status, "expirationDate", expirationDate, "language", "en-UK"),
persistenceContext.addParametersToMap("userId", userId, "status", status, "expirationDate", expirationDate, "language", "en-UK"),
ClassUtil.<List<TaskSummary>>castClass(List.class));
}

@Override
public List<TaskSummary> getTasksAssignedAsPotentialOwnerByExpirationDateOptional(String userId, List<Status> status, Date expirationDate) {
if(status == null || status.isEmpty()){
status = allActiveStatus;
}
return (List<TaskSummary>) persistenceContext.queryWithParametersInTransaction("TasksAssignedAsPotentialOwnerStatusByExpirationDateOptional",
persistenceContext.addParametersToMap("userId", userId, "groupIds", "", "status", status, "expirationDate", expirationDate, "language", "en-UK"),
persistenceContext.addParametersToMap("userId", userId, "status", status, "expirationDate", expirationDate, "language", "en-UK"),
ClassUtil.<List<TaskSummary>>castClass(List.class)); //@TODO: FIX LANGUANGE
}

Expand Down Expand Up @@ -418,6 +489,9 @@ public List<TaskSummary> getTasksByVariousFields(List<Long> workItemIds, List<Lo
params.put(BUSINESS_ADMIN_ID_LIST, busAdmins);
params.put(POTENTIAL_OWNER_ID_LIST, potOwners);
params.put(ACTUAL_OWNER_ID_LIST, taskOwners);
if(status == null || status.isEmpty()){
status = allActiveStatus;
}
params.put(STATUS_LIST, status);
params.put(LANGUAGE, language);

Expand Down Expand Up @@ -447,7 +521,6 @@ public List<TaskSummary> getTasksByVariousFields( Map<String, List<?>> parameter
List<String> taskOwners = stringQueryAdder.checkNullAndInstanceOf(parameters, ACTUAL_OWNER_ID_LIST);
List<String> language = stringQueryAdder.checkNullAndInstanceOf(parameters, LANGUAGE);
List<Status> status = statusQueryAdder.checkNullAndInstanceOf(parameters, STATUS_LIST);

List<?> maxResultsList = parameters.get(MAX_RESULTS);
if( maxResultsList != null && ! maxResultsList.isEmpty() ) {
Object maxResults = maxResultsList.get(0);
Expand Down
Expand Up @@ -52,6 +52,42 @@
public abstract class LifeCycleBaseTest extends HumanTaskServicesBaseTest {


@Test
/*
* Related to BZ-1105868
*/
public void testWithNoTaskAndEmptyLists(){

List<TaskSummary> tasksAssignedAsPotentialOwner = taskService.getTasksAssignedAsPotentialOwner("nouser", new ArrayList<String>(), "en-UK");
assertTrue(tasksAssignedAsPotentialOwner.isEmpty());

List<TaskSummary> tasksAssignedAsPotentialOwner2 = taskService.getTasksAssignedAsPotentialOwner("nouser", null, "en-UK");
assertTrue(tasksAssignedAsPotentialOwner2.isEmpty());

List<TaskSummary> tasksAssignedAsPotentialOwner3 = taskService.getTasksAssignedAsPotentialOwner("", null, "en-UK");
assertTrue(tasksAssignedAsPotentialOwner3.isEmpty());

List<TaskSummary> tasksAssignedAsPotentialOwner4 = taskService.getTasksAssignedAsPotentialOwner(null, null, "en-UK");
assertTrue(tasksAssignedAsPotentialOwner4.isEmpty());

List<TaskSummary> tasksAssignedAsPotentialOwner5 = taskService.getTasksAssignedAsPotentialOwner("salaboy", null, "en-UK");
assertTrue(tasksAssignedAsPotentialOwner5.isEmpty());

List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwnerByStatusByGroup("Bobba Fet", null, null, "en-UK");
assertTrue(tasks.isEmpty());

List<TaskSummary> tasks2 = taskService.getTasksAssignedAsPotentialOwnerByStatusByGroup("Bobba Fet", new ArrayList<String>(), null, "en-UK");
assertTrue(tasks2.isEmpty());

List<TaskSummary> tasks3 = taskService.getTasksAssignedAsPotentialOwnerByStatusByGroup("Bobba Fet", new ArrayList<String>(), new ArrayList<Status>(), "en-UK");
assertTrue(tasks3.isEmpty());

List<TaskSummary> tasks4 = taskService.getTasksAssignedAsPotentialOwnerByStatusByGroup("admin", new ArrayList<String>(), new ArrayList<Status>(), "en-UK");
assertTrue(tasks4.isEmpty());


}

@Test
public void testNewTaskWithNoPotentialOwners() {

Expand Down Expand Up @@ -95,6 +131,8 @@ public void testNewTaskWithSinglePotentialOwner() {

taskService.getTasksAssignedAsPotentialOwner(potOwner, language);
}



@Test
public void testNewTaskWithContent() {
Expand Down

0 comments on commit 32fba6d

Please sign in to comment.