public static ASTNode[] getAstNodes(SearchMatch[] searchResults, CompilationUnit cuNode) { List result= new ArrayList(searchResults.length); for (int i= 0; i < searchResults.length; i++) { ASTNode node= getAstNode(searchResults[i], cuNode); if (node != null) result.add(node); } return (ASTNode[]) result.toArray(new ASTNode[result.size()]); }
public static ASTNode[] getAstNodes(SearchMatch[] searchResults, CompilationUnit cuNode) { List<ASTNode> result= new ArrayList<>(searchResults.length); for (int i= 0; i < searchResults.length; i++) { ASTNode node= getAstNode(searchResults[i], cuNode); if (node != null) result.add(node); } return result.toArray(new ASTNode[result.size()]); }
public static ASTNode[] getAstNodes(SearchMatch[] searchResults, CompilationUnit cuNode) { List<ASTNode> result= new ArrayList<>(searchResults.length); for (int i= 0; i < searchResults.length; i++) { ASTNode node= getAstNode(searchResults[i], cuNode); if (node != null) result.add(node); } return result.toArray(new ASTNode[result.size()]); }
public static ASTNode getAstNode(SearchMatch searchResult, CompilationUnit cuNode) { ASTNode selectedNode= getAstNode(cuNode, searchResult.getOffset(), searchResult.getLength()); if (selectedNode == null) return null; if (selectedNode.getParent() == null) return null; return selectedNode; }
public static ASTNode getAstNode(SearchMatch searchResult, CompilationUnit cuNode) { ASTNode selectedNode= getAstNode(cuNode, searchResult.getOffset(), searchResult.getLength()); if (selectedNode == null) return null; if (selectedNode.getParent() == null) return null; return selectedNode; }
private SearchResultGroup[] removeUnrealReferences(SearchResultGroup[] groups) { List<SearchResultGroup> result= new ArrayList<>(groups.length); for (int i= 0; i < groups.length; i++) { SearchResultGroup group= groups[i]; ICompilationUnit cu= group.getCompilationUnit(); if (cu == null) continue; CompilationUnit cuNode= new RefactoringASTParser(IASTSharedValues.SHARED_AST_LEVEL).parse(cu, false); SearchMatch[] allSearchResults= group.getSearchResults(); List<SearchMatch> realConstructorReferences= new ArrayList<>(Arrays.asList(allSearchResults)); for (int j= 0; j < allSearchResults.length; j++) { SearchMatch searchResult= allSearchResults[j]; if (! isRealConstructorReferenceNode(ASTNodeSearchUtil.getAstNode(searchResult, cuNode))) realConstructorReferences.remove(searchResult); } if (! realConstructorReferences.isEmpty()) result.add(new SearchResultGroup(group.getResource(), realConstructorReferences.toArray(new SearchMatch[realConstructorReferences.size()]))); } return result.toArray(new SearchResultGroup[result.size()]); }
private SearchResultGroup[] removeUnrealReferences(SearchResultGroup[] groups) { List result= new ArrayList(groups.length); for (int i= 0; i < groups.length; i++) { SearchResultGroup group= groups[i]; ICompilationUnit cu= group.getCompilationUnit(); if (cu == null) continue; CompilationUnit cuNode= new RefactoringASTParser(AST.JLS3).parse(cu, false); SearchMatch[] allSearchResults= group.getSearchResults(); List realConstructorReferences= new ArrayList(Arrays.asList(allSearchResults)); for (int j= 0; j < allSearchResults.length; j++) { SearchMatch searchResult= allSearchResults[j]; if (! isRealConstructorReferenceNode(ASTNodeSearchUtil.getAstNode(searchResult, cuNode))) realConstructorReferences.remove(searchResult); } if (! realConstructorReferences.isEmpty()) result.add(new SearchResultGroup(group.getResource(), (SearchMatch[]) realConstructorReferences.toArray(new SearchMatch[realConstructorReferences.size()]))); } return (SearchResultGroup[]) result.toArray(new SearchResultGroup[result.size()]); }
private SearchResultGroup[] removeUnrealReferences(SearchResultGroup[] groups) { List<SearchResultGroup> result= new ArrayList<>(groups.length); for (int i= 0; i < groups.length; i++) { SearchResultGroup group= groups[i]; ICompilationUnit cu= group.getCompilationUnit(); if (cu == null) continue; CompilationUnit cuNode= new RefactoringASTParser(ASTProvider.SHARED_AST_LEVEL).parse(cu, false); SearchMatch[] allSearchResults= group.getSearchResults(); List<SearchMatch> realConstructorReferences= new ArrayList<>(Arrays.asList(allSearchResults)); for (int j= 0; j < allSearchResults.length; j++) { SearchMatch searchResult= allSearchResults[j]; if (! isRealConstructorReferenceNode(ASTNodeSearchUtil.getAstNode(searchResult, cuNode))) realConstructorReferences.remove(searchResult); } if (! realConstructorReferences.isEmpty()) result.add(new SearchResultGroup(group.getResource(), realConstructorReferences.toArray(new SearchMatch[realConstructorReferences.size()]))); } return result.toArray(new SearchResultGroup[result.size()]); }
public static ASTNode getAstNode(SearchMatch searchResult, CompilationUnit cuNode) { ASTNode selectedNode= getAstNode(cuNode, searchResult.getOffset(), searchResult.getLength()); if (selectedNode == null) return null; if (selectedNode.getParent() == null) return null; return selectedNode; }
private List<SearchMatch> getImplicitConstructorReferencesInClassCreations(WorkingCopyOwner owner, IProgressMonitor pm, RefactoringStatus status) throws JavaModelException { //XXX workaround for jdt core bug 23112 SearchPattern pattern= SearchPattern.createPattern(fType, IJavaSearchConstants.REFERENCES, SearchUtils.GENERICS_AGNOSTIC_MATCH_RULE); IJavaSearchScope scope= RefactoringScopeFactory.create(fType); SearchResultGroup[] refs= RefactoringSearchEngine.search(pattern, owner, scope, pm, status); List<SearchMatch> result= new ArrayList<>(); for (int i= 0; i < refs.length; i++) { SearchResultGroup group= refs[i]; ICompilationUnit cu= group.getCompilationUnit(); if (cu == null) continue; CompilationUnit cuNode= new RefactoringASTParser(IASTSharedValues.SHARED_AST_LEVEL).parse(cu, false); SearchMatch[] results= group.getSearchResults(); for (int j= 0; j < results.length; j++) { SearchMatch searchResult= results[j]; ASTNode node= ASTNodeSearchUtil.getAstNode(searchResult, cuNode); if (isImplicitConstructorReferenceNodeInClassCreations(node)) result.add(searchResult); } } return result; }
private List<SearchMatch> getImplicitConstructorReferencesInClassCreations(WorkingCopyOwner owner, IProgressMonitor pm, RefactoringStatus status) throws JavaModelException { //XXX workaround for jdt core bug 23112 SearchPattern pattern= SearchPattern.createPattern(fType, IJavaSearchConstants.REFERENCES, SearchUtils.GENERICS_AGNOSTIC_MATCH_RULE); IJavaSearchScope scope= RefactoringScopeFactory.create(fType); SearchResultGroup[] refs= RefactoringSearchEngine.search(pattern, owner, scope, pm, status); List<SearchMatch> result= new ArrayList<>(); for (int i= 0; i < refs.length; i++) { SearchResultGroup group= refs[i]; ICompilationUnit cu= group.getCompilationUnit(); if (cu == null) continue; CompilationUnit cuNode= new RefactoringASTParser(ASTProvider.SHARED_AST_LEVEL).parse(cu, false); SearchMatch[] results= group.getSearchResults(); for (int j= 0; j < results.length; j++) { SearchMatch searchResult= results[j]; ASTNode node= ASTNodeSearchUtil.getAstNode(searchResult, cuNode); if (isImplicitConstructorReferenceNodeInClassCreations(node)) result.add(searchResult); } } return result; }
private List getImplicitConstructorReferencesInClassCreations(WorkingCopyOwner owner, IProgressMonitor pm, RefactoringStatus status) throws JavaModelException { //XXX workaround for jdt core bug 23112 SearchPattern pattern= SearchPattern.createPattern(fType, IJavaSearchConstants.REFERENCES, SearchUtils.GENERICS_AGNOSTIC_MATCH_RULE); IJavaSearchScope scope= RefactoringScopeFactory.create(fType); SearchResultGroup[] refs= RefactoringSearchEngine.search(pattern, owner, scope, pm, status); List result= new ArrayList(); for (int i= 0; i < refs.length; i++) { SearchResultGroup group= refs[i]; ICompilationUnit cu= group.getCompilationUnit(); if (cu == null) continue; CompilationUnit cuNode= new RefactoringASTParser(AST.JLS3).parse(cu, false); SearchMatch[] results= group.getSearchResults(); for (int j= 0; j < results.length; j++) { SearchMatch searchResult= results[j]; ASTNode node= ASTNodeSearchUtil.getAstNode(searchResult, cuNode); if (isImplicitConstructorReferenceNodeInClassCreations(node)) result.add(searchResult); } } return result; }
private boolean shouldReport(IProblem problem, CompilationUnit cu) { if (! problem.isError()) return false; if (problem.getID() == IProblem.UndefinedType) //reported when trying to import return false; ASTNode node= ASTNodeSearchUtil.getAstNode(cu, problem.getSourceStart(), problem.getSourceEnd() - problem.getSourceStart()); IProblemVerifier verifier= doGetProblemVerifier(); if (verifier != null) return verifier.isError(problem, node); return true; }
@Override protected boolean shouldReport(IProblem problem, CompilationUnit cu) { if (!super.shouldReport(problem, cu)) return false; ASTNode node= ASTNodeSearchUtil.getAstNode(cu, problem.getSourceStart(), problem.getSourceEnd() - problem.getSourceStart() + 1); if (node instanceof Type) { Type type= (Type) node; if (problem.getID() == IProblem.UndefinedType && getClassName().equals(ASTNodes.getTypeName(type))) { return false; } } if (node instanceof Name) { Name name= (Name) node; if (problem.getID() == IProblem.ImportNotFound && getPackage().indexOf(name.getFullyQualifiedName()) != -1) return false; if (problem.getID() == IProblem.MissingTypeInMethod) { StructuralPropertyDescriptor locationInParent= name.getLocationInParent(); String[] arguments= problem.getArguments(); if ((locationInParent == MethodInvocation.NAME_PROPERTY || locationInParent == SuperMethodInvocation.NAME_PROPERTY) && arguments.length > 3 && arguments[3].endsWith(getClassName())) return false; } } return true; }
@Override protected boolean shouldReport(IProblem problem, CompilationUnit cu) { if (!super.shouldReport(problem, cu)) return false; ASTNode node= ASTNodeSearchUtil.getAstNode(cu, problem.getSourceStart(), problem.getSourceEnd() - problem.getSourceStart() + 1); if (node instanceof Type) { Type type= (Type) node; if (problem.getID() == IProblem.UndefinedType && getClassName().equals(ASTNodes.getTypeName(type))) { return false; } } if (node instanceof Name) { Name name= (Name) node; if (problem.getID() == IProblem.ImportNotFound && getPackage().indexOf(name.getFullyQualifiedName()) != -1) return false; if (problem.getID() == IProblem.MissingTypeInMethod) { StructuralPropertyDescriptor locationInParent= name.getLocationInParent(); String[] arguments= problem.getArguments(); if ((locationInParent == MethodInvocation.NAME_PROPERTY || locationInParent == SuperMethodInvocation.NAME_PROPERTY) && arguments.length > 3 && arguments[3].endsWith(getClassName())) return false; } } return true; }
private static ASTNode[] getNodesToDelete(IJavaElement element, CompilationUnit cuNode) throws JavaModelException { // fields are different because you don't delete the whole declaration but only a fragment of it if (element.getElementType() == IJavaElement.FIELD) { if (JdtFlags.isEnum((IField) element)) return new ASTNode[] { ASTNodeSearchUtil.getEnumConstantDeclaration((IField) element, cuNode)}; else return new ASTNode[] { ASTNodeSearchUtil.getFieldDeclarationFragmentNode((IField) element, cuNode)}; } if (element.getElementType() == IJavaElement.TYPE && ((IType) element).isLocal()) { IType type= (IType) element; if (type.isAnonymous()) { if (type.getParent().getElementType() == IJavaElement.FIELD) { final ISourceRange range= type.getSourceRange(); if (range != null) { final ASTNode node= ASTNodeSearchUtil.getAstNode(cuNode, range.getOffset(), range.getLength()); if (node instanceof AnonymousClassDeclaration) return new ASTNode[] { node}; } } return new ASTNode[] { ASTNodeSearchUtil.getClassInstanceCreationNode(type, cuNode)}; } else { ASTNode[] nodes= ASTNodeSearchUtil.getDeclarationNodes(element, cuNode); // we have to delete the TypeDeclarationStatement nodes[0]= nodes[0].getParent(); return nodes; } } return ASTNodeSearchUtil.getDeclarationNodes(element, cuNode); }