Startup_R32x - bug 179699
diff --git a/org.eclipse.jdt.core/buildnotes_jdt-core.html b/org.eclipse.jdt.core/buildnotes_jdt-core.html
index 9df369b..1c52890 100644
--- a/org.eclipse.jdt.core/buildnotes_jdt-core.html
+++ b/org.eclipse.jdt.core/buildnotes_jdt-core.html
@@ -45,7 +45,9 @@
<br>Project org.eclipse.jdt.core v_688_Startup_R32x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_688_Startup_R32x">cvs</a>).
<h2>What's new in this drop</h2>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=171653">171653</a>
+<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=179699">179699</a>
+type.newTypeHierarchy doesn't cancel
+<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=171653">171653</a>
[index] Java Tooling initialization performance issue after startup
<h3>Problem Reports Fixed</h3>
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder.java
index 4550707..0009fc2 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder.java
@@ -16,6 +16,7 @@
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.SubProgressMonitor;
import org.eclipse.jdt.core.*;
import org.eclipse.jdt.core.compiler.CharOperation;
@@ -423,7 +424,7 @@
final Map binariesFromIndexMatches,
final IPathRequestor pathRequestor,
int waitingPolicy, // WaitUntilReadyToSearch | ForceImmediateSearch | CancelIfNotReadyToSearch
- IProgressMonitor progressMonitor) {
+ final IProgressMonitor progressMonitor) {
/* embed constructs inside arrays so as to pass them to (inner) collector */
final Queue queue = new Queue();
@@ -498,7 +499,16 @@
// search all index references to a given supertype
pattern.superSimpleName = currentTypeName;
- indexManager.performConcurrentJob(job, waitingPolicy, null); // no sub progress monitor since its too costly for deep hierarchies
+ indexManager.performConcurrentJob(job, waitingPolicy, progressMonitor == null ? null : new NullProgressMonitor() {
+ // don't report progress since this is too costly for deep hierarchies
+ // just handle isCanceled() (seehttps://bugs.eclipse.org/bugs/show_bug.cgi?id=179511)
+ public void setCanceled(boolean value) {
+ progressMonitor.setCanceled(value);
+ }
+ public boolean isCanceled() {
+ return progressMonitor.isCanceled();
+ }
+ });
if (progressMonitor != null && ++ticks <= MAXTICKS)
progressMonitor.worked(1);