Example usage for org.eclipse.jdt.core.dom NodeFinder getCoveredNode

List of usage examples for org.eclipse.jdt.core.dom NodeFinder getCoveredNode

Introduction

In this page you can find the example usage for org.eclipse.jdt.core.dom NodeFinder getCoveredNode.

Prototype

public ASTNode getCoveredNode() 

Source Link

Document

If the AST contains nodes whose range is equal to the selection, returns the innermost of those nodes.

Usage

From source file:ca.uvic.chisel.diver.sequencediagrams.sc.java.model.ASTUTils.java

License:Open Source License

public static MethodDeclaration findMethodDeclaration(ASTNode rootNode, IMethod method) {
    if (rootNode != null) {
        ISourceRange range;/* w w w.j ava  2  s. c o  m*/
        try {
            range = method.getSourceRange();
            NodeFinder finder = new NodeFinder(range.getOffset(), range.getLength());
            rootNode.accept(finder);
            return (MethodDeclaration) finder.getCoveredNode();
        } catch (JavaModelException e) {
        }
    }
    return null;
}

From source file:ca.uvic.chisel.javasketch.internal.ast.ASTUTils.java

License:Open Source License

public static MethodDeclaration findMethodDeclaration(ASTNode rootNode, IMethod method) {
    if (rootNode != null) {
        ISourceRange range;/* ww w .  ja v a 2s .  co  m*/
        try {
            if (!method.getOpenable().isOpen()) {
                method.getOpenable().open(new NullProgressMonitor());
            }
            range = method.getSourceRange();
            NodeFinder finder = new NodeFinder(rootNode, range.getOffset(), range.getLength());
            ASTNode node = finder.getCoveredNode();
            if (node instanceof MethodDeclaration) {
                return (MethodDeclaration) node;
            } else {
                return null;
            }
        } catch (JavaModelException e) {
            SketchPlugin.getDefault().log(e);
        }
    }
    return null;
}

From source file:org.autorefactor.refactoring.rules.CommentsRefactoring.java

License:Open Source License

private ASTNode getNextNode(Comment node) {
    final int nodeEndPosition = node.getStartPosition() + node.getLength();
    final ASTNode coveringNode = getCoveringNode(node);
    final int parentNodeEndPosition = coveringNode.getStartPosition() + coveringNode.getLength();
    final NodeFinder finder = new NodeFinder(coveringNode, nodeEndPosition,
            parentNodeEndPosition - nodeEndPosition);
    if (node instanceof Javadoc) {
        return finder.getCoveringNode();
    }//from  w  w  w .  ja v a 2  s . co  m
    return finder.getCoveredNode();
}

From source file:org.eclim.plugin.jdt.command.correct.ProblemLocation.java

License:Open Source License

/**
 * {@inheritDoc}/*w  ww.j a  va 2  s.co m*/
 */
public ASTNode getCoveredNode(CompilationUnit astRoot) {
    NodeFinder finder = new NodeFinder(astRoot, offset, length);
    return finder.getCoveredNode();
}

From source file:org.eclipse.ajdt.internal.ui.refactoring.pullout.PullOutRefactoring.java

License:Open Source License

/**
 * Find AST node corresponding to a given IMember.
 *//* w  w  w .  j a  v a  2s  .  c  o m*/
private ASTNode findASTNode(ASTNode cuNode, IMember member) throws JavaModelException {
    ISourceRange range = member.getSourceRange();
    NodeFinder finder = new NodeFinder(cuNode, range.getOffset(), range.getLength());
    return finder.getCoveredNode();
    // Note: why we *have* to use getCoveredNode explicitly rather than use the
    // perform methods defined on NodeFinder.
    // See BUG 316945: Normally, we have exact positions and covering/covered are the same node.
    // but in the BUG case we should use the covered node since a JDT bug makes the source range 
    // be too large.
}

From source file:org.eclipse.objectteams.otdt.internal.refactoring.otrefactorings.rolefile.MoveToRoleFileRefactoring.java

License:Open Source License

private ASTNode findDeclaration(CompilationUnit unit, ISourceReference source) throws JavaModelException {
    ISourceRange range = source.getSourceRange();
    NodeFinder finder = new NodeFinder(unit, range.getOffset(), range.getLength());
    return finder.getCoveredNode();
}

From source file:org.jboss.tools.ws.jaxrs.core.jdt.JdtUtils.java

License:Open Source License

/**
 * Finds the declaring {@link ASTNode} for the given {@link IMember}, using
 * the {@link NodeFinder} if the member was not resolved.
 * /* ww w . j a va2 s.co  m*/
 * @param member
 *            the member to find
 * @param ast
 *            the Compilation Unit
 * @return the associated declaring node
 * @throws JavaModelException
 */
private static ASTNode findDeclaringNode(final IMember member, final CompilationUnit ast)
        throws JavaModelException {
    switch (member.getElementType()) {
    case IJavaElement.TYPE:
        final IType type = (IType) member;
        if (type.isResolved()) {
            final ASTNode typeNode = ast.findDeclaringNode(type.getKey());
            // return if match found
            if (typeNode != null) {
                return typeNode;
            }
        }
        break;
    case IJavaElement.METHOD:
        final IMethod method = (IMethod) member;
        if (method.isResolved()) {
            final ASTNode methodNode = ast.findDeclaringNode(method.getKey());
            // return if match found
            if (methodNode != null) {
                return methodNode;
            }
        }
        break;
    case IJavaElement.FIELD:
        final IField field = (IField) member;
        if (field.isResolved()) {
            // in the case of a Field, the
            // CompilationUnit#findDeclaringNode(String key) method returns
            // a VariableDeclarationFragment in a FieldDeclaration
            final ASTNode variableDeclarationFragment = ast.findDeclaringNode(field.getKey());
            if (variableDeclarationFragment != null) {
                final ASTNode fieldNode = variableDeclarationFragment.getParent();
                if (fieldNode != null) {
                    // return if match found
                    return fieldNode;
                }
            }
        }
        break;
    default:
    }
    // fallback approach if everything above failed.
    final NodeFinder finder = new NodeFinder(ast, member.getSourceRange().getOffset(),
            member.getSourceRange().getLength());
    return finder.getCoveredNode();
}