diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskGroup.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskGroup.java index 346c2f901..d7b00df73 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskGroup.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskGroup.java @@ -105,6 +105,7 @@ public class TaskGroup extends TaskElement { } public void setTaskChildrenTo(List children) { + Validate.noNullElements(children); int positionOnTaskElements = 0; for (int i = 0; i < children.size(); i++) { TaskElement element = children.get(i); @@ -112,8 +113,7 @@ public class TaskGroup extends TaskElement { taskElements.add(element); } else { while (positionOnTaskElements < taskElements.size() - && taskElements.get(positionOnTaskElements) - .isMilestone()) { + && isMilestone(taskElements.get(positionOnTaskElements))) { positionOnTaskElements++; } if (positionOnTaskElements >= taskElements.size()) { @@ -128,12 +128,17 @@ public class TaskGroup extends TaskElement { .listIterator(positionOnTaskElements); while (listIterator.hasNext()) { TaskElement current = listIterator.next(); - if (!current.isMilestone()) { + if (!isMilestone(current)) { listIterator.remove(); } } } + private boolean isMilestone(TaskElement t) { + // it can be null since removed elements are nullified in the list + return t != null && t.isMilestone(); + } + @Override protected void initializeEndDate() { List endDates = getEndDates(getChildren());