Bug 506190 - AsyncExecTests.testCancelOnRequeue fails on all platforms
Change-Id: I791cc25bda44a2a7ce4e57cd2f5ab80ab221366b
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/Worker.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/Worker.java
index 724ca18..3582c1b 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/Worker.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/Worker.java
@@ -62,22 +62,25 @@
@Override
public void run(IProgressMonitor monitor) {
errors.clear();
- SubMonitor pm = SubMonitor.convert(monitor, getTaskName(), 100);
+ SubMonitor progress = SubMonitor.convert(monitor, getTaskName(), 100);
try {
isWorking = true;
while (!work.isEmpty()) {
try {
- performNextTask(pm);
- checkCancelled(pm);
+ performNextTask(progress);
+ progress.checkCanceled();
+ } catch (OperationCanceledException e) {
+ // Only cancel all the work if the outer monitor is canceled.
+ progress.checkCanceled();
} catch (InterruptedException e) {
- // Only cancel all the work if the outer monitor is canceled
- checkCancelled(pm);
+ // Only cancel all the work if the outer monitor is canceled.
+ progress.checkCanceled();
} catch (InvocationTargetException e) {
handleError(e.getTargetException());
}
- pm.setWorkRemaining(100);
+ progress.setWorkRemaining(100);
}
- pm.done();
+ progress.done();
} catch (OperationCanceledException e) {
// The user chose to cancel
work.clear();
@@ -100,11 +103,6 @@
return errors.toArray(new Throwable[errors.size()]);
}
- private void checkCancelled(SubMonitor pm) {
- if (pm.isCanceled())
- throw new OperationCanceledException();
- }
-
protected String getTaskName() {
return taskName;
}