当前位置: 首页>>代码示例>>Java>>正文


Java ASTNodeSearchUtil.getMethodDeclarationNode方法代码示例

本文整理汇总了Java中org.eclipse.jdt.internal.corext.refactoring.structure.ASTNodeSearchUtil.getMethodDeclarationNode方法的典型用法代码示例。如果您正苦于以下问题:Java ASTNodeSearchUtil.getMethodDeclarationNode方法的具体用法?Java ASTNodeSearchUtil.getMethodDeclarationNode怎么用?Java ASTNodeSearchUtil.getMethodDeclarationNode使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.eclipse.jdt.internal.corext.refactoring.structure.ASTNodeSearchUtil的用法示例。


在下文中一共展示了ASTNodeSearchUtil.getMethodDeclarationNode方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: getEnhancedForStatements

import org.eclipse.jdt.internal.corext.refactoring.structure.ASTNodeSearchUtil; //导入方法依赖的package包/类
private static Set<EnhancedForStatement> getEnhancedForStatements(IMethod method, IProgressMonitor pm)
		throws JavaModelException {
	ICompilationUnit iCompilationUnit = method.getCompilationUnit();

	// get the ASTParser of the method
	CompilationUnit compilationUnit = RefactoringASTParser.parseWithASTProvider(iCompilationUnit, true,
			new SubProgressMonitor(pm, 1));

	// get the method declaration ASTNode.
	MethodDeclaration methodDeclarationNode = ASTNodeSearchUtil.getMethodDeclarationNode(method, compilationUnit);

	final Set<EnhancedForStatement> statements = new LinkedHashSet<EnhancedForStatement>();
	// extract all enhanced for loop statements in the method.
	methodDeclarationNode.accept(new ASTVisitor() {

		@Override
		public boolean visit(EnhancedForStatement node) {
			statements.add(node);
			return super.visit(node);
		}
	});

	return statements;
}
 
开发者ID:mdarefin,项目名称:Convert-For-Each-Loop-to-Lambda-Expression-Eclipse-Plugin,代码行数:25,代码来源:ForeachLoopToLambdaRefactoring.java

示例2: getRealMethodDeclarationNode

import org.eclipse.jdt.internal.corext.refactoring.structure.ASTNodeSearchUtil; //导入方法依赖的package包/类
public static org.eclipse.jdt.core.dom.MethodDeclaration getRealMethodDeclarationNode(org.eclipse.jdt.core.IMethod sourceMethod, org.eclipse.jdt.core.dom.CompilationUnit cuUnit) throws JavaModelException {
	MethodDeclaration methodDeclarationNode = ASTNodeSearchUtil.getMethodDeclarationNode(sourceMethod, cuUnit);
	if (isGenerated(methodDeclarationNode)) {
		IType declaringType = sourceMethod.getDeclaringType();
		Stack<IType> typeStack = new Stack<IType>();
		while (declaringType != null) {
			typeStack.push(declaringType);
			declaringType = declaringType.getDeclaringType();
		}
		
		IType rootType = typeStack.pop();
		org.eclipse.jdt.core.dom.AbstractTypeDeclaration typeDeclaration = findTypeDeclaration(rootType, cuUnit.types());
		while (!typeStack.isEmpty() && typeDeclaration != null) {
			typeDeclaration = findTypeDeclaration(typeStack.pop(), typeDeclaration.bodyDeclarations());
		}
		
		if (typeStack.isEmpty() && typeDeclaration != null) {
			String methodName = sourceMethod.getElementName();
			for (Object declaration : typeDeclaration.bodyDeclarations()) {
				if (declaration instanceof org.eclipse.jdt.core.dom.MethodDeclaration) {
					org.eclipse.jdt.core.dom.MethodDeclaration methodDeclaration = (org.eclipse.jdt.core.dom.MethodDeclaration) declaration;
					if (methodDeclaration.getName().toString().equals(methodName)) {
						return methodDeclaration;
					}
				}
			}
		}
	}
	return methodDeclarationNode;
}
 
开发者ID:git03394538,项目名称:lombok-ianchiu,代码行数:31,代码来源:PatchFixesHider.java

示例3: getMethodDeclaration

import org.eclipse.jdt.internal.corext.refactoring.structure.ASTNodeSearchUtil; //导入方法依赖的package包/类
private MethodDeclaration getMethodDeclaration(IMethod method, Optional<IProgressMonitor> pm)
		throws JavaModelException {
	ITypeRoot root = method.getCompilationUnit();
	CompilationUnit unit = this.getCompilationUnit(root,
			new SubProgressMonitor(pm.orElseGet(NullProgressMonitor::new), IProgressMonitor.UNKNOWN));
	MethodDeclaration declaration = ASTNodeSearchUtil.getMethodDeclarationNode(method, unit);
	return declaration;
}
 
开发者ID:ponder-lab,项目名称:Migrate-Skeletal-Implementation-to-Interface-Refactoring,代码行数:9,代码来源:MigrateSkeletalImplementationToInterfaceRefactoringProcessor.java

示例4: resolveMethodBinding

import org.eclipse.jdt.internal.corext.refactoring.structure.ASTNodeSearchUtil; //导入方法依赖的package包/类
private IMethodBinding resolveMethodBinding(IMethod method, Optional<IProgressMonitor> monitor)
		throws JavaModelException {
	MethodDeclaration methodDeclarationNode = ASTNodeSearchUtil.getMethodDeclarationNode(method,
			getCompilationUnit(method.getTypeRoot(),
					new SubProgressMonitor(monitor.orElseGet(NullProgressMonitor::new), IProgressMonitor.UNKNOWN)));

	if (methodDeclarationNode != null)
		return methodDeclarationNode.resolveBinding();
	else
		return null;
}
 
开发者ID:ponder-lab,项目名称:Migrate-Skeletal-Implementation-to-Interface-Refactoring,代码行数:12,代码来源:MigrateSkeletalImplementationToInterfaceRefactoringProcessor.java

示例5: resolveReturnTypeBinding

import org.eclipse.jdt.internal.corext.refactoring.structure.ASTNodeSearchUtil; //导入方法依赖的package包/类
private ITypeBinding resolveReturnTypeBinding(IMethod method, Optional<IProgressMonitor> monitor)
		throws JavaModelException {
	MethodDeclaration methodDeclarationNode = ASTNodeSearchUtil.getMethodDeclarationNode(method,
			getCompilationUnit(method.getTypeRoot(),
					new SubProgressMonitor(monitor.orElseGet(NullProgressMonitor::new), IProgressMonitor.UNKNOWN)));

	if (methodDeclarationNode != null) {
		Type returnType = methodDeclarationNode.getReturnType2();
		return returnType.resolveBinding();
	} else
		return null;
}
 
开发者ID:ponder-lab,项目名称:Migrate-Skeletal-Implementation-to-Interface-Refactoring,代码行数:13,代码来源:MigrateSkeletalImplementationToInterfaceRefactoringProcessor.java

示例6: addDeclarationUpdate

import org.eclipse.jdt.internal.corext.refactoring.structure.ASTNodeSearchUtil; //导入方法依赖的package包/类
private void addDeclarationUpdate(TextChangeManager manager) throws CoreException {

    if (getDelegateUpdating()) {
      // create the delegate
      CompilationUnitRewrite rewrite = new CompilationUnitRewrite(getDeclaringCU());
      rewrite.setResolveBindings(true);
      MethodDeclaration methodDeclaration =
          ASTNodeSearchUtil.getMethodDeclarationNode(getMethod(), rewrite.getRoot());
      DelegateMethodCreator creator = new DelegateMethodCreator();
      creator.setDeclaration(methodDeclaration);
      creator.setDeclareDeprecated(getDeprecateDelegates());
      creator.setSourceRewrite(rewrite);
      creator.setCopy(true);
      creator.setNewElementName(getNewElementName());
      creator.prepareDelegate();
      creator.createEdit();
      CompilationUnitChange cuChange = rewrite.createChange(true);
      if (cuChange != null) {
        cuChange.setKeepPreviewEdits(true);
        manager.manage(getDeclaringCU(), cuChange);
      }
    }

    String editName = RefactoringCoreMessages.RenameMethodRefactoring_update_declaration;
    ISourceRange nameRange = getMethod().getNameRange();
    ReplaceEdit replaceEdit =
        new ReplaceEdit(nameRange.getOffset(), nameRange.getLength(), getNewElementName());
    addTextEdit(manager.get(getDeclaringCU()), editName, replaceEdit);
  }
 
开发者ID:eclipse,项目名称:che,代码行数:30,代码来源:RenameNonVirtualMethodProcessor.java

示例7: addMethodDelegate

import org.eclipse.jdt.internal.corext.refactoring.structure.ASTNodeSearchUtil; //导入方法依赖的package包/类
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();
}
 
开发者ID:eclipse,项目名称:che,代码行数:13,代码来源:RenameFieldProcessor.java

示例8: createRenameChanges

import org.eclipse.jdt.internal.corext.refactoring.structure.ASTNodeSearchUtil; //导入方法依赖的package包/类
/**
 * Creates the necessary changes for the renaming of the type parameter.
 *
 * @param monitor the progress monitor to display progress
 * @return the status of the operation
 * @throws CoreException if the change could not be generated
 */
private RefactoringStatus createRenameChanges(IProgressMonitor monitor) throws CoreException {
  Assert.isNotNull(monitor);
  RefactoringStatus status = new RefactoringStatus();
  try {
    monitor.beginTask(RefactoringCoreMessages.RenameTypeParameterRefactoring_searching, 2);
    ICompilationUnit cu = fTypeParameter.getDeclaringMember().getCompilationUnit();
    CompilationUnit root = RefactoringASTParser.parseWithASTProvider(cu, true, null);
    CompilationUnitRewrite rewrite = new CompilationUnitRewrite(cu, root);
    IMember member = fTypeParameter.getDeclaringMember();
    ASTNode declaration = null;
    if (member instanceof IMethod) {
      declaration = ASTNodeSearchUtil.getMethodDeclarationNode((IMethod) member, root);
    } else if (member instanceof IType) {
      declaration = ASTNodeSearchUtil.getAbstractTypeDeclarationNode((IType) member, root);
    } else {
      JavaPlugin.logErrorMessage(
          "Unexpected sub-type of IMember: " + member.getClass().getName()); // $NON-NLS-1$
      Assert.isTrue(false);
    }
    monitor.worked(1);
    RenameTypeParameterVisitor visitor =
        new RenameTypeParameterVisitor(rewrite, fTypeParameter.getNameRange(), status);
    if (declaration != null) declaration.accept(visitor);
    fChange = visitor.getResult();
  } finally {
    monitor.done();
  }
  return status;
}
 
开发者ID:eclipse,项目名称:che,代码行数:37,代码来源:RenameTypeParameterProcessor.java

示例9: checkMethodBody

import org.eclipse.jdt.internal.corext.refactoring.structure.ASTNodeSearchUtil; //导入方法依赖的package包/类
protected static RefactoringStatus checkMethodBody(IMethod method, IProgressMonitor pm) {
	RefactoringStatus status = new RefactoringStatus();

	ITypeRoot root = method.getCompilationUnit();
	CompilationUnit unit = RefactoringASTParser.parseWithASTProvider(root, false, new SubProgressMonitor(pm, 1));

	MethodDeclaration declaration;
	try {
		declaration = ASTNodeSearchUtil.getMethodDeclarationNode(method, unit);
		if (declaration != null) {
			Block body = declaration.getBody();

			if (body != null) {
				@SuppressWarnings("rawtypes")
				List statements = body.statements();

				if (!statements.isEmpty()) {
					// TODO for now.
					addWarning(status, Messages.ForEachLoopToLambdaRefactoring_NoMethodsWithStatements, method);
				}
			}
		}
	} catch (JavaModelException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}

	return status;
}
 
开发者ID:mdarefin,项目名称:Convert-For-Each-Loop-to-Lambda-Expression-Eclipse-Plugin,代码行数:30,代码来源:ForeachLoopToLambdaRefactoring.java

示例10: addDeclarationUpdate

import org.eclipse.jdt.internal.corext.refactoring.structure.ASTNodeSearchUtil; //导入方法依赖的package包/类
private void addDeclarationUpdate(TextChangeManager manager) throws CoreException {

		if (getDelegateUpdating()) {
			// create the delegate
			CompilationUnitRewrite rewrite= new CompilationUnitRewrite(getDeclaringCU());
			rewrite.setResolveBindings(true);
			MethodDeclaration methodDeclaration= ASTNodeSearchUtil.getMethodDeclarationNode(getMethod(), rewrite.getRoot());
			DelegateMethodCreator creator= new DelegateMethodCreator();
			creator.setDeclaration(methodDeclaration);
			creator.setDeclareDeprecated(getDeprecateDelegates());
			creator.setSourceRewrite(rewrite);
			creator.setCopy(true);
			creator.setNewElementName(getNewElementName());
			creator.prepareDelegate();
			creator.createEdit();
			CompilationUnitChange cuChange= rewrite.createChange(true);
			if (cuChange != null) {
				cuChange.setKeepPreviewEdits(true);
				manager.manage(getDeclaringCU(), cuChange);
			}
		}

		String editName= RefactoringCoreMessages.RenameMethodRefactoring_update_declaration;
		ISourceRange nameRange= getMethod().getNameRange();
		ReplaceEdit replaceEdit= new ReplaceEdit(nameRange.getOffset(), nameRange.getLength(), getNewElementName());
		addTextEdit(manager.get(getDeclaringCU()), editName, replaceEdit);
	}
 
开发者ID:trylimits,项目名称:Eclipse-Postfix-Code-Completion,代码行数:28,代码来源:RenameNonVirtualMethodProcessor.java

示例11: addMethodDelegate

import org.eclipse.jdt.internal.corext.refactoring.structure.ASTNodeSearchUtil; //导入方法依赖的package包/类
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();
}
 
开发者ID:trylimits,项目名称:Eclipse-Postfix-Code-Completion,代码行数:11,代码来源:RenameFieldProcessor.java

示例12: createRenameChanges

import org.eclipse.jdt.internal.corext.refactoring.structure.ASTNodeSearchUtil; //导入方法依赖的package包/类
/**
 * Creates the necessary changes for the renaming of the type parameter.
 *
 * @param monitor
 *            the progress monitor to display progress
 * @return the status of the operation
 * @throws CoreException
 *             if the change could not be generated
 */
private RefactoringStatus createRenameChanges(IProgressMonitor monitor) throws CoreException {
	Assert.isNotNull(monitor);
	RefactoringStatus status= new RefactoringStatus();
	try {
		monitor.beginTask(RefactoringCoreMessages.RenameTypeParameterRefactoring_searching, 2);
		ICompilationUnit cu= fTypeParameter.getDeclaringMember().getCompilationUnit();
		CompilationUnit root= RefactoringASTParser.parseWithASTProvider(cu, true, null);
		CompilationUnitRewrite rewrite= new CompilationUnitRewrite(cu, root);
		IMember member= fTypeParameter.getDeclaringMember();
		ASTNode declaration= null;
		if (member instanceof IMethod) {
			declaration= ASTNodeSearchUtil.getMethodDeclarationNode((IMethod) member, root);
		} else if (member instanceof IType) {
			declaration= ASTNodeSearchUtil.getAbstractTypeDeclarationNode((IType) member, root);
		} else {
			JavaPlugin.logErrorMessage("Unexpected sub-type of IMember: " + member.getClass().getName()); //$NON-NLS-1$
			Assert.isTrue(false);
		}
		monitor.worked(1);
		RenameTypeParameterVisitor visitor= new RenameTypeParameterVisitor(rewrite, fTypeParameter.getNameRange(), status);
		if (declaration != null)
			declaration.accept(visitor);
		fChange= visitor.getResult();
	} finally {
		monitor.done();
	}
	return status;
}
 
开发者ID:trylimits,项目名称:Eclipse-Postfix-Code-Completion,代码行数:38,代码来源:RenameTypeParameterProcessor.java

示例13: getRealMethodDeclarationNode

import org.eclipse.jdt.internal.corext.refactoring.structure.ASTNodeSearchUtil; //导入方法依赖的package包/类
public static org.eclipse.jdt.core.dom.MethodDeclaration getRealMethodDeclarationNode(org.eclipse.jdt.core.IMethod sourceMethod, org.eclipse.jdt.core.dom.CompilationUnit cuUnit) throws JavaModelException {
	MethodDeclaration methodDeclarationNode = ASTNodeSearchUtil.getMethodDeclarationNode(sourceMethod, cuUnit);
	if (isGenerated(methodDeclarationNode)) {
		IType declaringType = sourceMethod.getDeclaringType();
		Stack<IType> typeStack = new Stack<IType>();
		while (declaringType != null) {
			typeStack.push(declaringType);
			declaringType = declaringType.getDeclaringType();
		}
		
		IType rootType = typeStack.pop();
		org.eclipse.jdt.core.dom.AbstractTypeDeclaration typeDeclaration = findTypeDeclaration(rootType, cuUnit.types());
		while (!typeStack.isEmpty() && typeDeclaration != null) {
			typeDeclaration = findTypeDeclaration(typeStack.pop(), typeDeclaration.bodyDeclarations());
		}

		if (typeStack.isEmpty() && typeDeclaration != null) {
			String methodName = sourceMethod.getElementName();
			for (Object declaration : typeDeclaration.bodyDeclarations()) {
				if (declaration instanceof org.eclipse.jdt.core.dom.MethodDeclaration) {
					org.eclipse.jdt.core.dom.MethodDeclaration methodDeclaration = (org.eclipse.jdt.core.dom.MethodDeclaration) declaration;
					if (methodDeclaration.getName().toString().equals(methodName)) {
						return methodDeclaration;
					}
				}
			}
		}
	}
	return methodDeclarationNode;
}
 
开发者ID:redundent,项目名称:lombok,代码行数:31,代码来源:PatchFixes.java


注:本文中的org.eclipse.jdt.internal.corext.refactoring.structure.ASTNodeSearchUtil.getMethodDeclarationNode方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。