private void checkTasks(JobInfo info) { if (keep(info)) { TaskInfo tinfo = info.getTaskInfo(); if (tinfo != null) { JobTreeElement[] toBeRemoved = null; boolean fire = false; JobTreeElement element = (JobTreeElement) tinfo.getParent(); synchronized (keptjobinfos) { if (element == info && !keptjobinfos.contains(tinfo)) { toBeRemoved = findJobsToRemove(element); keptjobinfos.add(tinfo); finishedTime.put(tinfo, new Long(System.currentTimeMillis())); } } if (toBeRemoved != null) { for (int i = 0; i < toBeRemoved.length; i++) { remove(toBeRemoved[i]); } } if (fire) { Object l[] = getListeners(); for (int i = 0; i < l.length; i++) { KeptJobsListener jv = (KeptJobsListener) l[i]; jv.finished(info); } } } } }