Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Loskutov2017-07-26 14:32:13 +0000
committerAndrey Loskutov2017-07-26 15:24:04 +0000
commit91a82b9d620f896fd31618275e0ebb2098ac33ac (patch)
treeaed45805b8b00ab71950f75e9d277039b5b57202
parentdb6a352f061ce874849e3e7ce98a4b4e7e057a3c (diff)
downloadeclipse.platform.ui-91a82b9d620f896fd31618275e0ebb2098ac33ac.tar.gz
eclipse.platform.ui-91a82b9d620f896fd31618275e0ebb2098ac33ac.tar.xz
eclipse.platform.ui-91a82b9d620f896fd31618275e0ebb2098ac33ac.zip
Bug 520215 - ConcurrentModificationException in
CloseResourceAction.updateSelection Change-Id: I35d00e506c59a7e9072dc4957103dfb53a6e697d Signed-off-by: Andrey Loskutov <loskutov@gmx.de> (cherry picked from commit 46d6b07f207bd78a88235cb93a0a97e1c8513427)
-rw-r--r--bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CloseUnrelatedProjectsAction.java11
1 files changed, 6 insertions, 5 deletions
diff --git a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CloseUnrelatedProjectsAction.java b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CloseUnrelatedProjectsAction.java
index a1ef56deb19..1b980697100 100644
--- a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CloseUnrelatedProjectsAction.java
+++ b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CloseUnrelatedProjectsAction.java
@@ -55,7 +55,7 @@ public class CloseUnrelatedProjectsAction extends CloseResourceAction {
*/
public static final String ID = PlatformUI.PLUGIN_ID + ".CloseUnrelatedProjectsAction"; //$NON-NLS-1$
- private final List<IResource> projectsToClose = new ArrayList<>();
+ private List<IResource> projectsToClose = new ArrayList<>();
private boolean selectionDirty = true;
@@ -190,7 +190,7 @@ public class CloseUnrelatedProjectsAction extends CloseResourceAction {
/**
* Computes the related projects of the selection.
*/
- private void computeRelated(List<? extends IResource> selection) {
+ private List<IResource> computeRelated(List<? extends IResource> selection) {
//build the connected component set for all projects in the workspace
DisjointSet<IProject> set = buildConnectedComponents(ResourcesPlugin.getWorkspace().getRoot().getProjects());
//remove the connected components that the selected projects are in
@@ -198,8 +198,9 @@ public class CloseUnrelatedProjectsAction extends CloseResourceAction {
set.removeSet(resource);
}
//the remainder of the projects in the disjoint set are unrelated to the selection
- projectsToClose.clear();
- set.toList(projectsToClose);
+ List<IResource> projects = new ArrayList<>();
+ set.toList(projects);
+ return projects;
}
@Override
@@ -208,7 +209,7 @@ public class CloseUnrelatedProjectsAction extends CloseResourceAction {
List<? extends IResource> newSelection = super.getSelectedResources();
if (!oldSelection.equals(newSelection)) {
oldSelection = newSelection;
- computeRelated(newSelection);
+ projectsToClose = computeRelated(newSelection);
}
selectionDirty = false;
}

Back to the top