Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorspingel2010-10-09 22:45:31 +0000
committerspingel2010-10-09 22:45:31 +0000
commit81c3909fcbfdc0947861b93a2ed13e0c8bf4c7bd (patch)
tree3aad864c1cec506d934da7b0f980be97a255d5b1 /org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets
parent85425ba259b65ffc7e16fdefacba2d3a138df870 (diff)
downloadorg.eclipse.mylyn.tasks-81c3909fcbfdc0947861b93a2ed13e0c8bf4c7bd.tar.gz
org.eclipse.mylyn.tasks-81c3909fcbfdc0947861b93a2ed13e0c8bf4c7bd.tar.xz
org.eclipse.mylyn.tasks-81c3909fcbfdc0947861b93a2ed13e0c8bf4c7bd.zip
NEW - bug 327262: Mylyn Task working sets cause loss of working set data on eclipse crash
https://bugs.eclipse.org/bugs/show_bug.cgi?id=327262
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets')
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetUpdater.java25
1 files changed, 20 insertions, 5 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetUpdater.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetUpdater.java
index 98cc5b7c3..94807b653 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetUpdater.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetUpdater.java
@@ -8,6 +8,7 @@
* Contributors:
* Eugene Kuleshov - initial API and implementation
* Tasktop Technologies - initial API and implementation
+ * Yatta Solutions - fix for bug 327262
*******************************************************************************/
package org.eclipse.mylyn.internal.tasks.ui.workingsets;
@@ -17,6 +18,7 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList;
@@ -47,6 +49,7 @@ import org.eclipse.ui.PlatformUI;
* @author Eugene Kuleshov
* @author Mik Kersten
* @author Steffen Pingel
+ * @author Carsten Reckord
*/
public class TaskWorkingSetUpdater implements IWorkingSetUpdater, ITaskListChangeListener, IResourceChangeListener {
@@ -109,25 +112,37 @@ public class TaskWorkingSetUpdater implements IWorkingSetUpdater, ITaskListChang
}
private void checkElementExistence(IWorkingSet workingSet) {
- ArrayList<IAdaptable> list = new ArrayList<IAdaptable>();
- for (IAdaptable adaptable : workingSet.getElements()) {
+ ArrayList<IAdaptable> list = new ArrayList<IAdaptable>(Arrays.asList(workingSet.getElements()));
+ boolean changed = false;
+ for (Iterator<IAdaptable> iter = list.iterator(); iter.hasNext();) {
+ IAdaptable adaptable = iter.next();
+ boolean remove = false;
if (adaptable instanceof AbstractTaskContainer) {
String handle = ((AbstractTaskContainer) adaptable).getHandleIdentifier();
+ remove = true;
for (IRepositoryElement element : TasksUiPlugin.getTaskList().getRootElements()) {
if (element != null && element.getHandleIdentifier().equals(handle)) {
list.add(adaptable);
+ remove = false;
+ break;
}
}
} else if (adaptable instanceof IProject) {
IProject project = ResourcesPlugin.getWorkspace()
.getRoot()
.getProject(((IProject) adaptable).getName());
- if (project != null && project.exists()) {
- list.add(project);
+ if (project == null || !project.exists()) {
+ remove = true;
}
}
+ if (remove) {
+ iter.remove();
+ changed = true;
+ }
+ }
+ if (changed) {
+ workingSet.setElements(list.toArray(new IAdaptable[list.size()]));
}
- workingSet.setElements(list.toArray(new IAdaptable[list.size()]));
}
public boolean contains(IWorkingSet workingSet) {

Back to the top