From b80cde2097f7284637c2e6c6032708b33a754e3a Mon Sep 17 00:00:00 2001 From: Svata Dedic Date: Mon, 2 Sep 2024 12:43:52 +0200 Subject: [PATCH] Code improvements from review. --- .../reload/ProjectReloadInternal.java | 31 ++++++++----------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/ide/project.dependency/src/org/netbeans/modules/project/dependency/reload/ProjectReloadInternal.java b/ide/project.dependency/src/org/netbeans/modules/project/dependency/reload/ProjectReloadInternal.java index b3e8e039ab6a..2b703160430d 100644 --- a/ide/project.dependency/src/org/netbeans/modules/project/dependency/reload/ProjectReloadInternal.java +++ b/ide/project.dependency/src/org/netbeans/modules/project/dependency/reload/ProjectReloadInternal.java @@ -25,7 +25,6 @@ import java.util.Collections; import java.util.HashMap; import java.util.HashSet; -import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; @@ -762,22 +761,20 @@ public void assertNoOperations() { } } - private Collection collectRelaeases(ProjectOperations op) { - Collection releases = op.releases; + private Collection collectReleases(ProjectOperations op) { + Collection releases = op.releases; // this is copied from postCleanup, but can be done in batch without // checking the project operation is in progress for each reference. These are already removed // from stateIdentity, so just check they did not obtain another one: - for (Iterator it = releases.iterator(); it.hasNext(); ) { - IdentityHolder expired = it.next(); + releases.removeIf(expired -> { ProjectStateData d = expired.state.get(); if (d == null) { - it.remove(); + return true; } IdentityHolder h = stateIdentity.get(d); - if (h != null && h != expired) { - it.remove(); - } - } + return h != null && h != expired; + }); + op.releases = new ArrayList<>(); return releases; } @@ -832,8 +829,7 @@ private void endOperation(Project p, Reloader reload, Runnable futureCompleter) } else { // do not remove from the pendingOperations YET, we want to capture potential reload requests // until after the events are fired off, so they do not interleave. - releases = collectRelaeases(op); - op.releases = new ArrayList<>(); + releases = collectReleases(op); } terminatingOperations.add(op); } @@ -897,18 +893,18 @@ private void endOperation(Project p, Reloader reload, Runnable futureCompleter) CompletableFuture f = CompletableFuture.runAsync(() -> fNextReloader.initRound(), loader). thenCompose((v) -> fNextReloader.start(floader)); // run this cleanup in the dispatcher thread - f.whenCompleteAsync((a, b) -> { + f.whenCompleteAsync((result, err) -> { LOG.log(Level.FINER, "Return RP to the pool", new Object[] { floader }); loaderProcessors.offer(floader); try { LOG.log(Level.FINE, "Load end project {0} with request {1}", new Object[] { fNextReloader.project, fNextReloader.request }); // postpone event delivery so that the events observers see the Future as completed. - endOperation(fNextReloader.project, fNextReloader, () -> {; - if (b == null) { - fNextReloader.completePending.completeAsync(() -> a, RELOAD_RP); + endOperation(fNextReloader.project, fNextReloader, () -> { + if (err == null) { + fNextReloader.completePending.completeAsync(() -> result, RELOAD_RP); } else { RELOAD_RP.post(() -> { - fNextReloader.completePending.completeExceptionally(b); + fNextReloader.completePending.completeExceptionally(err); }); } }); @@ -916,7 +912,6 @@ private void endOperation(Project p, Reloader reload, Runnable futureCompleter) throw td; } catch (Throwable t) { Exceptions.printStackTrace(t); - } finally { } }, floader); });