diff options
author | Michael Rennie | 2009-06-29 20:23:01 +0000 |
---|---|---|
committer | Michael Rennie | 2009-06-29 20:23:01 +0000 |
commit | 57ab109d2d7cf1137a8d70e61b416e8f1dfe3494 (patch) | |
tree | 973b0a65abf1fd8c2c5dfef382063cae4f51a77a | |
parent | f7a9dbc42aaa6f47568fbfd9ae069c50ca19ec1e (diff) | |
download | eclipse.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.java | 20 |
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(); |