Skip to content

Commit afe3422

Browse files
committed
Reduce complexity of private method FinishedJobs::findJobsToRemove
Also make it return an Iterable instead of null to avoid null checks
1 parent 29831f8 commit afe3422

File tree

1 file changed

+36
-35
lines changed
  • bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress

1 file changed

+36
-35
lines changed

bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/FinishedJobs.java

Lines changed: 36 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
package org.eclipse.ui.internal.progress;
1515

1616
import java.util.ArrayList;
17+
import java.util.Collections;
1718
import java.util.Date;
1819
import java.util.HashMap;
1920
import java.util.LinkedHashSet;
@@ -178,11 +179,8 @@ private void removeDuplicates(GroupInfo info) {
178179

179180
private void removeDuplicates(JobTreeElement info) {
180181
synchronized (keptjobinfos) {
181-
JobTreeElement[] toBeRemoved = findJobsToRemove(info);
182-
if (toBeRemoved != null) {
183-
for (JobTreeElement element : toBeRemoved) {
184-
remove(element);
185-
}
182+
for (JobTreeElement element : findJobsToRemove(info)) {
183+
remove(element);
186184
}
187185
}
188186
}
@@ -231,53 +229,56 @@ static void disposeAction(JobTreeElement jte) {
231229
}
232230
}
233231

234-
private JobTreeElement[] findJobsToRemove(JobTreeElement info) {
235-
236-
if (info.isJobInfo()) {
237-
Job myJob = ((JobInfo) info).getJob();
238-
239-
if (myJob != null) {
240-
241-
Object prop = myJob.getProperty(ProgressManagerUtil.KEEPONE_PROPERTY);
242-
if (prop instanceof Boolean && ((Boolean) prop).booleanValue()) {
243-
ArrayList<JobTreeElement> found = null;
244-
JobTreeElement[] all = getKeptElements();
245-
for (JobTreeElement jobTreeElement : all) {
246-
if (jobTreeElement != info && jobTreeElement.isJobInfo()) {
247-
Job job = ((JobInfo) jobTreeElement).getJob();
248-
if (job != null && job != myJob && job.belongsTo(myJob)) {
249-
if (found == null) {
250-
found = new ArrayList<>();
251-
}
252-
found.add(jobTreeElement);
253-
}
254-
}
255-
}
256-
if (found != null) {
257-
return found.toArray(new JobTreeElement[found.size()]);
258-
}
232+
private Iterable<JobTreeElement> findJobsToRemove(JobTreeElement info) {
233+
234+
if (!info.isJobInfo()) {
235+
return Collections.emptyList();
236+
}
237+
238+
Job myJob = ((JobInfo) info).getJob();
239+
240+
if (myJob == null) {
241+
return Collections.emptyList();
242+
}
243+
244+
if (!(myJob.getProperty(ProgressManagerUtil.KEEPONE_PROPERTY) instanceof Boolean keepOne) || !keepOne) {
245+
return Collections.emptyList();
246+
}
247+
248+
ArrayList<JobTreeElement> found = null;
249+
JobTreeElement[] all = getKeptElements();
250+
for (JobTreeElement jobTreeElement : all) {
251+
if (jobTreeElement == info || !jobTreeElement.isJobInfo()) {
252+
continue;
253+
}
254+
Job job = ((JobInfo) jobTreeElement).getJob();
255+
if (job != null && job != myJob && job.belongsTo(myJob)) {
256+
if (found == null) {
257+
found = new ArrayList<>();
259258
}
259+
found.add(jobTreeElement);
260260
}
261261
}
262-
return null;
262+
if (found != null) {
263+
return found;
264+
}
265+
266+
return Collections.emptyList();
263267
}
264268

265269
private void checkTasks(JobInfo info) {
266270
if (keep(info)) {
267271
Optional<TaskInfo> optional = info.getTaskInfo();
268272
if (optional.isPresent()) {
269273
TaskInfo tinfo = optional.get();
270-
JobTreeElement[] toBeRemoved = null;
271274
boolean fire = false;
272275
JobInfo element = tinfo.getParent();
273276
synchronized (keptjobinfos) {
274277
if (element == info && !keptjobinfos.contains(tinfo)) {
275-
toBeRemoved = findJobsToRemove(element);
278+
Iterable<JobTreeElement> toBeRemoved = findJobsToRemove(element);
276279
keptjobinfos.add(tinfo);
277280
finishedTime.put(tinfo, Long.valueOf(System.currentTimeMillis()));
278-
}
279281

280-
if (toBeRemoved != null) {
281282
for (JobTreeElement jobTreeElement : toBeRemoved) {
282283
remove(jobTreeElement);
283284
}

0 commit comments

Comments
 (0)