@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; }
@Override protected IFile[] getChangedFiles() throws CoreException { return ResourceUtil.getFiles(fChangeManager.getAllCompilationUnits()); }
protected IFile[] getChangedFiles() { return ResourceUtil.getFiles(fChangeManager.getAllCompilationUnits()); }
/* * @see Refactoring#checkInput(IProgressMonitor) */ @Override public RefactoringStatus checkFinalConditions(IProgressMonitor pm) throws CoreException { return Checks.validateModifiesFiles( ResourceUtil.getFiles(new ICompilationUnit[] {fCUnit}), getValidationContext()); }