private String[] getExcludedVariableNames() { if (fExcludedVariableNames == null) { try { IExpressionFragment expr = getSelectedExpression(); Collection<String> takenNames = new ScopeAnalyzer(fCuRewrite.getRoot()).getUsedVariableNames(expr.getStartPosition(), expr.getLength()); fExcludedVariableNames = takenNames.toArray(new String[takenNames.size()]); } catch (JavaModelException e) { fExcludedVariableNames = new String[0]; } } return fExcludedVariableNames; }
public StubTypeContext getStubTypeContext() { try { if (fContextCuStartEnd == null) fContextCuStartEnd= TypeContextChecker.createStubTypeContext(getCu(), fBaseCuRewrite.getRoot(), fMethod.getSourceRange().getOffset()); } catch (CoreException e) { //cannot do anything here throw new RuntimeException(e); } return fContextCuStartEnd; }
private IBinding[] getMemberBindings() throws JavaModelException { IBinding[] result= new IBinding[fMembersToMove.length]; for (int i= 0; i < fMembersToMove.length; i++) { IMember member= fMembersToMove[i]; SimpleName name= (SimpleName)NodeFinder.perform(fSource.getRoot(), member.getNameRange()); result[i]= name.resolveBinding(); } return result; }
private String[] getExcludedVariableNames() { if (fExcludedVariableNames == null) { try { IExpressionFragment expr= getSelectedExpression(); Collection takenNames= new ScopeAnalyzer(fCuRewrite.getRoot()).getUsedVariableNames(expr.getStartPosition(), expr.getLength()); fExcludedVariableNames= (String[]) takenNames.toArray(new String[takenNames.size()]); } catch (JavaModelException e) { fExcludedVariableNames= new String[0]; } } return fExcludedVariableNames; }
private ITypeBinding getDestinationBinding() throws JavaModelException { ASTNode node= NodeFinder.perform(fTarget.getRoot(), fDestinationType.getNameRange()); if (!(node instanceof SimpleName)) return null; IBinding binding= ((SimpleName)node).resolveBinding(); if (!(binding instanceof ITypeBinding)) return null; return (ITypeBinding)binding; }
private static void markAsDeleted(List<ASTNode> list, IJavaElement element, CompilationUnitRewrite rewrite, TextEditGroup group) throws JavaModelException { ASTNode[] declarationNodes= getNodesToDelete(element, rewrite.getRoot()); for (int i= 0; i < declarationNodes.length; i++) { ASTNode node= declarationNodes[i]; if (node != null) { list.add(node); rewrite.getASTRewrite().remove(node, group); rewrite.getImportRemover().registerRemovedNode(node); } } }
private static void markAsDeleted(List<ASTNode> list, IJavaElement element, CompilationUnitRewrite rewrite, TextEditGroup group) throws JavaModelException { ASTNode[] declarationNodes= getNodesToDelete(element, rewrite.getRoot()); for (int i= 0; i < declarationNodes.length; i++) { ASTNode node= declarationNodes[i]; if (node != null) { list.add(node); rewrite.getASTRewrite().remove(node, group); rewrite.getImportRemover().registerRemovedNode(node); } } }
private void initializeExcludedParameterNames(CompilationUnitRewrite cuRewrite) { IBinding[] bindings= new ScopeAnalyzer(cuRewrite.getRoot()).getDeclarationsInScope( fSelectedExpression.getStartPosition(), ScopeAnalyzer.VARIABLES); fExcludedParameterNames= new String[bindings.length]; for (int i= 0; i < fExcludedParameterNames.length; i++) { fExcludedParameterNames[i]= bindings[i].getName(); } }
private void replaceSelectedExpression(CompilationUnitRewrite cuRewrite) { if (! fSourceCU.equals(cuRewrite.getCu())) return; // TODO: do for all methodDeclarations and replace matching fragments? // cannot use fSelectedExpression here, since it could be from another AST (if method was replaced by overridden): Expression expression= (Expression) NodeFinder.perform(cuRewrite.getRoot(), fSelectedExpression.getStartPosition(), fSelectedExpression.getLength()); ASTNode newExpression= cuRewrite.getRoot().getAST().newSimpleName(fParameter.getNewName()); String description= RefactoringCoreMessages.IntroduceParameterRefactoring_replace; cuRewrite.getASTRewrite().replace(expression.getParent() instanceof ParenthesizedExpression ? expression.getParent() : expression, newExpression, cuRewrite.createGroupDescription(description)); }
private void updateConstructorReference(ITypeBinding[] parameters, ParameterizedType type, CompilationUnitRewrite targetRewrite, ICompilationUnit cu, TextEditGroup group) throws CoreException { final ListRewrite rewrite= targetRewrite.getASTRewrite().getListRewrite(type, ParameterizedType.TYPE_ARGUMENTS_PROPERTY); TypeParameter parameter= null; for (int index= type.typeArguments().size(); index < parameters.length; index++) { parameter= targetRewrite.getRoot().getAST().newTypeParameter(); parameter.setName(targetRewrite.getRoot().getAST().newSimpleName(parameters[index].getName())); rewrite.insertLast(parameter, group); } if (type.getParent() instanceof ClassInstanceCreation) updateConstructorReference((ClassInstanceCreation) type.getParent(), targetRewrite, cu, group); }
private void addSimpleTypeQualification(final CompilationUnitRewrite targetRewrite, final ITypeBinding declaring, final SimpleType simpleType, final TextEditGroup group) { Assert.isNotNull(targetRewrite); Assert.isNotNull(declaring); Assert.isNotNull(simpleType); final AST ast= targetRewrite.getRoot().getAST(); if (!(simpleType.getName() instanceof QualifiedName)) { targetRewrite.getASTRewrite().replace(simpleType, ast.newQualifiedType(targetRewrite.getImportRewrite().addImport(declaring, ast), ast.newSimpleName(simpleType.getName().getFullyQualifiedName())), group); targetRewrite.getImportRemover().registerRemovedNode(simpleType); } }
/** * Sets the compilation unit rewrite of the declaration to create a delegate * for. Must always be called prior to prepareDelegate(). Bindings need not * be resolved. * * @param rewrite the CompilationUnitRewrite. */ public void setSourceRewrite(CompilationUnitRewrite rewrite) { fOriginalRewrite= rewrite; //fPreferences= JavaPreferencesSettings.getCodeGenerationSettings(rewrite.getCu().getJavaProject()); fDelegateRewrite= new CompilationUnitRewrite(rewrite.getCu(), rewrite.getRoot()); fDelegateRewrite.getASTRewrite().setTargetSourceRangeComputer(rewrite.getASTRewrite().getExtendedSourceRangeComputer()); }
private boolean updateParameterizedTypeReference(ITypeBinding[] parameters, ParameterizedType type, CompilationUnitRewrite targetRewrite, TextEditGroup group) { if (!(type.getParent() instanceof ClassInstanceCreation)) { final ListRewrite rewrite= targetRewrite.getASTRewrite().getListRewrite(type, ParameterizedType.TYPE_ARGUMENTS_PROPERTY); final AST ast= targetRewrite.getRoot().getAST(); Type simpleType= null; for (int index= type.typeArguments().size(); index < parameters.length; index++) { simpleType= ast.newSimpleType(ast.newSimpleName(parameters[index].getName())); rewrite.insertLast(simpleType, group); } } return true; }
private boolean updateParameterizedTypeReference(ITypeBinding[] parameters, ParameterizedType type, CompilationUnitRewrite targetRewrite, TextEditGroup group) { if (!(type.getParent() instanceof ClassInstanceCreation)) { final ListRewrite rewrite= targetRewrite.getASTRewrite().getListRewrite(type, ParameterizedType.TYPE_ARGUMENTS_PROPERTY); final AST ast= targetRewrite.getRoot().getAST(); Type simpleType= null; for (int index= type.typeArguments().size(); index < parameters.length; index++) { simpleType= ast.newSimpleType(ast.newSimpleName(parameters[index].getName())); rewrite.insertLast(simpleType, group); } } return true; }
public void rewriteAST(CompilationUnitRewrite cuRewrite, List textEditGroups) throws CoreException { AST ast= cuRewrite.getRoot().getAST(); ListRewrite listRewrite= cuRewrite.getASTRewrite().getListRewrite(fBodyDeclaration, fBodyDeclaration.getModifiersProperty()); Annotation newAnnotation= ast.newMarkerAnnotation(); newAnnotation.setTypeName(ast.newSimpleName(fAnnotation)); TextEditGroup group= createTextEditGroup(Messages.format(FixMessages.Java50Fix_AddMissingAnnotation_description, fAnnotation)); textEditGroups.add(group); listRewrite.insertFirst(newAnnotation, group); } }
private void addMethodDelegate(IMethod getter, String newName, CompilationUnitRewrite rewrite) throws JavaModelException { MethodDeclaration declaration= ASTNodeSearchUtil.getMethodDeclarationNode(getter, rewrite.getRoot()); DelegateCreator creator= new DelegateMethodCreator(); creator.setDeclareDeprecated(fDelegateDeprecation); creator.setDeclaration(declaration); creator.setNewElementName(newName); creator.setSourceRewrite(rewrite); creator.prepareDelegate(); creator.createEdit(); }
private void addMethodDelegate(IMethod getter, String newName, CompilationUnitRewrite rewrite) throws JavaModelException { MethodDeclaration declaration= ASTNodeSearchUtil.getMethodDeclarationNode(getter, rewrite.getRoot()); DelegateCreator creator= new DelegateMethodCreator(); creator.setDeclareDeprecated(fDelegateDeprecation); creator.setDeclaration(declaration); creator.setNewElementName(newName); creator.setSourceRewrite(rewrite); creator.prepareDelegate(); creator.createEdit(); }
private void checkSource(SubProgressMonitor monitor, RefactoringStatus result) throws CoreException { String newCuSource= fChange.getPreviewContent(new NullProgressMonitor()); CompilationUnit newCUNode= new RefactoringASTParser(IASTSharedValues.SHARED_AST_LEVEL).parse(newCuSource, fCu, true, true, monitor); IProblem[] newProblems= RefactoringAnalyzeUtil.getIntroducedCompileProblems(newCUNode, fCuRewrite.getRoot()); for (int i= 0; i < newProblems.length; i++) { IProblem problem= newProblems[i]; if (problem.isError()) result.addEntry(new RefactoringStatusEntry((problem.isError() ? RefactoringStatus.ERROR : RefactoringStatus.WARNING), problem.getMessage(), new JavaStringStatusContext(newCuSource, SourceRangeFactory.create(problem)))); } }
private boolean isInstanceFieldCreationMandatory() { AbstractTypeDeclaration typeDeclaration= findTypeDeclaration(fType, fSourceRewrite.getRoot()); ITypeBinding typeBinding= typeDeclaration.resolveBinding(); if (typeBinding == null || Modifier.isStatic(typeBinding.getModifiers())) { return false; } final MemberAccessNodeCollector collector= new MemberAccessNodeCollector(typeBinding); typeDeclaration.accept(collector); return containsNonStatic(collector.getMethodInvocations()) || containsNonStatic(collector.getSimpleFieldNames()); }
private void declareMethodAbstract(MemberActionInfo info, CompilationUnitRewrite sourceRewrite, CompilationUnitRewrite unitRewrite) throws JavaModelException { Assert.isTrue(!info.isFieldInfo()); IMethod method= (IMethod) info.getMember(); if (JdtFlags.isAbstract(method)) return; final MethodDeclaration declaration= ASTNodeSearchUtil.getMethodDeclarationNode(method, sourceRewrite.getRoot()); unitRewrite.getASTRewrite().remove(declaration.getBody(), null); sourceRewrite.getImportRemover().registerRemovedNode(declaration.getBody()); ModifierRewrite.create(unitRewrite.getASTRewrite(), declaration).setModifiers(info.getNewModifiersForOriginal(declaration.getModifiers()), null); }