### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: search/org/eclipse/jdt/internal/core/search/JavaSearchParticipant.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/JavaSearchParticipant.java,v retrieving revision 1.16 diff -u -r1.16 JavaSearchParticipant.java --- search/org/eclipse/jdt/internal/core/search/JavaSearchParticipant.java 27 Jun 2008 16:04:09 -0000 1.16 +++ search/org/eclipse/jdt/internal/core/search/JavaSearchParticipant.java 23 Feb 2009 17:22:46 -0000 @@ -28,21 +28,22 @@ */ public class JavaSearchParticipant extends SearchParticipant { - IndexSelector indexSelector; +// IndexSelector indexSelector; + private ThreadLocal indexSelector = new ThreadLocal(); /* (non-Javadoc) * @see org.eclipse.jdt.core.search.SearchParticipant#beginSearching() */ public void beginSearching() { super.beginSearching(); - this.indexSelector = null; + this.indexSelector.set(null); } /* (non-Javadoc) * @see org.eclipse.jdt.core.search.SearchParticipant#doneSearching() */ public void doneSearching() { - this.indexSelector = null; + this.indexSelector.set(null); super.doneSearching(); } @@ -97,14 +98,14 @@ /* (non-Javadoc) * @see org.eclipse.jdt.core.search.SearchParticipant#selectIndexes(org.eclipse.jdt.core.search.SearchQuery, org.eclipse.jdt.core.search.SearchContext) */ - public IPath[] selectIndexes( - SearchPattern pattern, - IJavaSearchScope scope) { + public IPath[] selectIndexes(SearchPattern pattern, IJavaSearchScope scope) { - if (this.indexSelector == null) { - this.indexSelector = new IndexSelector(scope, pattern); + IndexSelector selector = (IndexSelector) this.indexSelector.get(); + if (selector == null) { + selector = new IndexSelector(scope, pattern); + this.indexSelector.set(selector); } - return this.indexSelector.getIndexLocations(); + return selector.getIndexLocations(); } }