Example usage for org.eclipse.jdt.core.dom MethodRef getQualifier

List of usage examples for org.eclipse.jdt.core.dom MethodRef getQualifier

Introduction

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

Prototype

public Name getQualifier() 

Source Link

Document

Returns the qualifier of this method reference, or null if there is none.

Usage

From source file:at.bestsolution.fxide.jdt.corext.dom.ASTFlattener.java

License:Open Source License

@Override
public boolean visit(MethodRef node) {
    if (node.getQualifier() != null) {
        node.getQualifier().accept(this);
    }/*w  w w.  j a v  a  2s .co m*/
    this.fBuffer.append("#");//$NON-NLS-1$
    node.getName().accept(this);
    this.fBuffer.append("(");//$NON-NLS-1$
    for (Iterator<MethodRefParameter> it = node.parameters().iterator(); it.hasNext();) {
        MethodRefParameter e = it.next();
        e.accept(this);
        if (it.hasNext()) {
            this.fBuffer.append(",");//$NON-NLS-1$
        }
    }
    this.fBuffer.append(")");//$NON-NLS-1$
    return false;
}

From source file:at.bestsolution.fxide.jdt.text.javadoc.JavadocContentAccess2.java

License:Open Source License

private void handleLink(List<? extends ASTNode> fragments) {
    //TODO: Javadoc shortens type names to minimal length according to context
    int fs = fragments.size();
    if (fs > 0) {
        Object first = fragments.get(0);
        String refTypeName = null;
        String refMemberName = null;
        String[] refMethodParamTypes = null;
        String[] refMethodParamNames = null;
        if (first instanceof Name) {
            Name name = (Name) first;
            refTypeName = name.getFullyQualifiedName();
        } else if (first instanceof MemberRef) {
            MemberRef memberRef = (MemberRef) first;
            Name qualifier = memberRef.getQualifier();
            refTypeName = qualifier == null ? "" : qualifier.getFullyQualifiedName(); //$NON-NLS-1$
            refMemberName = memberRef.getName().getIdentifier();
        } else if (first instanceof MethodRef) {
            MethodRef methodRef = (MethodRef) first;
            Name qualifier = methodRef.getQualifier();
            refTypeName = qualifier == null ? "" : qualifier.getFullyQualifiedName(); //$NON-NLS-1$
            refMemberName = methodRef.getName().getIdentifier();
            List<MethodRefParameter> params = methodRef.parameters();
            int ps = params.size();
            refMethodParamTypes = new String[ps];
            refMethodParamNames = new String[ps];
            for (int i = 0; i < ps; i++) {
                MethodRefParameter param = params.get(i);
                refMethodParamTypes[i] = ASTNodes.asString(param.getType());
                SimpleName paramName = param.getName();
                if (paramName != null)
                    refMethodParamNames[i] = paramName.getIdentifier();
            }/*  w  w  w.ja  v  a  2s  . c o m*/
        }

        if (refTypeName != null) {
            fBuf.append("<a href='"); //$NON-NLS-1$
            try {
                String scheme = JavaElementLinks.JAVADOC_SCHEME;
                String uri = JavaElementLinks.createURI(scheme, fElement, refTypeName, refMemberName,
                        refMethodParamTypes);
                fBuf.append(uri);
            } catch (URISyntaxException e) {
                //TODO
                e.printStackTrace();
            }
            fBuf.append("'>"); //$NON-NLS-1$
            if (fs > 1 && !(fs == 2 && isWhitespaceTextElement(fragments.get(1)))) {
                handleContentElements(fragments.subList(1, fs), true);
            } else {
                fBuf.append(refTypeName);
                if (refMemberName != null) {
                    if (refTypeName.length() > 0) {
                        fBuf.append('.');
                    }
                    fBuf.append(refMemberName);
                    if (refMethodParamTypes != null) {
                        fBuf.append('(');
                        for (int i = 0; i < refMethodParamTypes.length; i++) {
                            String pType = refMethodParamTypes[i];
                            fBuf.append(pType);
                            String pName = refMethodParamNames[i];
                            if (pName != null) {
                                fBuf.append(' ').append(pName);
                            }
                            if (i < refMethodParamTypes.length - 1) {
                                fBuf.append(", "); //$NON-NLS-1$
                            }
                        }
                        fBuf.append(')');
                    }
                }
            }
            fBuf.append("</a>"); //$NON-NLS-1$
        } else {
            handleContentElements(fragments);
        }
    }
}

From source file:coloredide.utils.CopiedNaiveASTFlattener.java

License:Open Source License

public boolean visit(MethodRef node) {
    if (node.getQualifier() != null) {
        node.getQualifier().accept(this);
    }//from w  ww  . j a  v a  2s.c  o  m
    this.buffer.append("#");//$NON-NLS-1$
    node.getName().accept(this);
    this.buffer.append("(");//$NON-NLS-1$
    for (Iterator it = node.parameters().iterator(); it.hasNext();) {
        MethodRefParameter e = (MethodRefParameter) it.next();
        e.accept(this);
        if (it.hasNext()) {
            this.buffer.append(",");//$NON-NLS-1$
        }
    }
    this.buffer.append(")");//$NON-NLS-1$
    return false;
}

From source file:com.codenvy.ide.ext.java.server.javadoc.JavadocContentAccess2.java

License:Open Source License

private void handleLink(List<? extends ASTNode> fragments) {
    //TODO: Javadoc shortens type names to minimal length according to context
    int fs = fragments.size();
    if (fs > 0) {
        Object first = fragments.get(0);
        String refTypeName = null;
        String refMemberName = null;
        String[] refMethodParamTypes = null;
        String[] refMethodParamNames = null;
        if (first instanceof Name) {
            Name name = (Name) first;
            refTypeName = name.getFullyQualifiedName();
        } else if (first instanceof MemberRef) {
            MemberRef memberRef = (MemberRef) first;
            Name qualifier = memberRef.getQualifier();
            refTypeName = qualifier == null ? "" : qualifier.getFullyQualifiedName(); //$NON-NLS-1$
            refMemberName = memberRef.getName().getIdentifier();
        } else if (first instanceof MethodRef) {
            MethodRef methodRef = (MethodRef) first;
            Name qualifier = methodRef.getQualifier();
            refTypeName = qualifier == null ? "" : qualifier.getFullyQualifiedName(); //$NON-NLS-1$
            refMemberName = methodRef.getName().getIdentifier();
            List<MethodRefParameter> params = methodRef.parameters();
            int ps = params.size();
            refMethodParamTypes = new String[ps];
            refMethodParamNames = new String[ps];
            for (int i = 0; i < ps; i++) {
                MethodRefParameter param = params.get(i);
                refMethodParamTypes[i] = ASTNodes.asString(param.getType());
                SimpleName paramName = param.getName();
                if (paramName != null)
                    refMethodParamNames[i] = paramName.getIdentifier();
            }// w  ww  .jav  a  2 s  .  co  m
        }

        if (refTypeName != null) {
            fBuf.append("<a href='"); //$NON-NLS-1$
            try {
                String scheme = urlPrefix;
                String uri = JavaElementLinks.createURI(scheme, fElement, refTypeName, refMemberName,
                        refMethodParamTypes);
                fBuf.append(uri);
            } catch (URISyntaxException e) {
                LOG.error(e.getMessage(), e);
            }
            fBuf.append("'>"); //$NON-NLS-1$
            if (fs > 1 && !(fs == 2 && isWhitespaceTextElement(fragments.get(1)))) {
                handleContentElements(fragments.subList(1, fs), true);
            } else {
                fBuf.append(refTypeName);
                if (refMemberName != null) {
                    if (refTypeName.length() > 0) {
                        fBuf.append('.');
                    }
                    fBuf.append(refMemberName);
                    if (refMethodParamTypes != null) {
                        fBuf.append('(');
                        for (int i = 0; i < refMethodParamTypes.length; i++) {
                            String pType = refMethodParamTypes[i];
                            fBuf.append(pType);
                            String pName = refMethodParamNames[i];
                            if (pName != null) {
                                fBuf.append(' ').append(pName);
                            }
                            if (i < refMethodParamTypes.length - 1) {
                                fBuf.append(", "); //$NON-NLS-1$
                            }
                        }
                        fBuf.append(')');
                    }
                }
            }
            fBuf.append("</a>"); //$NON-NLS-1$
        } else {
            handleContentElements(fragments);
        }
    }
}

From source file:com.servoy.eclipse.docgenerator.parser.JavadocExtractor.java

License:Open Source License

@Override
public boolean visit(MethodRef node) {
    storeWhitespaceIfAny(node, -1);//from w  ww  .ja  va2  s  . c o  m

    ReferenceMetaModel ref = extractBinding(node.resolveBinding(), node.getQualifier(), node.getName(),
            node.parameters());
    javadocsStack.peek().addPart(ref);

    return false;
}

From source file:de.akra.idocit.java.utils.JavadocUtils.java

License:Apache License

/**
 * Extracts the plain text from the <code>fragments</code>.
 * //from  w  w w  . j ava 2s.  c  om
 * @param fragments
 *            The fragments to read.
 * @param offset
 *            The index at which should be started to read. If the fragments are e.g.
 *            from a "@param" tag, then it is followed by the the variable name which
 *            should be skipped. Therefore the <code>offset</code> should be 1.
 * @return The text from the <code>fragments</code>.
 */
@SuppressWarnings("unchecked")
public static String readFragments(final List<ASTNode> fragments, final int offset) {
    final StringBuffer html = new StringBuffer();

    if (fragments != null && fragments.size() >= offset) {
        for (final ASTNode fragment : fragments.subList(offset, fragments.size())) {
            final StringBuffer tempText = new StringBuffer(fragment.getLength());

            switch (fragment.getNodeType()) {
            case ASTNode.TEXT_ELEMENT: {
                final TextElement textElem = (TextElement) fragment;
                tempText.append(textElem.getText());
                break;
            }
            case ASTNode.SIMPLE_NAME:
            case ASTNode.QUALIFIED_NAME: {
                final Name name = (Name) fragment;
                tempText.append(name.getFullyQualifiedName());
                break;
            }
            case ASTNode.METHOD_REF: {
                final MethodRef mRef = (MethodRef) fragment;
                if (mRef.getQualifier() != null) {
                    final Name qualifier = mRef.getQualifier();
                    tempText.append(qualifier.getFullyQualifiedName());
                }

                tempText.append('#');
                tempText.append(mRef.getName().getIdentifier());
                tempText.append('(');

                // write parameter list
                final List<MethodRefParameter> mRefParameters = (List<MethodRefParameter>) mRef.parameters();
                for (final MethodRefParameter mRefParam : mRefParameters) {
                    tempText.append(ReflectionHelper.extractIdentifierFrom(mRefParam.getType()));
                    if (mRefParam.isVarargs()) {
                        tempText.append("...");
                    }
                    if (mRefParam.getName() != null) {
                        tempText.append(' ');
                        tempText.append(mRefParam.getName().getFullyQualifiedName());
                    }
                    tempText.append(',');
                }
                if (!mRefParameters.isEmpty()) {
                    // remove last comma
                    tempText.deleteCharAt(tempText.length() - 1);
                }

                tempText.append(')');
                break;
            }
            case ASTNode.MEMBER_REF: {
                final MemberRef mRef = (MemberRef) fragment;
                if (mRef.getQualifier() != null) {
                    final Name qualifier = mRef.getQualifier();
                    tempText.append(qualifier.getFullyQualifiedName());
                }
                tempText.append('#');
                tempText.append(mRef.getName().getIdentifier());
                break;
            }
            case ASTNode.TAG_ELEMENT: {
                final TagElement tagElem = (TagElement) fragment;
                if (tagElem.isNested()) {
                    tempText.append('{');
                }

                tempText.append(tagElem.getTagName());
                tempText.append(' ');
                tempText.append(readFragments((List<ASTNode>) tagElem.fragments(), 0));

                if (tagElem.isNested()) {
                    tempText.append('}');
                }
                break;
            }
            default: {
                // Do nothing!
                logger.info("The fragment " + String.valueOf(fragment) + " has nodetype-value "
                        + fragment.getNodeType());
            }
            }
            appendWithSpace(html, tempText);
        }
        // delete leading space, that was added by Javadoc to separate a tag
        // from the following text (e.g. '@param My documentation').
        if (html.length() > 0 && html.charAt(0) == ' ') {
            html.deleteCharAt(0);
        }
    }
    return html.toString();
}

From source file:java5totext.input.JDTVisitor.java

License:Open Source License

@Override
public void endVisit(org.eclipse.jdt.core.dom.MethodRef node) {
    MethodRef element = (MethodRef) this.binding.get(node);
    this.initializeNode(element, node);

    if (this.binding.get(node.getName()) != null)
        element.setMethod((NamedElementRef) this.binding.get(node.getName()));
    if (this.binding.get(node.getQualifier()) != null)
        element.setQualifier((NamedElementRef) this.binding.get(node.getQualifier()));
    for (Iterator<?> i = node.parameters().iterator(); i.hasNext();) {
        MethodRefParameter itElement = (MethodRefParameter) this.binding.get(i.next());
        if (itElement != null)
            element.getParameters().add(itElement);
    }//from   w  w  w  .j  ava2  s  . c om
}

From source file:org.eclipse.emf.texo.generator.ImportReferenceCollector.java

License:Open Source License

@Override
public boolean visit(final MethodRef node) {
    Name qualifier = node.getQualifier();
    if (qualifier != null) {
        typeRefFound(qualifier);/*from  w  w w . ja va 2  s.  c  om*/
    }
    List<?> list = node.parameters();
    if (list != null) {
        doVisitChildren(list); // visit MethodRefParameter with Type
    }
    return false;
}

From source file:org.eclipse.jdt.core.dom.ASTConverter.java

License:Open Source License

protected void recordNodes(org.eclipse.jdt.internal.compiler.ast.Javadoc javadoc, TagElement tagElement) {
    Iterator fragments = tagElement.fragments().listIterator();
    while (fragments.hasNext()) {
        ASTNode node = (ASTNode) fragments.next();
        if (node.getNodeType() == ASTNode.MEMBER_REF) {
            MemberRef memberRef = (MemberRef) node;
            Name name = memberRef.getName();
            // get compiler node and record nodes
            int start = name.getStartPosition();
            org.eclipse.jdt.internal.compiler.ast.ASTNode compilerNode = javadoc.getNodeStartingAt(start);
            if (compilerNode != null) {
                recordNodes(name, compilerNode);
                recordNodes(node, compilerNode);
            }/* w ww.  j  av  a  2  s  .co  m*/
            // Replace qualifier to have all nodes recorded
            if (memberRef.getQualifier() != null) {
                org.eclipse.jdt.internal.compiler.ast.TypeReference typeRef = null;
                if (compilerNode instanceof JavadocFieldReference) {
                    org.eclipse.jdt.internal.compiler.ast.Expression expression = ((JavadocFieldReference) compilerNode).receiver;
                    if (expression instanceof org.eclipse.jdt.internal.compiler.ast.TypeReference) {
                        typeRef = (org.eclipse.jdt.internal.compiler.ast.TypeReference) expression;
                    }
                } else if (compilerNode instanceof JavadocMessageSend) {
                    org.eclipse.jdt.internal.compiler.ast.Expression expression = ((JavadocMessageSend) compilerNode).receiver;
                    if (expression instanceof org.eclipse.jdt.internal.compiler.ast.TypeReference) {
                        typeRef = (org.eclipse.jdt.internal.compiler.ast.TypeReference) expression;
                    }
                }
                if (typeRef != null) {
                    recordName(memberRef.getQualifier(), typeRef);
                }
            }
        } else if (node.getNodeType() == ASTNode.METHOD_REF) {
            MethodRef methodRef = (MethodRef) node;
            Name name = methodRef.getName();
            // get method name start position
            int start = methodRef.getStartPosition();
            this.scanner.resetTo(start, start + name.getStartPosition() + name.getLength());
            int token;
            try {
                nextToken: while ((token = this.scanner.getNextToken()) != TerminalTokens.TokenNameEOF
                        && token != TerminalTokens.TokenNameLPAREN) {
                    if (token == TerminalTokens.TokenNameERROR && this.scanner.currentCharacter == '#') {
                        start = this.scanner.getCurrentTokenEndPosition() + 1;
                        break nextToken;
                    }
                }
            } catch (InvalidInputException e) {
                // ignore
            }
            // get compiler node and record nodes
            org.eclipse.jdt.internal.compiler.ast.ASTNode compilerNode = javadoc.getNodeStartingAt(start);
            // record nodes
            if (compilerNode != null) {
                recordNodes(methodRef, compilerNode);
                // get type ref
                org.eclipse.jdt.internal.compiler.ast.TypeReference typeRef = null;
                if (compilerNode instanceof org.eclipse.jdt.internal.compiler.ast.JavadocAllocationExpression) {
                    typeRef = ((org.eclipse.jdt.internal.compiler.ast.JavadocAllocationExpression) compilerNode).type;
                    if (typeRef != null)
                        recordNodes(name, compilerNode);
                } else if (compilerNode instanceof org.eclipse.jdt.internal.compiler.ast.JavadocMessageSend) {
                    org.eclipse.jdt.internal.compiler.ast.Expression expression = ((org.eclipse.jdt.internal.compiler.ast.JavadocMessageSend) compilerNode).receiver;
                    if (expression instanceof org.eclipse.jdt.internal.compiler.ast.TypeReference) {
                        typeRef = (org.eclipse.jdt.internal.compiler.ast.TypeReference) expression;
                    }
                    recordNodes(name, compilerNode);
                }
                // record name and qualifier
                if (typeRef != null && methodRef.getQualifier() != null) {
                    recordName(methodRef.getQualifier(), typeRef);
                }
            }
            // Resolve parameters
            Iterator parameters = methodRef.parameters().listIterator();
            while (parameters.hasNext()) {
                MethodRefParameter param = (MethodRefParameter) parameters.next();
                org.eclipse.jdt.internal.compiler.ast.Expression expression = (org.eclipse.jdt.internal.compiler.ast.Expression) javadoc
                        .getNodeStartingAt(param.getStartPosition());
                if (expression != null) {
                    recordNodes(param, expression);
                    if (expression instanceof JavadocArgumentExpression) {
                        JavadocArgumentExpression argExpr = (JavadocArgumentExpression) expression;
                        org.eclipse.jdt.internal.compiler.ast.TypeReference typeRef = argExpr.argument.type;
                        if (this.ast.apiLevel >= AST.JLS3) {
                            param.setVarargs(argExpr.argument.isVarArgs());
                        }
                        recordNodes(param.getType(), typeRef);
                        if (param.getType().isSimpleType()) {
                            recordName(((SimpleType) param.getType()).getName(), typeRef);
                        } else if (param.getType().isArrayType()) {
                            Type type = ((ArrayType) param.getType()).getElementType();
                            recordNodes(type, typeRef);
                            if (type.isSimpleType()) {
                                recordName(((SimpleType) type).getName(), typeRef);
                            }
                        }
                    }
                }
            }
        } else if (node.getNodeType() == ASTNode.SIMPLE_NAME || node.getNodeType() == ASTNode.QUALIFIED_NAME) {
            org.eclipse.jdt.internal.compiler.ast.ASTNode compilerNode = javadoc
                    .getNodeStartingAt(node.getStartPosition());
            recordName((Name) node, compilerNode);
        } else if (node.getNodeType() == ASTNode.TAG_ELEMENT) {
            // resolve member and method references binding
            recordNodes(javadoc, (TagElement) node);
        }
    }
}

From source file:org.eclipse.modisco.java.discoverer.internal.io.java.JDTVisitor.java

License:Open Source License

@Override
public void endVisit(final org.eclipse.jdt.core.dom.MethodRef node) {
    MethodRef element = (MethodRef) this.binding.get(node);
    initializeNode(element, node);/*  ww  w.  j  a  v  a  2  s  .  c o  m*/

    ASTNode modiscoNode = this.binding.get(node.getName());
    if (JDTVisitorUtils.completeBinding(element, modiscoNode, "method")) { //$NON-NLS-1$
        element.setMethod((AbstractMethodDeclaration) modiscoNode);
    }

    if (this.binding.get(node.getQualifier()) != null) {
        element.setQualifier(JDTVisitorUtils.completeTypeAccess(this.binding.get(node.getQualifier()), this));
    }

    for (Iterator<?> i = node.parameters().iterator(); i.hasNext();) {
        MethodRefParameter itElement = (MethodRefParameter) this.binding.get(i.next());
        if (itElement != null) {
            element.getParameters().add(itElement);
        }
    }
}