/** * search the bundle that contains the Main class. The search is done in the * workspace scope (ie. if it is defined in the current workspace it will * find it * * @return the name of the bundle containing the Main class or null if not * found */ private IType getITypeMainByWorkspaceScope(String className) { SearchPattern pattern = SearchPattern.createPattern(className, IJavaSearchConstants.CLASS, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_EXACT_MATCH); IJavaSearchScope scope = SearchEngine.createWorkspaceScope(); final List<IType> binaryType = new ArrayList<IType>(); SearchRequestor requestor = new SearchRequestor() { @Override public void acceptSearchMatch(SearchMatch match) throws CoreException { binaryType.add((IType) match.getElement()); } }; SearchEngine engine = new SearchEngine(); try { engine.search(pattern, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, scope, requestor, null); } catch (CoreException e1) { throw new RuntimeException("Error while searching the bundle: " + e1.getMessage()); // return new Status(IStatus.ERROR, Activator.PLUGIN_ID, ); } return binaryType.isEmpty() ? null : binaryType.get(0); }
/** * Searches for a class that matches a pattern. */ @VisibleForTesting static boolean performSearch(SearchPattern pattern, IJavaSearchScope scope, IProgressMonitor monitor) { try { SearchEngine searchEngine = new SearchEngine(); TypeSearchRequestor requestor = new TypeSearchRequestor(); searchEngine.search(pattern, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, scope, requestor, monitor); return requestor.foundMatch(); } catch (CoreException ex) { logger.log(Level.SEVERE, ex.getMessage()); return false; } }
private void findAllDeclarations(IProgressMonitor monitor, WorkingCopyOwner owner) throws CoreException { fDeclarations = new ArrayList<>(); class MethodRequestor extends SearchRequestor { @Override public void acceptSearchMatch(SearchMatch match) throws CoreException { IMethod method = (IMethod) match.getElement(); boolean isBinary = method.isBinary(); if (!isBinary) { fDeclarations.add(method); } } } int limitTo = IJavaSearchConstants.DECLARATIONS | IJavaSearchConstants.IGNORE_DECLARING_TYPE | IJavaSearchConstants.IGNORE_RETURN_TYPE; int matchRule = SearchPattern.R_ERASURE_MATCH | SearchPattern.R_CASE_SENSITIVE; SearchPattern pattern = SearchPattern.createPattern(fMethod, limitTo, matchRule); MethodRequestor requestor = new MethodRequestor(); SearchEngine searchEngine = owner != null ? new SearchEngine(owner) : new SearchEngine(); searchEngine.search(pattern, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, createSearchScope(), requestor, monitor); }
private List<IType> searchType(String classFQN, IProgressMonitor monitor) { classFQN = classFQN.replace('$', '.'); final List<IType> types = new ArrayList<IType>(); IJavaSearchScope scope = SearchEngine.createWorkspaceScope(); SearchEngine engine = new SearchEngine(); SearchPattern pattern = SearchPattern.createPattern(classFQN, IJavaSearchConstants.TYPE, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_EXACT_MATCH); SearchRequestor requestor = new SearchRequestor() { public void acceptSearchMatch(final SearchMatch match) throws CoreException { TypeDeclarationMatch typeMatch = (TypeDeclarationMatch) match; IType type = (IType) typeMatch.getElement(); types.add(type); } }; try { engine.search(pattern, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, scope, requestor, monitor); } catch (final CoreException e) { return types; } return types; }
private static List<Controller> search(IJavaProject project, SearchPattern namePattern) throws JavaModelException, CoreException { List<Controller> controllers = new ArrayList<Controller>(); IJavaSearchScope scope = SearchEngine.createJavaSearchScope(project.getPackageFragments()); SearchRequestor requestor = new SearchRequestor() { @Override public void acceptSearchMatch(SearchMatch match) { if (match.getElement() instanceof IJavaElement) { IJavaElement element = (IJavaElement) match.getElement(); controllers.add(new Controller((IType) element)); } } }; SearchEngine searchEngine = new SearchEngine(); searchEngine.search(namePattern, new SearchParticipant[] {SearchEngine .getDefaultSearchParticipant()}, scope, requestor, null); return controllers; }
@Override public void find() { SearchEngine engine = new SearchEngine(); IJavaSearchScope workspaceScope = null; if(getProject() != null) { workspaceScope = SearchEngine.createJavaSearchScope(createSearchScope()); } else { workspaceScope = SearchEngine.createWorkspaceScope(); } SearchPattern pattern = SearchPattern.createPattern( getElement().getPrimaryElement().getElementName().replace(Constants.JAVA_EXTENSION, Constants.EMPTY_STRING), IJavaSearchConstants.TYPE, IJavaSearchConstants.REFERENCES, SearchPattern.R_EXACT_MATCH); SearchParticipant[] participant = new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }; try { engine.search(pattern, participant, workspaceScope, createSearchRequestor(), new NullProgressMonitor()); } catch (CoreException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
/** * Find all java files that match the class name * * @param cls * The class name * @return List of java files */ public static List<IJavaElement> search(String cls) { final List<IJavaElement> javaElements = new ArrayList<IJavaElement>(); IJavaSearchScope scope = SearchEngine.createWorkspaceScope(); SearchEngine engine = new SearchEngine(); SearchPattern pattern = SearchPattern.createPattern(cls.split("\\.")[0], IJavaSearchConstants.TYPE, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_EXACT_MATCH); SearchRequestor requestor = new SearchRequestor() { public void acceptSearchMatch(final SearchMatch match) throws CoreException { TypeDeclarationMatch typeMatch = (TypeDeclarationMatch) match; IJavaElement type = (IJavaElement) typeMatch.getElement(); javaElements.add(type); } }; try { engine.search(pattern, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, scope, requestor, new NullProgressMonitor()); } catch (final CoreException e) { e.printStackTrace(); } return javaElements; }
public void searchMainMethods(IProgressMonitor pm, IJavaSearchScope scope, Collection<IType> dst) throws CoreException { pm.beginTask("Searching for main methods...", 100); try { SearchPattern pattern = SearchPattern.createPattern("main(String[]) void", IJavaSearchConstants.METHOD, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_EXACT_MATCH | SearchPattern.R_CASE_SENSITIVE); //$NON-NLS-1$ SearchParticipant[] participants = new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }; IProgressMonitor searchMonitor = new SubProgressMonitor(pm, 100); ResultAggregator collector = new ResultAggregator(dst); new SearchEngine().search(pattern, participants, scope, collector, searchMonitor); } finally { pm.done(); } }
private IType[] findTypes(String patternText, IProgressMonitor progressMonitor) { IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaProject[] { javaProject }, IJavaSearchScope.SOURCES | IJavaSearchScope.REFERENCED_PROJECTS | IJavaSearchScope.SYSTEM_LIBRARIES | IJavaSearchScope.APPLICATION_LIBRARIES); SearchPattern pattern = createSearchPattern(patternText); SearchParticipant[] participants = new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }; ClassCollector collector = new ClassCollector(); try { new SearchEngine().search(pattern, participants, scope, collector, progressMonitor); } catch (CoreException e) { logError(e); return new IType[0]; } IType[] foundTypes = collector.getTypes().toArray(new IType[collector.getTypes().size()]); return foundTypes; }
protected void search(String patternString, int searchFor, int limitTo, int matchRule, IJavaSearchScope scope, SearchRequestor requestor) throws CoreException { if (patternString.indexOf('*') != -1 || patternString.indexOf('?') != -1) matchRule |= SearchPattern.R_PATTERN_MATCH; SearchPattern pattern = SearchPattern.createPattern( patternString, searchFor, limitTo, matchRule); assertNotNull("Pattern should not be null", pattern); new SearchEngine().search( pattern, new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant()}, scope, requestor, null); }
/** * Get java project from type. * * @param fullyQualifiedTypeName * fully qualified name of type * @return java project * @throws CoreException * CoreException */ private static List<IJavaProject> getJavaProjectFromType(String fullyQualifiedTypeName) throws CoreException { String[] splitItems = fullyQualifiedTypeName.split("/"); // If the main class name contains the module name, should trim the module info. if (splitItems.length == 2) { fullyQualifiedTypeName = splitItems[1]; } final String moduleName = splitItems.length == 2 ? splitItems[0] : null; SearchPattern pattern = SearchPattern.createPattern( fullyQualifiedTypeName, IJavaSearchConstants.TYPE, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_EXACT_MATCH); IJavaSearchScope scope = SearchEngine.createWorkspaceScope(); ArrayList<IJavaProject> projects = new ArrayList<>(); SearchRequestor requestor = new SearchRequestor() { @Override public void acceptSearchMatch(SearchMatch match) { Object element = match.getElement(); if (element instanceof IJavaElement) { IJavaProject project = ((IJavaElement) element).getJavaProject(); if (moduleName == null || moduleName.equals(JdtUtils.getModuleName(project))) { projects.add(project); } } } }; SearchEngine searchEngine = new SearchEngine(); searchEngine.search(pattern, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, scope, requestor, null /* progress monitor */); return projects.stream().distinct().collect(Collectors.toList()); }
public void renameOccurrences(WorkspaceEdit edit, String newName, IProgressMonitor monitor) throws CoreException { if (fElement == null || !canRename()) { return; } IJavaElement[] elementsToSearch = null; if (fElement instanceof IMethod) { elementsToSearch = RippleMethodFinder.getRelatedMethods((IMethod) fElement, monitor, null); } else { elementsToSearch = new IJavaElement[] { fElement }; } SearchPattern pattern = createOccurrenceSearchPattern(elementsToSearch); if (pattern == null) { return; } SearchEngine engine = new SearchEngine(); engine.search(pattern, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, createSearchScope(), new SearchRequestor() { @Override public void acceptSearchMatch(SearchMatch match) throws CoreException { Object o = match.getElement(); if (o instanceof IJavaElement) { IJavaElement element = (IJavaElement) o; ICompilationUnit compilationUnit = (ICompilationUnit) element.getAncestor(IJavaElement.COMPILATION_UNIT); if (compilationUnit == null) { return; } TextEdit replaceEdit = collectMatch(match, element, compilationUnit, newName); if (replaceEdit != null) { convert(edit, compilationUnit, replaceEdit); } } } }, monitor); }
private Set<SearchMatch> findReferences(Set<? extends IJavaElement> elements) throws CoreException { Set<SearchMatch> ret = new HashSet<>(); for (IJavaElement elem : elements) new SearchEngine().search( SearchPattern.createPattern(elem, IJavaSearchConstants.REFERENCES, SearchPattern.R_EXACT_MATCH), new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, SearchEngine.createWorkspaceScope(), new SearchRequestor() { @Override public void acceptSearchMatch(SearchMatch match) throws CoreException { ret.add(match); } }, new NullProgressMonitor()); return ret; }
void commenceSearch(SearchEngine engine, SearchPattern pattern, IJavaSearchScope scope, final SearchMatchPurpose purpose, IProgressMonitor monitor) throws CoreException { engine.search(pattern, new SearchParticipant[] { SearchEngine .getDefaultSearchParticipant() }, scope, new SearchRequestor() { public void acceptSearchMatch(SearchMatch match) throws CoreException { if (match.getAccuracy() == SearchMatch.A_ACCURATE && !match.isInsideDocComment()) matchToPurposeMap.put(match, purpose); } }, new SubProgressMonitor(monitor, 1, SubProgressMonitor.SUPPRESS_SUBTASK_LABEL)); }
private void findParameters(final int paramNumber, SearchPattern pattern) throws CoreException { final SearchRequestor requestor = new SearchRequestor() { public void acceptSearchMatch(SearchMatch match) throws CoreException { if (match.getAccuracy() == SearchMatch.A_ACCURATE && !match.isInsideDocComment()) { IJavaElement elem = (IJavaElement) match.getElement(); ASTNode node = Util.getASTNode(elem, ASTNodeProcessor.this.monitor); ParameterProcessingVisitor visitor = new ParameterProcessingVisitor( paramNumber, match.getOffset()); node.accept(visitor); ASTNodeProcessor.this.found.addAll(visitor.getElements()); for (Iterator it = visitor.getExpressions().iterator(); it .hasNext();) { Expression exp = (Expression) it.next(); ASTNodeProcessor.this.processExpression(exp); } } } }; final SearchEngine searchEngine = new SearchEngine(); searchEngine.search(pattern, new SearchParticipant[] { SearchEngine .getDefaultSearchParticipant() }, this.scope, requestor, null); }
private void findAllDeclarations(IProgressMonitor monitor, WorkingCopyOwner owner) throws CoreException { fDeclarations = new ArrayList<IMethod>(); class MethodRequestor extends SearchRequestor { @Override public void acceptSearchMatch(SearchMatch match) throws CoreException { IMethod method = (IMethod) match.getElement(); boolean isBinary = method.isBinary(); if (fBinaryRefs != null || !(fExcludeBinaries && isBinary)) { fDeclarations.add(method); } if (isBinary && fBinaryRefs != null) { fDeclarationToMatch.put(method, match); } } } int limitTo = IJavaSearchConstants.DECLARATIONS | IJavaSearchConstants.IGNORE_DECLARING_TYPE | IJavaSearchConstants.IGNORE_RETURN_TYPE; int matchRule = SearchPattern.R_ERASURE_MATCH | SearchPattern.R_CASE_SENSITIVE; SearchPattern pattern = SearchPattern.createPattern(fMethod, limitTo, matchRule); SearchParticipant[] participants = SearchUtils.getDefaultSearchParticipants(); IJavaSearchScope scope = RefactoringScopeFactory.createRelatedProjectsScope( fMethod.getJavaProject(), IJavaSearchScope.SOURCES | IJavaSearchScope.APPLICATION_LIBRARIES | IJavaSearchScope.SYSTEM_LIBRARIES); MethodRequestor requestor = new MethodRequestor(); SearchEngine searchEngine = owner != null ? new SearchEngine(owner) : new SearchEngine(); searchEngine.search(pattern, participants, scope, requestor, monitor); }
/** * Trigger addition of a resource to an index Note: the actual operation is performed in * background */ public void addBinary(IFile resource, IPath containerPath) { // if (JavaCore.getPlugin() == null) return; SearchParticipant participant = SearchEngine.getDefaultSearchParticipant(); SearchDocument document = participant.getDocument(resource.getFullPath().toString()); IndexLocation indexLocation = computeIndexLocation(containerPath); scheduleDocumentIndexing(document, containerPath, indexLocation, participant); }
/** * Trigger addition of a resource to an index Note: the actual operation is performed in * background */ public void addSource(IFile resource, IPath containerPath, SourceElementParser parser) { // if (JavaCore.getPlugin() == null) return; SearchParticipant participant = SearchEngine.getDefaultSearchParticipant(); SearchDocument document = participant.getDocument(resource.getFullPath().toString()); document.setParser(parser); IndexLocation indexLocation = computeIndexLocation(containerPath); scheduleDocumentIndexing(document, containerPath, indexLocation, participant); }
public void indexDocument( SearchDocument searchDocument, SearchParticipant searchParticipant, Index index, IPath indexLocation) { try { searchDocument.setIndex(index); searchParticipant.indexDocument(searchDocument, indexLocation); } finally { searchDocument.setIndex(null); } }
public void scheduleDocumentIndexing( final SearchDocument searchDocument, IPath container, final IndexLocation indexLocation, final SearchParticipant searchParticipant) { request( new IndexRequest(container, this) { public boolean execute(IProgressMonitor progressMonitor) { if (this.isCancelled || progressMonitor != null && progressMonitor.isCanceled()) return true; /* ensure no concurrent write access to index */ Index index = getIndex( this.containerPath, indexLocation, true, /*reuse index file*/ true /*create if none*/); if (index == null) return true; ReadWriteMonitor monitor = index.monitor; if (monitor == null) return true; // index got deleted since acquired try { monitor.enterWrite(); // ask permission to write indexDocument( searchDocument, searchParticipant, index, new Path(indexLocation.getCanonicalFilePath())); } finally { monitor.exitWrite(); // free write lock } return true; } public String toString() { return "indexing " + searchDocument.getPath(); // $NON-NLS-1$ } }); }
public JavaSearchDocument( java.util.zip.ZipEntry zipEntry, IPath zipFilePath, byte[] contents, SearchParticipant participant) { super( zipFilePath + IJavaSearchScope.JAR_FILE_ENTRY_SEPARATOR + zipEntry.getName(), participant); this.byteContents = contents; }
@Override public void enterParticipant(SearchParticipant participant) { try { semapfore.acquire(); } catch (InterruptedException e) { DataHierarchyPlugin.logError("FieldReferencesRequestor: waiting on semapfore interrupted", e); } }
private <V extends IJavaElement> List<V> search(AbstractReferencesRequestor<V> requestor, IProgressMonitor monitor) throws CoreException { SearchEngine searchEngine = new SearchEngine(); try { searchEngine.search(pattern, new SearchParticipant[] { SearchEngine .getDefaultSearchParticipant() }, scope, requestor, monitor); } catch (OperationCanceledException e) { requestor.endReporting(); } return requestor.getResults(); }
private List<String> getExistingCategories() { if(existingCategories==null) { final Set<String> categories = new TreeSet<String>(); if(selectedJavaProject!=null) { SearchRequestor requestor = new SearchRequestor() { @Override public void acceptSearchMatch(SearchMatch match) throws CoreException { if(match.getElement() instanceof IType) { String fqn = ((IType) match.getElement()).getFullyQualifiedName(); if(!fqn.startsWith("net.sf.jasperreports.functions.standard")) { // avoid to propose standard functions categories categories.add(fqn); } } } }; IJavaElement[] elements= new IJavaElement[] { selectedJavaProject }; IJavaSearchScope scope= SearchEngine.createJavaSearchScope(elements); int matchRule= SearchPattern.R_EXACT_MATCH | SearchPattern.R_CASE_SENSITIVE; SearchPattern fullAnnotationPattern= SearchPattern.createPattern( "net.sf.jasperreports.functions.annotations.FunctionCategory", IJavaSearchConstants.ANNOTATION_TYPE, IJavaSearchConstants.ANNOTATION_TYPE_REFERENCE, matchRule); SearchPattern simpleNamePattern= SearchPattern.createPattern( "FunctionCategory", IJavaSearchConstants.ANNOTATION_TYPE, IJavaSearchConstants.ANNOTATION_TYPE_REFERENCE, matchRule); SearchPattern annotationsPattern= SearchPattern.createOrPattern(fullAnnotationPattern, simpleNamePattern); SearchParticipant[] searchParticipants= new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }; try { new SearchEngine().search(annotationsPattern, searchParticipants, scope, requestor,new NullProgressMonitor()); } catch (CoreException e) { } } existingCategories = new ArrayList<String>(categories); ((NewFunctionsLibraryWizard)getWizard()).setAvailableCategories(existingCategories); } return existingCategories; }
private void findAllDeclarations(IProgressMonitor monitor, WorkingCopyOwner owner) throws CoreException { fDeclarations= new ArrayList<IMethod>(); class MethodRequestor extends SearchRequestor { @Override public void acceptSearchMatch(SearchMatch match) throws CoreException { IMethod method= (IMethod) match.getElement(); boolean isBinary= method.isBinary(); if (fBinaryRefs != null || ! (fExcludeBinaries && isBinary)) { fDeclarations.add(method); } if (isBinary && fBinaryRefs != null) { fDeclarationToMatch.put(method, match); } } } int limitTo = IJavaSearchConstants.DECLARATIONS | IJavaSearchConstants.IGNORE_DECLARING_TYPE | IJavaSearchConstants.IGNORE_RETURN_TYPE; int matchRule= SearchPattern.R_ERASURE_MATCH | SearchPattern.R_CASE_SENSITIVE; SearchPattern pattern= SearchPattern.createPattern(fMethod, limitTo, matchRule); SearchParticipant[] participants= SearchUtils.getDefaultSearchParticipants(); IJavaSearchScope scope= RefactoringScopeFactory.createRelatedProjectsScope(fMethod.getJavaProject(), IJavaSearchScope.SOURCES | IJavaSearchScope.APPLICATION_LIBRARIES | IJavaSearchScope.SYSTEM_LIBRARIES); MethodRequestor requestor= new MethodRequestor(); SearchEngine searchEngine= owner != null ? new SearchEngine(owner) : new SearchEngine(); searchEngine.search(pattern, participants, scope, requestor, monitor); }
public void generateIndexForJar(String pathToJar, String pathToIndexFile) throws IOException { File f = new File(pathToJar); if (!f.exists()) { throw new FileNotFoundException(pathToJar + " not found"); //$NON-NLS-1$ } IndexLocation indexLocation = new FileIndexLocation(new File(pathToIndexFile)); Index index = new Index(indexLocation, pathToJar, false /*reuse index file*/); SearchParticipant participant = SearchEngine.getDefaultSearchParticipant(); index.separator = JAR_SEPARATOR; ZipFile zip = new ZipFile(pathToJar); try { for (Enumeration e = zip.entries(); e.hasMoreElements();) { // iterate each entry to index it ZipEntry ze = (ZipEntry) e.nextElement(); String zipEntryName = ze.getName(); if (Util.isClassFileName(zipEntryName)) { final byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getZipEntryByteContent(ze, zip); JavaSearchDocument entryDocument = new JavaSearchDocument(ze, new Path(pathToJar), classFileBytes, participant); entryDocument.setIndex(index); new BinaryIndexer(entryDocument).indexDocument(); } } index.save(); } finally { zip.close(); } return; }
public void findIndexMatches(Index index, IndexQueryRequestor requestor, SearchParticipant participant, IJavaSearchScope scope, IProgressMonitor progressMonitor) { IPackageFragmentRoot root = (IPackageFragmentRoot) this.typeParameter.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); String documentPath; String relativePath; if (root.isArchive()) { IType type = (IType) this.typeParameter.getAncestor(IJavaElement.TYPE); relativePath = (type.getFullyQualifiedName('$')).replace('.', '/') + SuffixConstants.SUFFIX_STRING_class; documentPath = root.getPath() + IJavaSearchScope.JAR_FILE_ENTRY_SEPARATOR + relativePath; } else { IPath path = this.typeParameter.getPath(); documentPath = path.toString(); relativePath = Util.relativePath(path, 1/*remove project segment*/); } if (scope instanceof JavaSearchScope) { JavaSearchScope javaSearchScope = (JavaSearchScope) scope; // Get document path access restriction from java search scope // Note that requestor has to verify if needed whether the document violates the access restriction or not AccessRuleSet access = javaSearchScope.getAccessRuleSet(relativePath, index.containerPath); if (access != JavaSearchScope.NOT_ENCLOSED) { // scope encloses the path if (!requestor.acceptIndexMatch(documentPath, this, participant, access)) throw new OperationCanceledException(); } } else if (scope.encloses(documentPath)) { if (!requestor.acceptIndexMatch(documentPath, this, participant, null)) throw new OperationCanceledException(); } }
@Override public void find() { SearchEngine engine = new SearchEngine(); IJavaSearchScope workspaceScope = null; if(getProject() != null) { workspaceScope = SearchEngine.createJavaSearchScope(createSearchScope()); } else { workspaceScope = SearchEngine.createWorkspaceScope(); } int constructor = IJavaSearchConstants.METHOD; if(isConstructor()) { constructor = IJavaSearchConstants.CONSTRUCTOR; } if(null != getName() && !getName().isEmpty()) { SearchPattern pattern = SearchPattern.createPattern( getName(), constructor, IJavaSearchConstants.REFERENCES, SearchPattern.R_EXACT_MATCH); SearchParticipant[] participant = new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }; try { engine.search(pattern, participant, workspaceScope, createSearchRequestor(), new NullProgressMonitor()); } catch (CoreException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
private void searchPackage(String matchString, IJavaSearchScope scope, SearchRequestor requestor) throws CoreException { SearchPattern pattern = SearchPattern.createPattern(matchString + "*", IJavaSearchConstants.PACKAGE, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_PREFIX_MATCH); SearchEngine searchEngine = new SearchEngine(); searchEngine.search(pattern, new SearchParticipant[]{ SearchEngine.getDefaultSearchParticipant() }, scope, requestor, null); }
private List<IMember> findElementReferences(IMember iMember, IProgressMonitor pm) { final List<IMember> references = new ArrayList<IMember>(); SearchRequestor requestor = new SearchRequestor() { @Override public void acceptSearchMatch(SearchMatch match) throws CoreException { if (match.getAccuracy() == SearchMatch.A_ACCURATE) references.add((IMember) match.getElement()); } }; SearchEngine engine = new SearchEngine(); IJavaSearchScope workspaceScope = SearchEngine.createWorkspaceScope(); SearchPattern pattern = SearchPattern.createPattern(iMember, IJavaSearchConstants.ALL_OCCURRENCES, SearchPattern.R_EXACT_MATCH); SearchParticipant[] participant = new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }; try { engine.search(pattern, participant, workspaceScope, requestor, pm); } catch (CoreException e) { e.printStackTrace(); } return references; }
private static List<SearchMatch> searchJava(IProject project, SearchPattern pattern) { IJavaSearchScope scope = SearchEngine.createJavaSearchScope( new IJavaElement[] { JavaCore.create(project) }, true); final List<SearchMatch> matches = new ArrayList<SearchMatch>(); SearchRequestor requestor = new SearchRequestor() { @Override public void acceptSearchMatch(SearchMatch match) throws CoreException { matches.add(match); } }; SearchEngine searchEngine = new SearchEngine(); try { searchEngine.search(pattern, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, scope, requestor, null); } catch (CoreException e) { Activator.getDefault().logWarning("Error performing search", e);; } return matches; }
/*** * Search for method references * Source: http://stackoverflow.com/questions/11321363/alternative-or-improvement-to-eclipse-jdt-searchengine * @param elem */ public void searchFor(IJavaElement elem, IJavaSearchScope scope){ SearchPattern pattern = SearchPattern.createPattern(elem, IJavaSearchConstants.REFERENCES); SearchEngine searchEngine = new SearchEngine(); try{ // This is where the actual search is initialised searchEngine.search(pattern, new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant()}, scope, requestor, null); }catch(CoreException e){ e.printStackTrace(); } }
protected void search(IJavaElement element, int limitTo, int matchRule, IJavaSearchScope scope, SearchRequestor requestor) throws CoreException { SearchPattern pattern = SearchPattern.createPattern(element, limitTo, matchRule); assertNotNull("Pattern should not be null", pattern); new SearchEngine().search( pattern, new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant()}, scope, requestor, null ); }
public static IJavaElement[] findElementsAtSelection(ITypeRoot unit, int line, int column) throws JavaModelException, BadLocationException { if (unit == null) { return null; } int offset = toDocument(unit.getBuffer()).getLineOffset(line) + column; if (offset > -1) { return unit.codeSelect(offset, 0); } if (unit instanceof IClassFile) { IClassFile classFile = (IClassFile) unit; String contents = disassemble(classFile); if (contents != null) { IDocument document = new Document(contents); try { offset = document.getLineOffset(line) + column; if (offset > -1) { String name = parse(contents, offset); if (name == null) { return null; } SearchPattern pattern = SearchPattern.createPattern(name, IJavaSearchConstants.TYPE, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_FULL_MATCH); IJavaSearchScope scope = createSearchScope(unit.getJavaProject()); List<IJavaElement> elements = new ArrayList<>(); SearchRequestor requestor = new SearchRequestor() { @Override public void acceptSearchMatch(SearchMatch match) { if (match.getElement() instanceof IJavaElement) { elements.add((IJavaElement) match.getElement()); } } }; SearchEngine searchEngine = new SearchEngine(); searchEngine.search(pattern, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, scope, requestor, null); return elements.toArray(new IJavaElement[0]); } } catch (BadLocationException | CoreException e) { // JavaLanguageServerPlugin.logException(e.getMessage(), e); } } } return null; }
public static IJavaElement[] findElementsAtSelection(ITypeRoot unit, int line, int column, PreferenceManager preferenceManager, IProgressMonitor monitor) throws JavaModelException { if (unit == null) { return null; } int offset = JsonRpcHelpers.toOffset(unit.getBuffer(), line, column); if (offset > -1) { return unit.codeSelect(offset, 0); } if (unit instanceof IClassFile) { IClassFile classFile = (IClassFile) unit; ContentProviderManager contentProvider = JavaLanguageServerPlugin.getContentProviderManager(); String contents = contentProvider.getSource(classFile, monitor); if (contents != null) { IDocument document = new Document(contents); try { offset = document.getLineOffset(line) + column; if (offset > -1) { String name = parse(contents, offset); if (name == null) { return null; } SearchPattern pattern = SearchPattern.createPattern(name, IJavaSearchConstants.TYPE, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_FULL_MATCH); IJavaSearchScope scope = createSearchScope(unit.getJavaProject()); List<IJavaElement> elements = new ArrayList<>(); SearchRequestor requestor = new SearchRequestor() { @Override public void acceptSearchMatch(SearchMatch match) { if (match.getElement() instanceof IJavaElement) { elements.add((IJavaElement) match.getElement()); } } }; SearchEngine searchEngine = new SearchEngine(); searchEngine.search(pattern, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, scope, requestor, null); return elements.toArray(new IJavaElement[0]); } } catch (BadLocationException | CoreException e) { JavaLanguageServerPlugin.logException(e.getMessage(), e); } } } return null; }
public List<Location> findReferences(ReferenceParams param, IProgressMonitor monitor) { final List<Location> locations = new ArrayList<>(); try { IJavaElement elementToSearch = JDTUtils.findElementAtSelection(JDTUtils.resolveTypeRoot(param.getTextDocument().getUri()), param.getPosition().getLine(), param.getPosition().getCharacter(), this.preferenceManager, monitor); if(elementToSearch == null) { return locations; } SearchEngine engine = new SearchEngine(); SearchPattern pattern = SearchPattern.createPattern(elementToSearch, IJavaSearchConstants.REFERENCES); engine.search(pattern, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, createSearchScope(), new SearchRequestor() { @Override public void acceptSearchMatch(SearchMatch match) throws CoreException { Object o = match.getElement(); if (o instanceof IJavaElement) { IJavaElement element = (IJavaElement) o; ICompilationUnit compilationUnit = (ICompilationUnit) element .getAncestor(IJavaElement.COMPILATION_UNIT); Location location = null; if (compilationUnit != null) { location = JDTUtils.toLocation(compilationUnit, match.getOffset(), match.getLength()); } else{ IClassFile cf = (IClassFile) element.getAncestor(IJavaElement.CLASS_FILE); if (cf != null && cf.getSourceRange() != null) { location = JDTUtils.toLocation(cf, match.getOffset(), match.getLength()); } } if (location != null ) { locations.add(location); } } } }, monitor); } catch (CoreException e) { JavaLanguageServerPlugin.logException("Find references failure ", e); } return locations; }