private SearchResultGroup[] getNewReferences( IProgressMonitor pm, RefactoringStatus status, WorkingCopyOwner owner, ICompilationUnit[] newWorkingCopies) throws CoreException { pm.beginTask("", 2); // $NON-NLS-1$ ICompilationUnit declaringCuWorkingCopy = RenameAnalyzeUtil.findWorkingCopyForCu(newWorkingCopies, fField.getCompilationUnit()); if (declaringCuWorkingCopy == null) return new SearchResultGroup[0]; IField field = getFieldInWorkingCopy(declaringCuWorkingCopy, getNewElementName()); if (field == null || !field.exists()) return new SearchResultGroup[0]; CollectingSearchRequestor requestor = null; if (fDelegateUpdating && RefactoringAvailabilityTester.isDelegateCreationAvailable(getField())) { // There will be two new matches inside the delegate (the invocation // and the javadoc) which are OK and must not be reported. final IField oldField = getFieldInWorkingCopy(declaringCuWorkingCopy, getCurrentElementName()); requestor = new CollectingSearchRequestor() { public void acceptSearchMatch(SearchMatch match) throws CoreException { if (!oldField.equals(match.getElement())) super.acceptSearchMatch(match); } }; } else requestor = new CollectingSearchRequestor(); SearchPattern newPattern = SearchPattern.createPattern(field, IJavaSearchConstants.REFERENCES); IJavaSearchScope scope = RefactoringScopeFactory.create(fField, true, true); return RefactoringSearchEngine.search( newPattern, owner, scope, requestor, new SubProgressMonitor(pm, 1), status); }
private void addAccessorOccurrences( IProgressMonitor pm, IMethod accessor, String editName, String newAccessorName, RefactoringStatus status) throws CoreException { Assert.isTrue(accessor.exists()); IJavaSearchScope scope = RefactoringScopeFactory.create(accessor); SearchPattern pattern = SearchPattern.createPattern( accessor, IJavaSearchConstants.ALL_OCCURRENCES, SearchUtils.GENERICS_AGNOSTIC_MATCH_RULE); SearchResultGroup[] groupedResults = RefactoringSearchEngine.search( pattern, scope, new MethodOccurenceCollector(accessor.getElementName()), pm, status); for (int i = 0; i < groupedResults.length; i++) { ICompilationUnit cu = groupedResults[i].getCompilationUnit(); if (cu == null) continue; SearchMatch[] results = groupedResults[i].getSearchResults(); for (int j = 0; j < results.length; j++) { SearchMatch searchResult = results[j]; TextEdit edit = new ReplaceEdit(searchResult.getOffset(), searchResult.getLength(), newAccessorName); addTextEdit(fChangeManager.get(cu), editName, edit); } } }
private RefactoringStatus checkAccessorDeclarations(IProgressMonitor pm, IMethod existingAccessor) throws CoreException { RefactoringStatus result = new RefactoringStatus(); SearchPattern pattern = SearchPattern.createPattern( existingAccessor, IJavaSearchConstants.DECLARATIONS, SearchUtils.GENERICS_AGNOSTIC_MATCH_RULE); IJavaSearchScope scope = SearchEngine.createHierarchyScope(fField.getDeclaringType()); SearchResultGroup[] groupDeclarations = RefactoringSearchEngine.search(pattern, scope, pm, result); Assert.isTrue(groupDeclarations.length > 0); if (groupDeclarations.length != 1) { String message = Messages.format( RefactoringCoreMessages.RenameFieldRefactoring_overridden, JavaElementUtil.createMethodSignature(existingAccessor)); result.addError(message); } else { SearchResultGroup group = groupDeclarations[0]; Assert.isTrue(group.getSearchResults().length > 0); if (group.getSearchResults().length != 1) { String message = Messages.format( RefactoringCoreMessages.RenameFieldRefactoring_overridden_or_overrides, JavaElementUtil.createMethodSignature(existingAccessor)); result.addError(message); } } return result; }
private SearchResultGroup[] getOccurrences( IProgressMonitor pm, RefactoringStatus status, ReferencesInBinaryContext binaryRefs) throws CoreException { SearchPattern pattern = createOccurrenceSearchPattern(); return RefactoringSearchEngine.search( pattern, createRefactoringScope(), new MethodOccurenceCollector(getMethod().getElementName(), binaryRefs), pm, status); }
private SearchResultGroup[] getReferences(IProgressMonitor pm, RefactoringStatus status) throws CoreException { String binaryRefsDescription = Messages.format( RefactoringCoreMessages.ReferencesInBinaryContext_ref_in_binaries_description, BasicElementLabels.getJavaElementName(getCurrentElementName())); ReferencesInBinaryContext binaryRefs = new ReferencesInBinaryContext(binaryRefsDescription); SearchResultGroup[] result = RefactoringSearchEngine.search( createSearchPattern(), createRefactoringScope(), new CuCollectingSearchRequestor(binaryRefs), pm, status); binaryRefs.addErrorIfNecessary(status); return result; }