From 347e1e6c282e593ba0185126932ae21acfbd82ee Mon Sep 17 00:00:00 2001 From: Dmitry Kichinsky Date: Wed, 1 Mar 2023 23:45:57 +0100 Subject: [PATCH] IDEA-313962: update stack is not needed anymore (replaced with update history) GitOrigin-RevId: c4c6a307f8576685e469234c5b8b84e6cc199254 --- .../idea/maven/project/MavenProjectsTree.java | 30 ++++++------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsTree.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsTree.java index b1e7d7057d28..12a91bdbce65 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsTree.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsTree.java @@ -16,8 +16,10 @@ import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.ThrowableRunnable; -import com.intellij.util.containers.Stack; -import com.intellij.util.containers.*; +import com.intellij.util.containers.ArrayListSet; +import com.intellij.util.containers.ContainerUtil; +import com.intellij.util.containers.DisposableWrapperList; +import com.intellij.util.containers.FileCollectionFactory; import com.intellij.util.io.PathKt; import it.unimi.dsi.fastutil.Hash; import it.unimi.dsi.fastutil.objects.ObjectOpenCustomHashSet; @@ -38,8 +40,6 @@ import org.jetbrains.idea.maven.utils.*; import java.io.*; import java.nio.file.Path; -import java.util.HashMap; -import java.util.HashSet; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; @@ -497,10 +497,7 @@ public final class MavenProjectsTree { updateContext.fireUpdatedIfNecessary(); } - private record UpdateSpec(Stack updateStack, VirtualFile mavenProjectFile, boolean updateModules, boolean forceReading) { - UpdateSpec(VirtualFile mavenProjectFile, boolean updateModules, boolean forceReading){ - this(new Stack<>(), mavenProjectFile, updateModules, forceReading); - } + private record UpdateSpec(VirtualFile mavenProjectFile, boolean updateModules, boolean forceReading) { } private static class MavenProjectsTreeUpdater { @@ -533,19 +530,13 @@ public final class MavenProjectsTree { if (specs.isEmpty()) return; ParallelRunner.runSequentially(specs, spec -> { - update(spec.updateStack(), spec.mavenProjectFile(), spec.updateModules(), spec.forceReading()); + update(spec.mavenProjectFile(), spec.updateModules(), spec.forceReading()); }); } - private void update(final Stack updateStack, - final VirtualFile mavenProjectFile, + private void update(final VirtualFile mavenProjectFile, final boolean updateModules, final boolean forceReading) { - if (updateStack.contains(mavenProjectFile)) { - MavenLog.LOG.info("Recursion detected in " + mavenProjectFile); - return; - } - updateHistory.putIfAbsent(mavenProjectFile, new CopyOnWriteArrayList<>()); var fileHistory = updateHistory.get(mavenProjectFile); @@ -568,7 +559,6 @@ public final class MavenProjectsTree { } fileHistory.add(new UpdateSettings(updateModules, forceReading)); - updateStack.push(mavenProjectFile); process.setText(MavenProjectBundle.message("maven.reading.pom", mavenProjectFile.getPath())); process.setText2(""); @@ -638,7 +628,7 @@ public final class MavenProjectsTree { if (readProject || isNewModule || updateModules) { // do not force update modules if only this project was requested to be updated - moduleUpdateSpecs.add(new UpdateSpec(new Stack<>(updateStack), each, updateModules, updateModules && forceReading)); + moduleUpdateSpecs.add(new UpdateSpec(each, updateModules, updateModules && forceReading)); } } updateProjects(moduleUpdateSpecs); @@ -659,14 +649,12 @@ public final class MavenProjectsTree { for (MavenProject each : prevInheritors) { inheritorUpdateSpecs.add( new UpdateSpec( - new Stack<>(updateStack), each.getFile(), + each.getFile(), false, // no need to go recursively in case of inheritance, only when updating modules readProject // if parent was read, force read children )); } updateProjects(inheritorUpdateSpecs); - - updateStack.pop(); } }