Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Rennie2009-06-29 20:23:01 +0000
committerMichael Rennie2009-06-29 20:23:01 +0000
commit57ab109d2d7cf1137a8d70e61b416e8f1dfe3494 (patch)
tree973b0a65abf1fd8c2c5dfef382063cae4f51a77a
parentf7a9dbc42aaa6f47568fbfd9ae069c50ca19ec1e (diff)
downloadeclipse.pde.ui-57ab109d2d7cf1137a8d70e61b416e8f1dfe3494.tar.gz
eclipse.pde.ui-57ab109d2d7cf1137a8d70e61b416e8f1dfe3494.tar.xz
eclipse.pde.ui-57ab109d2d7cf1137a8d70e61b416e8f1dfe3494.zip
Bug 280286 Search engine should report results after a threshold has been hit
-rw-r--r--apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/search/ApiSearchEngine.java20
1 files changed, 17 insertions, 3 deletions
diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/search/ApiSearchEngine.java b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/search/ApiSearchEngine.java
index ad34c1c458..55fc40ae55 100644
--- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/search/ApiSearchEngine.java
+++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/search/ApiSearchEngine.java
@@ -55,6 +55,7 @@ public final class ApiSearchEngine {
* Visitor used to extract references from the component is is passed to
*/
class ReferenceExtractor extends ApiTypeContainerVisitor {
+ static final int COLLECTOR_MAX = 2500;
private List collector = null;
private IApiSearchRequestor requestor = null;
private IApiSearchReporter reporter = null;
@@ -88,13 +89,21 @@ public final class ApiSearchEngine {
type,
getResolvedReferences(requestor, type, monitor.newChild(1)),
monitor.newChild(1)));
-
}
catch(CoreException ce) {
ApiPlugin.log(ce);
}
}
+ /* (non-Javadoc)
+ * @see org.eclipse.pde.api.tools.internal.provisional.model.ApiTypeContainerVisitor#end(java.lang.String, org.eclipse.pde.api.tools.internal.provisional.model.IApiTypeRoot)
+ */
+ public void end(String packageName, IApiTypeRoot typeroot) {
+ if(this.collector.size() >= COLLECTOR_MAX) {
+ reportResults();
+ }
+ }
+
/**
* @see org.eclipse.pde.api.tools.internal.provisional.model.ApiTypeContainerVisitor#visit(org.eclipse.pde.api.tools.internal.provisional.model.IApiComponent)
*/
@@ -106,6 +115,10 @@ public final class ApiSearchEngine {
* @see org.eclipse.pde.api.tools.internal.provisional.model.ApiTypeContainerVisitor#endVisitPackage(java.lang.String)
*/
public void endVisitPackage(String packageName) {
+ reportResults();
+ }
+
+ private void reportResults() {
reporter.reportResults(this.element, (IReference[]) collector.toArray(new IReference[collector.size()]));
collector.clear();
}
@@ -214,7 +227,8 @@ public final class ApiSearchEngine {
ReferenceExtractor visitor = new ReferenceExtractor(requestor, reporter, element, localmonitor.newChild(1));
IApiComponent comp = (IApiComponent) element;
comp.accept(visitor);
- localmonitor.worked(1);
+ comp.close();
+ Util.updateMonitor(localmonitor, 1);
break;
}
case IApiElement.FIELD:
@@ -236,7 +250,7 @@ public final class ApiSearchEngine {
break;
}
}
- localmonitor.worked(1);
+ Util.updateMonitor(localmonitor, 1);
}
finally {
localmonitor.done();

Back to the top