Search in sources :

Example 6 with IMethod

use of org.eclipse.jdt.core.IMethod in project che by eclipse.

the class RenameMethodProcessor method checkRelatedMethods.

private RefactoringStatus checkRelatedMethods() throws CoreException {
    RefactoringStatus result = new RefactoringStatus();
    for (Iterator<IMethod> iter = fMethodsToRename.iterator(); iter.hasNext(); ) {
        IMethod method = iter.next();
        result.merge(Checks.checkIfConstructorName(method, getNewElementName(), method.getDeclaringType().getElementName()));
        String[] msgData = new String[] { BasicElementLabels.getJavaElementName(method.getElementName()), BasicElementLabels.getJavaElementName(method.getDeclaringType().getFullyQualifiedName('.')) };
        if (!method.exists()) {
            result.addFatalError(Messages.format(RefactoringCoreMessages.RenameMethodRefactoring_not_in_model, msgData));
            continue;
        }
        if (method.isBinary())
            result.addFatalError(Messages.format(RefactoringCoreMessages.RenameMethodRefactoring_no_binary, msgData));
        if (method.isReadOnly())
            result.addFatalError(Messages.format(RefactoringCoreMessages.RenameMethodRefactoring_no_read_only, msgData));
        if (JdtFlags.isNative(method))
            result.addError(Messages.format(RefactoringCoreMessages.RenameMethodRefactoring_no_native_1, msgData));
    }
    return result;
}
Also used : RefactoringStatus(org.eclipse.ltk.core.refactoring.RefactoringStatus) IMethod(org.eclipse.jdt.core.IMethod)

Example 7 with IMethod

use of org.eclipse.jdt.core.IMethod in project che by eclipse.

the class RenameMethodProcessor method classesDeclareMethodName.

//-------
private static IMethod[] classesDeclareMethodName(ITypeHierarchy hier, List<IType> classes, IMethod method, String newName) throws CoreException {
    Set<IMethod> result = new HashSet<IMethod>();
    IType type = method.getDeclaringType();
    List<IType> subtypes = Arrays.asList(hier.getAllSubtypes(type));
    int parameterCount = method.getParameterTypes().length;
    boolean isMethodPrivate = JdtFlags.isPrivate(method);
    for (Iterator<IType> iter = classes.iterator(); iter.hasNext(); ) {
        IType clazz = iter.next();
        IMethod[] methods = clazz.getMethods();
        boolean isSubclass = subtypes.contains(clazz);
        for (int j = 0; j < methods.length; j++) {
            IMethod foundMethod = Checks.findMethod(newName, parameterCount, false, new IMethod[] { methods[j] });
            if (foundMethod == null)
                continue;
            if (isSubclass || type.equals(clazz))
                result.add(foundMethod);
            else if ((!isMethodPrivate) && (!JdtFlags.isPrivate(methods[j])))
                result.add(foundMethod);
        }
    }
    return result.toArray(new IMethod[result.size()]);
}
Also used : IMethod(org.eclipse.jdt.core.IMethod) HashSet(java.util.HashSet) IType(org.eclipse.jdt.core.IType)

Example 8 with IMethod

use of org.eclipse.jdt.core.IMethod in project che by eclipse.

the class RenameMethodProcessor method getDeclarationCUs.

private ICompilationUnit[] getDeclarationCUs() {
    Set<ICompilationUnit> cus = new HashSet<ICompilationUnit>();
    for (Iterator<IMethod> iter = fMethodsToRename.iterator(); iter.hasNext(); ) {
        IMethod method = iter.next();
        cus.add(method.getCompilationUnit());
    }
    return cus.toArray(new ICompilationUnit[cus.size()]);
}
Also used : ICompilationUnit(org.eclipse.jdt.core.ICompilationUnit) IMethod(org.eclipse.jdt.core.IMethod) HashSet(java.util.HashSet)

Example 9 with IMethod

use of org.eclipse.jdt.core.IMethod in project che by eclipse.

the class RenameMethodProcessor method searchForDeclarationsOfClashingMethods.

private IMethod[] searchForDeclarationsOfClashingMethods(IProgressMonitor pm) throws CoreException {
    final List<IMethod> results = new ArrayList<IMethod>();
    SearchPattern pattern = createNewMethodPattern();
    IJavaSearchScope scope = RefactoringScopeFactory.create(getMethod().getJavaProject());
    SearchRequestor requestor = new SearchRequestor() {

        @Override
        public void acceptSearchMatch(SearchMatch match) throws CoreException {
            Object method = match.getElement();
            if (// check for bug 90138: [refactoring] [rename] Renaming method throws internal exception
            method instanceof IMethod)
                results.add((IMethod) method);
            else
                //$NON-NLS-1$
                JavaPlugin.logErrorMessage("Unexpected element in search match: " + match.toString());
        }
    };
    new SearchEngine().search(pattern, SearchUtils.getDefaultSearchParticipants(), scope, requestor, pm);
    return results.toArray(new IMethod[results.size()]);
}
Also used : SearchRequestor(org.eclipse.jdt.core.search.SearchRequestor) SearchMatch(org.eclipse.jdt.core.search.SearchMatch) SearchEngine(org.eclipse.jdt.core.search.SearchEngine) RefactoringSearchEngine(org.eclipse.jdt.internal.corext.refactoring.RefactoringSearchEngine) IJavaSearchScope(org.eclipse.jdt.core.search.IJavaSearchScope) ArrayList(java.util.ArrayList) SearchPattern(org.eclipse.jdt.core.search.SearchPattern) IMethod(org.eclipse.jdt.core.IMethod)

Example 10 with IMethod

use of org.eclipse.jdt.core.IMethod in project che by eclipse.

the class RenameMethodProcessor method computeRenameModifications.

@Override
protected RenameModifications computeRenameModifications() throws CoreException {
    RenameModifications result = new RenameModifications();
    RenameArguments args = new RenameArguments(getNewElementName(), getUpdateReferences());
    for (Iterator<IMethod> iter = fMethodsToRename.iterator(); iter.hasNext(); ) {
        IMethod method = iter.next();
        result.rename(method, args);
    }
    return result;
}
Also used : RenameArguments(org.eclipse.ltk.core.refactoring.participants.RenameArguments) IMethod(org.eclipse.jdt.core.IMethod)

Aggregations

IMethod (org.eclipse.jdt.core.IMethod)144 IType (org.eclipse.jdt.core.IType)79 IJavaElement (org.eclipse.jdt.core.IJavaElement)30 RefactoringStatus (org.eclipse.ltk.core.refactoring.RefactoringStatus)29 ICompilationUnit (org.eclipse.jdt.core.ICompilationUnit)28 ArrayList (java.util.ArrayList)18 IField (org.eclipse.jdt.core.IField)15 ITypeHierarchy (org.eclipse.jdt.core.ITypeHierarchy)14 SubProgressMonitor (org.eclipse.core.runtime.SubProgressMonitor)13 IMember (org.eclipse.jdt.core.IMember)13 JavaModelException (org.eclipse.jdt.core.JavaModelException)12 RenameJavaElementDescriptor (org.eclipse.jdt.core.refactoring.descriptors.RenameJavaElementDescriptor)12 NullProgressMonitor (org.eclipse.core.runtime.NullProgressMonitor)11 HashSet (java.util.HashSet)8 Test (org.junit.Test)8 ILocalVariable (org.eclipse.jdt.core.ILocalVariable)7 IPackageFragment (org.eclipse.jdt.core.IPackageFragment)7 CompilationUnit (org.eclipse.jdt.core.dom.CompilationUnit)7 RenameRefactoring (org.eclipse.ltk.core.refactoring.participants.RenameRefactoring)7 OperationCanceledException (org.eclipse.core.runtime.OperationCanceledException)6