Example usage for org.eclipse.jdt.core.dom MethodDeclaration getReturnType2

List of usage examples for org.eclipse.jdt.core.dom MethodDeclaration getReturnType2

Introduction

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

Prototype

public Type getReturnType2() 

Source Link

Document

Returns the return type of the method declared in this method declaration, exclusive of any extra array dimensions (added in JLS3 API).

Usage

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

License:Open Source License

@Override
public boolean visit(MethodDeclaration node) {
    if (node.getJavadoc() != null) {
        node.getJavadoc().accept(this);
    }//from   w  ww.  j av  a 2  s  .c om
    if (node.getAST().apiLevel() >= JLS3) {
        printModifiers(node.modifiers());
        if (!node.typeParameters().isEmpty()) {
            this.fBuffer.append("<");//$NON-NLS-1$
            for (Iterator<TypeParameter> it = node.typeParameters().iterator(); it.hasNext();) {
                TypeParameter t = it.next();
                t.accept(this);
                if (it.hasNext()) {
                    this.fBuffer.append(", ");//$NON-NLS-1$
                }
            }
            this.fBuffer.append("> ");//$NON-NLS-1$
        }
    }
    if (!node.isConstructor()) {
        if (node.getReturnType2() != null) {
            node.getReturnType2().accept(this);
        } else {
            // methods really ought to have a return type
            this.fBuffer.append("void");//$NON-NLS-1$
        }
        this.fBuffer.append(" ");//$NON-NLS-1$
    }
    node.getName().accept(this);
    this.fBuffer.append("(");//$NON-NLS-1$
    if (node.getAST().apiLevel() >= AST.JLS8) {
        Type receiverType = node.getReceiverType();
        if (receiverType != null) {
            receiverType.accept(this);
            this.fBuffer.append(' ');
            SimpleName qualifier = node.getReceiverQualifier();
            if (qualifier != null) {
                qualifier.accept(this);
                this.fBuffer.append('.');
            }
            this.fBuffer.append("this"); //$NON-NLS-1$
            if (node.parameters().size() > 0) {
                this.fBuffer.append(',');
            }
        }
    }
    for (Iterator<SingleVariableDeclaration> it = node.parameters().iterator(); it.hasNext();) {
        SingleVariableDeclaration v = it.next();
        v.accept(this);
        if (it.hasNext()) {
            this.fBuffer.append(", ");//$NON-NLS-1$
        }
    }
    this.fBuffer.append(")");//$NON-NLS-1$
    if (node.getAST().apiLevel() >= AST.JLS8) {
        List<Dimension> dimensions = node.extraDimensions();
        for (Iterator<Dimension> it = dimensions.iterator(); it.hasNext();) {
            Dimension e = it.next();
            e.accept(this);
        }
    } else {
        for (int i = 0; i < node.getExtraDimensions(); i++) {
            this.fBuffer.append("[]"); //$NON-NLS-1$
        }
    }
    List<? extends ASTNode> thrownExceptions = node.getAST().apiLevel() >= AST.JLS8
            ? node.thrownExceptionTypes()
            : getThrownExceptions(node);
    if (!thrownExceptions.isEmpty()) {
        this.fBuffer.append(" throws ");//$NON-NLS-1$
        for (Iterator<? extends ASTNode> it = thrownExceptions.iterator(); it.hasNext();) {
            ASTNode n = it.next();
            n.accept(this);
            if (it.hasNext()) {
                this.fBuffer.append(", ");//$NON-NLS-1$
            }
        }
        this.fBuffer.append(" ");//$NON-NLS-1$
    }
    if (node.getBody() == null) {
        this.fBuffer.append(";");//$NON-NLS-1$
    } else {
        node.getBody().accept(this);
    }
    return false;
}

From source file:boa.datagen.util.Java7Visitor.java

License:Apache License

@Override
public boolean visit(MethodDeclaration node) {
    List<boa.types.Ast.Method> list = methods.peek();
    Method.Builder b = Method.newBuilder();
    //      b.setPosition(pos.build());
    if (node.isConstructor())
        b.setName("<init>");
    else/*from  w  w w.j a va 2  s. c  o m*/
        b.setName(node.getName().getFullyQualifiedName());
    for (Object m : node.modifiers()) {
        if (((IExtendedModifier) m).isAnnotation())
            ((Annotation) m).accept(this);
        else
            ((org.eclipse.jdt.core.dom.Modifier) m).accept(this);
        b.addModifiers(modifiers.pop());
    }
    boa.types.Ast.Type.Builder tb = boa.types.Ast.Type.newBuilder();
    if (node.getReturnType2() != null) {
        String name = typeName(node.getReturnType2());
        for (int i = 0; i < node.getExtraDimensions(); i++)
            name += "[]";
        tb.setName(getIndex(name));
        tb.setKind(boa.types.Ast.TypeKind.OTHER);
        b.setReturnType(tb.build());
    } else {
        tb.setName(getIndex("void"));
        tb.setKind(boa.types.Ast.TypeKind.OTHER);
        b.setReturnType(tb.build());
    }
    for (Object t : node.typeParameters()) {
        boa.types.Ast.Type.Builder tp = boa.types.Ast.Type.newBuilder();
        String name = ((TypeParameter) t).getName().getFullyQualifiedName();
        String bounds = "";
        for (Object o : ((TypeParameter) t).typeBounds()) {
            if (bounds.length() > 0)
                bounds += " & ";
            bounds += typeName((org.eclipse.jdt.core.dom.Type) o);
        }
        if (bounds.length() > 0)
            name = name + " extends " + bounds;
        tp.setName(getIndex(name));
        tp.setKind(boa.types.Ast.TypeKind.GENERIC);
        b.addGenericParameters(tp.build());
    }
    for (Object o : node.parameters()) {
        SingleVariableDeclaration ex = (SingleVariableDeclaration) o;
        Variable.Builder vb = Variable.newBuilder();
        //         vb.setPosition(pos.build()); // FIXME
        vb.setName(ex.getName().getFullyQualifiedName());
        for (Object m : ex.modifiers()) {
            if (((IExtendedModifier) m).isAnnotation())
                ((Annotation) m).accept(this);
            else
                ((org.eclipse.jdt.core.dom.Modifier) m).accept(this);
            vb.addModifiers(modifiers.pop());
        }
        boa.types.Ast.Type.Builder tp = boa.types.Ast.Type.newBuilder();
        String name = typeName(ex.getType());
        for (int i = 0; i < ex.getExtraDimensions(); i++)
            name += "[]";
        if (ex.isVarargs())
            name += "...";
        tp.setName(getIndex(name));
        tp.setKind(boa.types.Ast.TypeKind.OTHER);
        vb.setVariableType(tp.build());
        if (ex.getInitializer() != null) {
            ex.getInitializer().accept(this);
            vb.setInitializer(expressions.pop());
        }
        b.addArguments(vb.build());
    }
    for (Object o : node.thrownExceptions()) {
        boa.types.Ast.Type.Builder tp = boa.types.Ast.Type.newBuilder();
        tp.setName(getIndex(((Name) o).getFullyQualifiedName()));
        tp.setKind(boa.types.Ast.TypeKind.CLASS);
        b.addExceptionTypes(tp.build());
    }
    if (node.getBody() != null) {
        statements.push(new ArrayList<boa.types.Ast.Statement>());
        node.getBody().accept(this);
        for (boa.types.Ast.Statement s : statements.pop())
            b.addStatements(s);
    }
    list.add(b.build());
    return false;
}

From source file:boa.datagen.util.Java8Visitor.java

License:Apache License

@Override
public boolean visit(MethodDeclaration node) {
    List<boa.types.Ast.Method> list = methods.peek();
    Method.Builder b = Method.newBuilder();
    //      b.setPosition(pos.build());
    if (node.isConstructor())
        b.setName("<init>");
    else//w w  w  . jav  a 2 s  .c o m
        b.setName(node.getName().getFullyQualifiedName());
    for (Object m : node.modifiers()) {
        if (((IExtendedModifier) m).isAnnotation())
            ((Annotation) m).accept(this);
        else
            ((org.eclipse.jdt.core.dom.Modifier) m).accept(this);
        b.addModifiers(modifiers.pop());
    }
    boa.types.Ast.Type.Builder tb = boa.types.Ast.Type.newBuilder();
    if (node.getReturnType2() != null) {
        String name = typeName(node.getReturnType2());
        // FIXME JLS8: Deprecated getExtraDimensions() and added extraDimensions()
        for (int i = 0; i < node.getExtraDimensions(); i++)
            name += "[]";
        tb.setName(getIndex(name));
        tb.setKind(boa.types.Ast.TypeKind.OTHER);
        b.setReturnType(tb.build());
    } else {
        tb.setName(getIndex("void"));
        tb.setKind(boa.types.Ast.TypeKind.OTHER);
        b.setReturnType(tb.build());
    }
    for (Object t : node.typeParameters()) {
        boa.types.Ast.Type.Builder tp = boa.types.Ast.Type.newBuilder();
        String name = ((TypeParameter) t).getName().getFullyQualifiedName();
        String bounds = "";
        for (Object o : ((TypeParameter) t).typeBounds()) {
            if (bounds.length() > 0)
                bounds += " & ";
            bounds += typeName((org.eclipse.jdt.core.dom.Type) o);
        }
        if (bounds.length() > 0)
            name = name + " extends " + bounds;
        tp.setName(getIndex(name));
        tp.setKind(boa.types.Ast.TypeKind.GENERIC);
        b.addGenericParameters(tp.build());
    }
    if (node.getReceiverType() != null) {
        Variable.Builder vb = Variable.newBuilder();
        //         vb.setPosition(pos.build()); // FIXME
        vb.setName("this");
        boa.types.Ast.Type.Builder tp = boa.types.Ast.Type.newBuilder();
        String name = typeName(node.getReceiverType());
        if (node.getReceiverQualifier() != null)
            name = node.getReceiverQualifier().getFullyQualifiedName() + "." + name;
        tp.setName(getIndex(name));
        tp.setKind(boa.types.Ast.TypeKind.OTHER); // FIXME change to receiver? or something?
        vb.setVariableType(tp.build());
        b.addArguments(vb.build());
    }
    for (Object o : node.parameters()) {
        SingleVariableDeclaration ex = (SingleVariableDeclaration) o;
        Variable.Builder vb = Variable.newBuilder();
        //         vb.setPosition(pos.build()); // FIXME
        vb.setName(ex.getName().getFullyQualifiedName());
        for (Object m : ex.modifiers()) {
            if (((IExtendedModifier) m).isAnnotation())
                ((Annotation) m).accept(this);
            else
                ((org.eclipse.jdt.core.dom.Modifier) m).accept(this);
            vb.addModifiers(modifiers.pop());
        }
        boa.types.Ast.Type.Builder tp = boa.types.Ast.Type.newBuilder();
        String name = typeName(ex.getType());
        // FIXME JLS8: Deprecated getExtraDimensions() and added extraDimensions()
        for (int i = 0; i < ex.getExtraDimensions(); i++)
            name += "[]";
        if (ex.isVarargs())
            name += "...";
        tp.setName(getIndex(name));
        tp.setKind(boa.types.Ast.TypeKind.OTHER);
        vb.setVariableType(tp.build());
        if (ex.getInitializer() != null) {
            ex.getInitializer().accept(this);
            vb.setInitializer(expressions.pop());
        }
        b.addArguments(vb.build());
    }
    for (Object o : node.thrownExceptionTypes()) {
        boa.types.Ast.Type.Builder tp = boa.types.Ast.Type.newBuilder();
        tb.setName(getIndex(typeName((org.eclipse.jdt.core.dom.Type) o)));
        tp.setKind(boa.types.Ast.TypeKind.CLASS);
        b.addExceptionTypes(tp.build());
    }
    if (node.getBody() != null) {
        statements.push(new ArrayList<boa.types.Ast.Statement>());
        node.getBody().accept(this);
        for (boa.types.Ast.Statement s : statements.pop())
            b.addStatements(s);
    }
    list.add(b.build());
    return false;
}

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

License:Open Source License

/**
 * Returns the corresponding return type for the given method invocation, or
 * null if it could not be found.// w w w.j a  va2s.  c o  m
 * @param unresolved
 */
public static Type findReturnType(MethodInvocation invocation) {
    MethodDeclaration declaration = findDeclarationFor(invocation);
    if (declaration != null) {
        return declaration.getReturnType2();
    }
    return null;
}

From source file:chibi.gumtreediff.gen.jdt.cd.CdJdtVisitor.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override//from  w  w  w . j  a  va  2 s .c  o m
public boolean visit(MethodDeclaration node) {
    if (node.getJavadoc() != null) {
        node.getJavadoc().accept(this);
    }
    fInMethodDeclaration = true;

    // @Inria
    pushNode(node, node.getName().toString());
    //

    visitListAsNode(EntityType.MODIFIERS, node.modifiers());
    if (node.getReturnType2() != null) {
        node.getReturnType2().accept(this);
    }
    visitListAsNode(EntityType.TYPE_ARGUMENTS, node.typeParameters());
    visitListAsNode(EntityType.PARAMETERS, node.parameters());
    visitListAsNode(EntityType.THROW, node.thrownExceptions());

    // @Inria
    // The body can be null when the method declaration is from a interface
    if (node.getBody() != null) {
        node.getBody().accept(this);
    }
    return false;

}

From source file:coloredide.utils.CopiedNaiveASTFlattener.java

License:Open Source License

public boolean visit(MethodDeclaration node) {
    if (node.getJavadoc() != null) {
        node.getJavadoc().accept(this);
    }//  ww w. j a va2 s  . c  om
    printIndent();
    hook_beforeVisitMethodDeclaration(node);
    if (node.getAST().apiLevel() >= AST.JLS3) {
        printModifiers(node.modifiers());
        if (!node.typeParameters().isEmpty()) {
            this.buffer.append("<");//$NON-NLS-1$
            for (Iterator it = node.typeParameters().iterator(); it.hasNext();) {
                TypeParameter t = (TypeParameter) it.next();
                t.accept(this);
                if (it.hasNext()) {
                    this.buffer.append(",");//$NON-NLS-1$
                }
            }
            this.buffer.append(">");//$NON-NLS-1$
        }
    }
    if (!node.isConstructor()) {
        if (node.getReturnType2() != null) {
            node.getReturnType2().accept(this);
        } else {
            // methods really ought to have a return type
            this.buffer.append("void");//$NON-NLS-1$
        }

        this.buffer.append(" ");//$NON-NLS-1$
    }
    node.getName().accept(this);
    this.buffer.append("(");//$NON-NLS-1$
    for (Iterator it = node.parameters().iterator(); it.hasNext();) {
        SingleVariableDeclaration v = (SingleVariableDeclaration) it.next();
        v.accept(this);
        if (it.hasNext()) {
            this.buffer.append(",");//$NON-NLS-1$
        }
    }
    this.buffer.append(")");//$NON-NLS-1$
    for (int i = 0; i < node.getExtraDimensions(); i++) {
        this.buffer.append("[]"); //$NON-NLS-1$
    }
    if (!node.thrownExceptions().isEmpty()) {
        this.buffer.append(" throws ");//$NON-NLS-1$
        for (Iterator it = node.thrownExceptions().iterator(); it.hasNext();) {
            Name n = (Name) it.next();
            n.accept(this);
            if (it.hasNext()) {
                this.buffer.append(", ");//$NON-NLS-1$
            }
        }
        this.buffer.append(" ");//$NON-NLS-1$
    }
    if (node.getBody() == null) {
        this.buffer.append(";\n");//$NON-NLS-1$
    } else {
        node.getBody().accept(this);
    }
    return false;
}

From source file:com.architexa.diagrams.jdt.extractors.MethodParametersExtractor.java

License:Open Source License

@Override
public boolean visit(MethodDeclaration methodDecl) {
    Resource methodDeclRes = bindingToResource(methodDecl.resolveBinding());

    final List<Resource> parametersRes = new LinkedList<Resource>();
    for (Object arg0 : methodDecl.parameters()) {
        SingleVariableDeclaration svd = (SingleVariableDeclaration) arg0;
        parametersRes.add(bindingToResource(svd.getType().resolveBinding()));
    }/* ww  w.  j av  a 2  s .  co  m*/

    Resource paramaterList = rdfModel.createList(parametersRes.iterator());
    rdfModel.addStatement(methodDeclRes, RJCore.parameter, paramaterList);

    Type retType = methodDecl.getReturnType2();
    if (retType != null) {
        Resource methodDeclTypeRes = bindingToResource(retType.resolveBinding());
        rdfModel.addStatement(methodDeclRes, RJCore.returnType, methodDeclTypeRes);
    }

    rdfModel.addStatement(methodDeclRes, MethodParametersSupport.parameterCachedLabel,
            getParamLabel(methodDecl));

    return true;
}

From source file:com.architexa.diagrams.jdt.extractors.MethodParametersExtractor.java

License:Open Source License

private String getParamLabel(MethodDeclaration methodDecl) {
    String retVal = "(";

    String methodSig = "";
    boolean first = true;
    try {/*www  . j a  v a 2 s  .  c  o  m*/
        for (Object arg0 : methodDecl.parameters()) {
            SingleVariableDeclaration svd = (SingleVariableDeclaration) arg0;
            if (first)
                first = false;
            else
                methodSig += ",";
            methodSig += svd.getType().resolveBinding().getName();
        }
    } catch (Exception e) {
        methodSig = "...";
        logger.error("Unexpected Exception", e);
    }

    retVal += methodSig;
    retVal += "): ";
    try {
        Type retType = methodDecl.getReturnType2();
        if (retType != null)
            retVal += retType.resolveBinding().getName();
        else
            retVal += "void";
    } catch (Exception e) {
        retVal += "void";
        logger.error("Unexpected Exception", e);
    }
    return retVal;
}

From source file:com.bsiag.eclipse.jdt.java.formatter.linewrap.WrapPreparator.java

License:Open Source License

@Override
public boolean visit(MethodDeclaration node) {
    List<SingleVariableDeclaration> parameters = node.parameters();
    Type receiverType = node.getReceiverType();
    if (!parameters.isEmpty() || receiverType != null) {
        if (receiverType != null)
            this.wrapIndexes.add(this.tm.firstIndexIn(receiverType, -1));
        int wrappingOption = node.isConstructor()
                ? this.options.alignment_for_parameters_in_constructor_declaration
                : this.options.alignment_for_parameters_in_method_declaration;
        this.wrapGroupEnd = this.tm
                .lastIndexIn(parameters.isEmpty() ? receiverType : parameters.get(parameters.size() - 1), -1);
        handleArguments(parameters, wrappingOption);
    }//w  ww  .jav  a 2  s  .c  om

    List<Type> exceptionTypes = node.thrownExceptionTypes();
    if (!exceptionTypes.isEmpty()) {
        this.wrapParentIndex = this.tm.firstIndexBefore(exceptionTypes.get(0), TokenNameRPAREN);
        this.wrapGroupEnd = this.tm.lastIndexIn(exceptionTypes.get(exceptionTypes.size() - 1), -1);
        int wrappingOption = node.isConstructor()
                ? this.options.alignment_for_throws_clause_in_constructor_declaration
                : this.options.alignment_for_throws_clause_in_method_declaration;
        for (Type exceptionType : exceptionTypes)
            this.wrapIndexes.add(this.tm.firstIndexIn(exceptionType, -1));
        // instead of the first exception type, wrap the "throws" token
        this.wrapIndexes.set(0, this.tm.firstIndexBefore(exceptionTypes.get(0), TokenNamethrows));
        handleWrap(wrappingOption, 0.5f);
    }

    if (!node.isConstructor()) {
        this.wrapParentIndex = this.tm.findFirstTokenInLine(this.tm.firstIndexIn(node.getName(), -1));
        List<TypeParameter> typeParameters = node.typeParameters();
        if (!typeParameters.isEmpty())
            this.wrapIndexes.add(this.tm.firstIndexIn(typeParameters.get(0), -1));
        if (node.getReturnType2() != null) {
            int returTypeIndex = this.tm.firstIndexIn(node.getReturnType2(), -1);
            if (returTypeIndex != this.wrapParentIndex)
                this.wrapIndexes.add(returTypeIndex);
        }
        this.wrapIndexes.add(this.tm.firstIndexIn(node.getName(), -1));
        this.wrapGroupEnd = this.tm.lastIndexIn(node.getName(), -1);
        handleWrap(this.options.alignment_for_method_declaration);
    }
    return true;
}

From source file:com.dnw.depmap.ast.MethodDeclarationVisitor.java

License:Open Source License

/**
 * Makes a string representation of the <code>MethodDeclaration</code> node.
 * /*from  ww  w  .  j av a 2 s  .  c om*/
 * @author manbaum
 * @since Oct 11, 2014
 * @param node the <code>MethodDeclaration</code> node.
 * @return the string representation.
 */
private String make(MethodDeclaration node) {
    StringBuffer sb = new StringBuffer();
    sb.append(node.getReturnType2());
    sb.append(' ');
    sb.append(node.getName());
    sb.append('(');
    for (Object v : node.parameters()) {
        SingleVariableDeclaration d = (SingleVariableDeclaration) v;
        sb.append(d.getType());
    }
    sb.append(')');
    return sb.toString();
}