private RefactoringStatus createChanges(IProgressMonitor pm) throws CoreException { pm.beginTask(RefactoringCoreMessages.RenameFieldRefactoring_checking, 10); RefactoringStatus result = new RefactoringStatus(); if (!fIsComposite) fChangeManager.clear(); // Delegate creation requires ASTRewrite which // creates a new change -> do this first. if (fDelegateUpdating) result.merge(addDelegates()); addDeclarationUpdate(); if (fUpdateReferences) { addReferenceUpdates(new SubProgressMonitor(pm, 1)); result.merge(analyzeRenameChanges(new SubProgressMonitor(pm, 2))); if (result.hasFatalError()) return result; } else { pm.worked(3); } if (getGetter() != null && fRenameGetter) { addGetterOccurrences(new SubProgressMonitor(pm, 1), result); } else { pm.worked(1); } if (getSetter() != null && fRenameSetter) { addSetterOccurrences(new SubProgressMonitor(pm, 1), result); } else { pm.worked(1); } if (fUpdateTextualMatches) { addTextMatches(new SubProgressMonitor(pm, 5)); } else { pm.worked(5); } pm.done(); return result; }
@SuppressWarnings({"unchecked"}) @Override public RefactoringStatus checkFinalConditions(IProgressMonitor pm) throws CoreException, OperationCanceledException { RefactoringStatus result = new RefactoringStatus(); fChangeManager.clear(); pm.beginTask("", 12); pm.setTaskName("Convert to AtomicInteger checking preconditions"); pm.worked(1); if (result.hasFatalError()) return result; pm.setTaskName("ConvertToAtomicInteger searching for cunits"); final SubProgressMonitor subPm = new SubProgressMonitor(pm, 5); ICompilationUnit[] affectedCUs = RefactoringSearchEngine.findAffectedCompilationUnits( SearchPattern.createPattern(targetClass, IJavaSearchConstants.ALL_OCCURRENCES), RefactoringScopeFactory.create(targetClass, true), subPm, result, true); if (result.hasFatalError()) return result; pm.setTaskName("Analyzing the field"); IProgressMonitor sub = new SubProgressMonitor(pm, 5); sub.beginTask("", affectedCUs.length); List ownerDescriptions = new ArrayList(); ICompilationUnit owner = targetClass.getCompilationUnit(); for (int i = 0; i < affectedCUs.length; i++) { ICompilationUnit unit = affectedCUs[i]; sub.subTask(unit.getElementName()); CompilationUnit root = null; ASTRewrite rewriter = null; List descriptions; if (owner.equals(unit)) { root = fRoot; rewriter = fRewriter; descriptions = ownerDescriptions; } else { root = new RefactoringASTParser(AST.JLS3).parse(unit, true); rewriter = ASTRewrite.create(root.getAST()); descriptions = new ArrayList(); } checkCompileErrors(result, root, unit); // We will perform a different set of analysis and rewrites for the compilation unit // containing the // target class and other compilation units if (owner.equals(unit)) { // Analysis passes ClassMutatorAnalysis mutatorAnalysis = new ClassMutatorAnalysis(targetClass, pm); mutatorAnalysis.findMutators(); ClassConstructorAnalysis constructorAnalysis = new ClassConstructorAnalysis(targetClassDeclaration); targetClassDeclaration.accept(constructorAnalysis); // Rewrite pass MakeClassImmutableRewriter immutableRewriter = new MakeClassImmutableRewriter(this, unit, rewriter); immutableRewriter.rewrite(targetClassDeclaration, mutatorAnalysis, constructorAnalysis); result.merge(immutableRewriter.getStatus()); if (result.hasFatalError()) { fChangeManager.clear(); return result; } } else { // descriptions.addAll(immutableRewriter.getGroupDescriptions()); createEdits(unit, rewriter, descriptions); } sub.worked(1); if (pm.isCanceled()) throw new OperationCanceledException(); } createEdits(owner, fRewriter, ownerDescriptions); sub.done(); IFile[] filesToBeModified = ResourceUtil.getFiles(fChangeManager.getAllCompilationUnits()); result.merge(Checks.validateModifiesFiles(filesToBeModified, getValidationContext())); if (result.hasFatalError()) return result; ResourceChangeChecker.checkFilesToBeChanged(filesToBeModified, new SubProgressMonitor(pm, 1)); return result; }
private TextChangeManager createChanges(IProgressMonitor pm, RefactoringStatus status) throws CoreException { if (!fIsComposite) fChangeManager.clear(); addOccurrences(fChangeManager, pm, status); return fChangeManager; }