AddDelegateMethodsContentProvider(CompilationUnit astRoot, IType type, IField[] fields) throws JavaModelException { final ITypeBinding binding= ASTNodes.getTypeBinding(astRoot, type); if (binding != null) { fDelegateEntries= StubUtility2Core.getDelegatableMethods(binding); List<IVariableBinding> expanded= new ArrayList<>(); for (int index= 0; index < fields.length; index++) { VariableDeclarationFragment fragment= ASTNodeSearchUtil.getFieldDeclarationFragmentNode(fields[index], astRoot); if (fragment != null) { IVariableBinding variableBinding= fragment.resolveBinding(); if (variableBinding != null) expanded.add(variableBinding); } } fExpanded= expanded.toArray(new IVariableBinding[expanded.size()]); } }
AddDelegateMethodsContentProvider(CompilationUnit astRoot, IType type, IField[] fields) throws JavaModelException { final ITypeBinding binding= ASTNodes.getTypeBinding(astRoot, type); if (binding != null) { fDelegateEntries= StubUtility2.getDelegatableMethods(binding); List<IVariableBinding> expanded= new ArrayList<>(); for (int index= 0; index < fields.length; index++) { VariableDeclarationFragment fragment= ASTNodeSearchUtil.getFieldDeclarationFragmentNode(fields[index], astRoot); if (fragment != null) { IVariableBinding variableBinding= fragment.resolveBinding(); if (variableBinding != null) expanded.add(variableBinding); } } fExpanded= expanded.toArray(new IVariableBinding[expanded.size()]); } }
public GenerateConstructorUsingFieldsContentProvider(IType type, List fields, List selected) throws JavaModelException { RefactoringASTParser parser= new RefactoringASTParser(AST.JLS3); fUnit= parser.parse(type.getCompilationUnit(), true); fType= ASTNodes.getTypeBinding(fUnit, type); if (fType != null) { IField field= null; for (Iterator iterator= fields.iterator(); iterator.hasNext();) { field= (IField) iterator.next(); VariableDeclarationFragment fragment= ASTNodeSearchUtil.getFieldDeclarationFragmentNode(field, fUnit); if (fragment != null) { IVariableBinding binding= fragment.resolveBinding(); if (binding != null) fFields.add(binding); } } for (Iterator iterator= selected.iterator(); iterator.hasNext();) { field= (IField) iterator.next(); VariableDeclarationFragment fragment= ASTNodeSearchUtil.getFieldDeclarationFragmentNode(field, fUnit); if (fragment != null) { IVariableBinding binding= fragment.resolveBinding(); if (binding != null) fSelected.add(binding); } } } }
protected static List getDeclarationNodes(final CompilationUnit cuNode, final List members) throws JavaModelException { final List result= new ArrayList(members.size()); for (final Iterator iterator= members.iterator(); iterator.hasNext();) { final IMember member= (IMember) iterator.next(); ASTNode node= null; if (member instanceof IField) { if (Flags.isEnum(member.getFlags())) node= ASTNodeSearchUtil.getEnumConstantDeclaration((IField) member, cuNode); else node= ASTNodeSearchUtil.getFieldDeclarationFragmentNode((IField) member, cuNode); } else if (member instanceof IType) node= ASTNodeSearchUtil.getAbstractTypeDeclarationNode((IType) member, cuNode); else if (member instanceof IMethod) node= ASTNodeSearchUtil.getMethodDeclarationNode((IMethod) member, cuNode); if (node != null) result.add(node); } return result; }
protected static List<ASTNode> getDeclarationNodes(final CompilationUnit cuNode, final List<IMember> members) throws JavaModelException { final List<ASTNode> result= new ArrayList<>(members.size()); for (final Iterator<IMember> iterator= members.iterator(); iterator.hasNext();) { final IMember member= iterator.next(); ASTNode node= null; if (member instanceof IField) { if (Flags.isEnum(member.getFlags())) node= ASTNodeSearchUtil.getEnumConstantDeclaration((IField) member, cuNode); else node= ASTNodeSearchUtil.getFieldDeclarationFragmentNode((IField) member, cuNode); } else if (member instanceof IType) node= ASTNodeSearchUtil.getAbstractTypeDeclarationNode((IType) member, cuNode); else if (member instanceof IMethod) node= ASTNodeSearchUtil.getMethodDeclarationNode((IMethod) member, cuNode); if (node != null) result.add(node); } return result; }
protected static List<ASTNode> getDeclarationNodes(final CompilationUnit cuNode, final List<IMember> members) throws JavaModelException { final List<ASTNode> result= new ArrayList<>(members.size()); for (final Iterator<IMember> iterator= members.iterator(); iterator.hasNext();) { final IMember member= iterator.next(); ASTNode node= null; if (member instanceof IField) { if (Flags.isEnum(member.getFlags())) node= ASTNodeSearchUtil.getEnumConstantDeclaration((IField) member, cuNode); else node= ASTNodeSearchUtil.getFieldDeclarationFragmentNode((IField) member, cuNode); } else if (member instanceof IType) node= ASTNodeSearchUtil.getAbstractTypeDeclarationNode((IType) member, cuNode); else if (member instanceof IMethod) node= ASTNodeSearchUtil.getMethodDeclarationNode((IMethod) member, cuNode); if (node != null) result.add(node); } return result; }
@Override protected final void createMemberDeclarations(final CompilationUnitRewrite sourceRewrite, final ASTRewrite targetRewrite, final AbstractTypeDeclaration targetDeclaration) throws CoreException { Assert.isNotNull(sourceRewrite); Assert.isNotNull(targetRewrite); Assert.isNotNull(targetDeclaration); Arrays.sort(fMembers, new Comparator<IMember>() { @Override public final int compare(final IMember first, final IMember second) { try { return first.getSourceRange().getOffset() - second.getSourceRange().getOffset(); } catch (JavaModelException exception) { return first.hashCode() - second.hashCode(); } } }); fTypeBindings.clear(); fStaticBindings.clear(); if (fMembers.length > 0) { IMember member= null; for (int index= fMembers.length - 1; index >= 0; index--) { member= fMembers[index]; if (member instanceof IField) { createFieldDeclaration(sourceRewrite, targetRewrite, targetDeclaration, ASTNodeSearchUtil.getFieldDeclarationFragmentNode((IField) member, sourceRewrite.getRoot())); } else if (member instanceof IMethod) { createMethodDeclaration(sourceRewrite, targetRewrite, targetDeclaration, ASTNodeSearchUtil.getMethodDeclarationNode((IMethod) member, sourceRewrite.getRoot())); } } } }
@Override protected final void createMemberDeclarations(final CompilationUnitRewrite sourceRewrite, final ASTRewrite targetRewrite, final AbstractTypeDeclaration targetDeclaration) throws CoreException { Assert.isNotNull(sourceRewrite); Assert.isNotNull(targetRewrite); Assert.isNotNull(targetDeclaration); Arrays.sort(fMembers, new Comparator<IMember>() { @Override public final int compare(final IMember first, final IMember second) { try { return first.getSourceRange().getOffset() - second.getSourceRange().getOffset(); } catch (JavaModelException exception) { return first.hashCode() - second.hashCode(); } } }); fTypeBindings.clear(); fStaticBindings.clear(); if (fMembers.length > 0) { IMember member= null; for (int index= fMembers.length - 1; index >= 0; index--) { member= fMembers[index]; if (member instanceof IField) { createFieldDeclaration(sourceRewrite, targetRewrite, targetDeclaration, ASTNodeSearchUtil.getFieldDeclarationFragmentNode((IField) member, sourceRewrite.getRoot())); } else if (member instanceof IMethod) { createMethodDeclaration(sourceRewrite, targetRewrite, targetDeclaration, ASTNodeSearchUtil.getMethodDeclarationNode((IMethod) member, sourceRewrite.getRoot())); } } } }
AddDelegateMethodsContentProvider(IType type, IField[] fields) throws JavaModelException { RefactoringASTParser parser= new RefactoringASTParser(AST.JLS3); fUnit= parser.parse(type.getCompilationUnit(), true); final ITypeBinding binding= ASTNodes.getTypeBinding(fUnit, type); if (binding != null) { IBinding[][] bindings= StubUtility2.getDelegatableMethods(fUnit.getAST(), binding); if (bindings != null) { fBindings= bindings; fCount= bindings.length; } List expanded= new ArrayList(); for (int index= 0; index < fields.length; index++) { VariableDeclarationFragment fragment= ASTNodeSearchUtil.getFieldDeclarationFragmentNode(fields[index], fUnit); if (fragment != null) { IVariableBinding variableBinding= fragment.resolveBinding(); if (variableBinding != null) expanded.add(variableBinding); } } IVariableBinding[] result= new IVariableBinding[expanded.size()]; expanded.toArray(result); fExpanded= result; } }
private static String getFieldSource(IField field, SourceTuple tuple) throws CoreException { if (Flags.isEnum(field.getFlags())) { String source= field.getSource(); if (source != null) return source; } else { if (tuple.node == null) { ASTParser parser= ASTParser.newParser(IASTSharedValues.SHARED_AST_LEVEL); parser.setSource(tuple.unit); tuple.node= (CompilationUnit) parser.createAST(null); } FieldDeclaration declaration= ASTNodeSearchUtil.getFieldDeclarationNode(field, tuple.node); if (declaration.fragments().size() == 1) return getSourceOfDeclararationNode(field, tuple.unit); VariableDeclarationFragment declarationFragment= ASTNodeSearchUtil.getFieldDeclarationFragmentNode(field, tuple.node); IBuffer buffer= tuple.unit.getBuffer(); StringBuilder buff= new StringBuilder(); buff.append(buffer.getText(declaration.getStartPosition(), ((ASTNode) declaration.fragments().get(0)).getStartPosition() - declaration.getStartPosition())); buff.append(buffer.getText(declarationFragment.getStartPosition(), declarationFragment.getLength())); buff.append(";"); //$NON-NLS-1$ return buff.toString(); } return ""; //$NON-NLS-1$ }
private static String getFieldSource(IField field, SourceTuple tuple) throws CoreException { if (Flags.isEnum(field.getFlags())) { String source= field.getSource(); if (source != null) return source; } else { if (tuple.node == null) { ASTParser parser= ASTParser.newParser(ASTProvider.SHARED_AST_LEVEL); parser.setSource(tuple.unit); tuple.node= (CompilationUnit) parser.createAST(null); } FieldDeclaration declaration= ASTNodeSearchUtil.getFieldDeclarationNode(field, tuple.node); if (declaration.fragments().size() == 1) return getSourceOfDeclararationNode(field, tuple.unit); VariableDeclarationFragment declarationFragment= ASTNodeSearchUtil.getFieldDeclarationFragmentNode(field, tuple.node); IBuffer buffer= tuple.unit.getBuffer(); StringBuffer buff= new StringBuffer(); buff.append(buffer.getText(declaration.getStartPosition(), ((ASTNode) declaration.fragments().get(0)).getStartPosition() - declaration.getStartPosition())); buff.append(buffer.getText(declarationFragment.getStartPosition(), declarationFragment.getLength())); buff.append(";"); //$NON-NLS-1$ return buff.toString(); } return ""; //$NON-NLS-1$ }
final int visibility= fKeyword != null ? fKeyword.toFlagValue() : Modifier.NONE; if (fMember instanceof IField && !Flags.isEnum(fMember.getFlags())) { final VariableDeclarationFragment fragment= ASTNodeSearchUtil.getFieldDeclarationFragmentNode((IField) fMember, root); final FieldDeclaration declaration= (FieldDeclaration) fragment.getParent(); VariableDeclarationFragment[] fragmentsToChange= new VariableDeclarationFragment[] { fragment };
private static String getFieldSource(IField field, SourceTuple tuple) throws CoreException { if (Flags.isEnum(field.getFlags())) { String source= field.getSource(); if (source != null) return source; } else { if (tuple.node == null) { ASTParser parser= ASTParser.newParser(AST.JLS3); parser.setSource(tuple.unit); tuple.node= (CompilationUnit) parser.createAST(null); } FieldDeclaration declaration= ASTNodeSearchUtil.getFieldDeclarationNode(field, tuple.node); if (declaration.fragments().size() == 1) return getSourceOfDeclararationNode(field, tuple.unit); VariableDeclarationFragment declarationFragment= ASTNodeSearchUtil.getFieldDeclarationFragmentNode(field, tuple.node); IBuffer buffer= tuple.unit.getBuffer(); StringBuffer buff= new StringBuffer(); buff.append(buffer.getText(declaration.getStartPosition(), ((ASTNode) declaration.fragments().get(0)).getStartPosition() - declaration.getStartPosition())); buff.append(buffer.getText(declarationFragment.getStartPosition(), declarationFragment.getLength())); buff.append(";"); //$NON-NLS-1$ return buff.toString(); } return ""; //$NON-NLS-1$ }
private boolean canMoveToInterface(IMember member, boolean is18OrHigher) throws JavaModelException { int flags= member.getFlags(); switch (member.getElementType()) { case IJavaElement.FIELD: if (!(Flags.isStatic(flags) && Flags.isFinal(flags))) return false; if (Flags.isEnum(flags)) return false; VariableDeclarationFragment declaration= ASTNodeSearchUtil.getFieldDeclarationFragmentNode((IField) member, fSource.getRoot()); if (declaration != null) return declaration.getInitializer() != null; return false; case IJavaElement.TYPE: { IType type= (IType) member; if (type.isInterface() && !Checks.isTopLevel(type)) return true; return Flags.isStatic(flags); } case IJavaElement.METHOD: { return is18OrHigher && Flags.isStatic(flags); } default: return false; } }
private boolean canMoveToInterface(IMember member) throws JavaModelException { int flags= member.getFlags(); switch (member.getElementType()) { case IJavaElement.FIELD: if (!(Flags.isPublic(flags) && Flags.isStatic(flags) && Flags.isFinal(flags))) return false; if (Flags.isEnum(flags)) return false; VariableDeclarationFragment declaration= ASTNodeSearchUtil.getFieldDeclarationFragmentNode((IField) member, fSource.getRoot()); if (declaration != null) return declaration.getInitializer() != null; case IJavaElement.TYPE: { IType type= (IType) member; if (type.isInterface() && !Checks.isTopLevel(type)) return true; return (Flags.isPublic(flags) && Flags.isStatic(flags)); } default: return false; } }
private boolean canMoveToInterface(IMember member, boolean is18OrHigher) throws JavaModelException { int flags= member.getFlags(); switch (member.getElementType()) { case IJavaElement.FIELD: if (!(Flags.isStatic(flags) && Flags.isFinal(flags))) return false; if (Flags.isEnum(flags)) return false; VariableDeclarationFragment declaration= ASTNodeSearchUtil.getFieldDeclarationFragmentNode((IField) member, fSource.getRoot()); if (declaration != null) return declaration.getInitializer() != null; return false; case IJavaElement.TYPE: { IType type= (IType) member; if (type.isInterface() && !Checks.isTopLevel(type)) return true; return Flags.isStatic(flags); } case IJavaElement.METHOD: { return is18OrHigher && Flags.isStatic(flags); } default: return false; } }
private RefactoringStatus findDeclaration() throws JavaModelException { fDeclarationSelectedChecked= true; fDeclarationSelected= false; ASTNode parent= fSelectedConstantName.getParent(); if (parent instanceof VariableDeclarationFragment) { VariableDeclarationFragment parentDeclaration= (VariableDeclarationFragment) parent; if (parentDeclaration.getName() == fSelectedConstantName) { fDeclarationSelected= true; fDeclarationCuRewrite= fSelectionCuRewrite; fDeclaration= (VariableDeclarationFragment) fSelectedConstantName.getParent(); return null; } } VariableDeclarationFragment declaration= (VariableDeclarationFragment) fSelectionCuRewrite.getRoot().findDeclaringNode(fSelectedConstantName.resolveBinding()); if (declaration != null) { fDeclarationCuRewrite= fSelectionCuRewrite; fDeclaration= declaration; return null; } if (fField.getCompilationUnit() == null) return RefactoringStatus.createStatus(RefactoringStatus.FATAL, RefactoringCoreMessages.InlineConstantRefactoring_binary_file, null, Corext.getPluginId(), RefactoringStatusCodes.DECLARED_IN_CLASSFILE, null); fDeclarationCuRewrite= new CompilationUnitRewrite(fField.getCompilationUnit()); fDeclaration= ASTNodeSearchUtil.getFieldDeclarationFragmentNode(fField, fDeclarationCuRewrite.getRoot()); return null; }
private RefactoringStatus findDeclaration() throws JavaModelException { fDeclarationSelectedChecked= true; fDeclarationSelected= false; ASTNode parent= fSelectedConstantName.getParent(); if (parent instanceof VariableDeclarationFragment) { VariableDeclarationFragment parentDeclaration= (VariableDeclarationFragment) parent; if (parentDeclaration.getName() == fSelectedConstantName) { fDeclarationSelected= true; fDeclarationCuRewrite= fSelectionCuRewrite; fDeclaration= (VariableDeclarationFragment) fSelectedConstantName.getParent(); return null; } } VariableDeclarationFragment declaration= (VariableDeclarationFragment) fSelectionCuRewrite.getRoot().findDeclaringNode(fSelectedConstantName.resolveBinding()); if (declaration != null) { fDeclarationCuRewrite= fSelectionCuRewrite; fDeclaration= declaration; return null; } if (fField.getCompilationUnit() == null) return RefactoringStatus.createStatus(RefactoringStatus.FATAL, RefactoringCoreMessages.InlineConstantRefactoring_binary_file, null, Corext.getPluginId(), RefactoringStatusCodes.DECLARED_IN_CLASSFILE, null); fDeclarationCuRewrite= new CompilationUnitRewrite(fField.getCompilationUnit()); fDeclaration= ASTNodeSearchUtil.getFieldDeclarationFragmentNode(fField, fDeclarationCuRewrite.getRoot()); return null; }
private RefactoringStatus findDeclaration() throws JavaModelException { fDeclarationSelectedChecked= true; fDeclarationSelected= false; ASTNode parent= fSelectedConstantName.getParent(); if (parent instanceof VariableDeclarationFragment) { VariableDeclarationFragment parentDeclaration= (VariableDeclarationFragment) parent; if (parentDeclaration.getName() == fSelectedConstantName) { fDeclarationSelected= true; fDeclarationCuRewrite= fSelectionCuRewrite; fDeclaration= (VariableDeclarationFragment) fSelectedConstantName.getParent(); return null; } } VariableDeclarationFragment declaration= (VariableDeclarationFragment) fSelectionCuRewrite.getRoot().findDeclaringNode(fSelectedConstantName.resolveBinding()); if (declaration != null) { fDeclarationCuRewrite= fSelectionCuRewrite; fDeclaration= declaration; return null; } if (fField.getCompilationUnit() == null) return RefactoringStatus.createStatus(RefactoringStatus.FATAL, RefactoringCoreMessages.InlineConstantRefactoring_binary_file, null, Corext.getPluginId(), RefactoringStatusCodes.DECLARED_IN_CLASSFILE, null); fDeclarationCuRewrite= new CompilationUnitRewrite(fField.getCompilationUnit()); fDeclaration= ASTNodeSearchUtil.getFieldDeclarationFragmentNode(fField, fDeclarationCuRewrite.getRoot()); return null; }
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); }