Bug 117025 Invalid "Unsupported search pattern" message while search again
This problem exist since 3.0 I guess, here's the scenario.. Test case is a simple class: class X { void foo() {} void bar() { foo(); } } Here are steps: 1) Search reference to foo() method => you get 1 match in Search view: OK 2) Rename foo (using refactoring or directly in code, it does not matter) 3) Go back to Search view and select "Search again" item => you get "Java Search" dialog: 'Unsupported search pattern: "foo"' I think user should have a better error message than this one which definitely sounds like an internal error. perhaps something like: Java element "foo" does no longer exist...
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/JavaSearchQuery.java
import org.eclipse.search.ui.ISearchQuery;
import org.eclipse.search.ui.ISearchResult;
import org.eclipse.search.ui.NewSearchUI;
import org.eclipse.search.ui.text.Match;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.search.IJavaSearchConstants;
import org.eclipse.jdt.core.search.SearchEngine;
import org.eclipse.jdt.core.search.SearchParticipant;
import org.eclipse.jdt.core.search.SearchPattern;
import org.eclipse.jdt.internal.corext.util.Messages;
import org.eclipse.jdt.internal.corext.util.SearchUtils;
import org.eclipse.jdt.ui.JavaElementLabels;
import org.eclipse.jdt.ui.search.ElementQuerySpecification;
import org.eclipse.jdt.ui.search.IMatchPresentation;
import org.eclipse.jdt.ui.search.IQueryParticipant;
import org.eclipse.jdt.ui.search.ISearchRequestor;
import org.eclipse.jdt.ui.search.PatternQuerySpecification;
import org.eclipse.jdt.ui.search.QuerySpecification;
import org.eclipse.jdt.internal.ui.JavaPlugin;
import org.eclipse.jdt.internal.ui.JavaPluginImages;
public class JavaSearchQuery implements ISearchQuery {
	private static final String PERF_SEARCH_PARTICIPANT= "org.eclipse.jdt.ui/perf/search/participants"; 
	private ISearchResult fResult;
	private QuerySpecification fPatternData;
	
	public JavaSearchQuery(QuerySpecification data) {
		fPatternData= data;
	}
	
	private static class SearchRequestor implements ISearchRequestor {