Example usage for org.eclipse.jdt.core.dom IMethodBinding equals

List of usage examples for org.eclipse.jdt.core.dom IMethodBinding equals

Introduction

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

Prototype

@Override
public boolean equals(Object obj);

Source Link

Document

There is no special definition of equality for bindings; equality is simply object identity.

Usage

From source file:br.uff.ic.mergeguider.javaparser.ProjectAST.java

public List<MyMethodInvocation> getMethodCallers(MethodDeclaration methodDeclaration) {
    List<MyMethodInvocation> invocations = new ArrayList<>();

    IMethodBinding methodDeclarationBinding = methodDeclaration.resolveBinding();
    if (methodDeclarationBinding == null) {
        //Method does not have binding
        return null;
    }//  w w  w. j  av  a  2 s.  com

    for (ClassLanguageContructs languageConstructsByClass : classesLanguageConstructs) {
        for (MyMethodInvocation methoInvocation : languageConstructsByClass.getMethodInvocations()) {

            IMethodBinding methodInvocationBinding = methoInvocation.getMethodInvocation()
                    .resolveMethodBinding();

            if (methodInvocationBinding == null) {
                //no binding
                continue;
            }

            if (methodDeclarationBinding.equals(methodInvocationBinding)) {
                invocations.add(methoInvocation);
            }
        }
    }

    return invocations;
}

From source file:br.uff.ic.mergeguider.MergeGuider.java

public static boolean sameMethod(MyMethodDeclaration methodDeclaration, MyMethodInvocation methodInvocation) {

    IMethodBinding methodDeclarationBinding = methodDeclaration.getMethodDeclaration().resolveBinding();
    IMethodBinding methodInvocationBinding = methodInvocation.getMethodInvocation().resolveMethodBinding();

    if (methodDeclarationBinding != null && methodInvocationBinding != null
            && methodDeclarationBinding.equals(methodInvocationBinding)) {
        return true;
    } else {/*from  www .  j a v  a2s. com*/
        return false;
    }
}

From source file:org.eclipse.objectteams.otdt.internal.ui.text.correction.MappingProposalSubProcessor.java

License:Open Source License

static ASTRewriteCorrectionProposal getMaterializeInferredCalloutSelfCallProposal(ICompilationUnit cu,
        TypeDeclaration enclosingType, MethodInvocation selectedNode) throws JavaModelException {
    final IMethodBinding resolvedMethod = selectedNode.resolveMethodBinding();
    if (resolvedMethod == null)
        return null;
    IMethodMemento memento = new IMethodMemento() {
        public boolean isEqualTo(IMethodBinding other) {
            return resolvedMethod.equals(other);
        }/*w w  w. j ava  2  s . c o  m*/
    };
    return getMaterializeInferredCalloutProposal(cu, null, enclosingType, memento, InferenceKind.SELFCALL);
}

From source file:org.eclipse.recommenders.args.completion.rcp.usagedb.ParamInfo.java

License:Open Source License

/**
 * Analyze detailed information of the parameter expression
 * and fill in the corresponding fields.
 * /*from w  w w  . j ava  2  s.  co  m*/
 * @param param - the parameter expression
 * @param enclosingType - the enclosing type
 */
public final void setParamExpr(final Expression param, final TypeDeclaration enclosingType) {
    String sType = resolveStructureType(param);
    this.structureType = sType;
    if (sType.equals("MethodInvocation")) {
        methodInvType = new MethodInvocationType();
        MethodInvocation mi = (MethodInvocation) param;
        String methodName = mi.getName().getIdentifier();
        methodInvType.setMethodName(methodName);
        //Now not consider the modifier of a method
        methodInvType.setModifier("null");
        methodInvType.setDeclareType("null");
        Expression invokeExpr = mi.getExpression();

        //local method 
        if (invokeExpr == null) {
            String enclosingTypeName = enclosingType.resolveBinding().getErasure().getQualifiedName();
            methodInvType.setInvokeType(enclosingTypeName);
            methodInvType.setFirstElementType(enclosingTypeName);
            ITypeBinding tpBinding = enclosingType.resolveBinding();
            do {
                for (IMethodBinding method : tpBinding.getDeclaredMethods()) {
                    if (method.equals(mi.resolveMethodBinding())) {
                        methodInvType.setDeclareType(tpBinding.getErasure().getQualifiedName());
                    }
                }
                tpBinding = tpBinding.getSuperclass();
            } while (tpBinding != null);
            //            }while((tpBinding = tpBinding.getSuperclass())!= null);
        } else {
            ITypeBinding invokeType = invokeExpr.resolveTypeBinding();
            /*for(IMethodBinding method: invokeType.getDeclaredMethods())
            {
               if (method.equals(mi.resolveMethodBinding()))
               {
                  if (Modifier.isStatic(method.getModifiers()))
             methodInvType.setModifier("static");   
               }
            }*/
            if (invokeType != null) {
                methodInvType.setInvokeType(invokeType.getErasure().getQualifiedName());
                ITypeBinding tpBinding = invokeType;
                do {
                    for (IMethodBinding method : tpBinding.getDeclaredMethods()) {
                        if (method.equals(mi.resolveMethodBinding())) {
                            methodInvType.setDeclareType(tpBinding.getErasure().getQualifiedName());
                        }
                    }
                    tpBinding = tpBinding.getSuperclass();
                } while (tpBinding != null);
            } else {
                methodInvType.setInvokeType("unknown");
            }
            while (!((invokeExpr instanceof SimpleName) || (invokeExpr instanceof ThisExpression)
                    || (invokeExpr instanceof ArrayAccess))) {
                if (invokeExpr instanceof MethodInvocation) {
                    MethodInvocation temp = (MethodInvocation) invokeExpr;
                    invokeExpr = temp.getExpression();
                } else if (invokeExpr instanceof QualifiedName) {
                    QualifiedName temp = (QualifiedName) invokeExpr;
                    invokeExpr = temp.getQualifier();
                } else if (invokeExpr instanceof FieldAccess) {
                    FieldAccess temp = (FieldAccess) invokeExpr;
                    invokeExpr = temp.getExpression();
                } else {
                    methodInvType.setFirstElementType("unknown");
                    break;
                }
            }
            if (invokeExpr instanceof SimpleName) {
                ITypeBinding firstBinding = invokeExpr.resolveTypeBinding();
                if (firstBinding != null) {
                    /*The strategy to check whether a method is static is quite simple.
                     * We just check whether the variable name invoking the methods equals its type name
                     */
                    String firstBindingStr = firstBinding.getErasure().getQualifiedName();
                    int pos = firstBindingStr.lastIndexOf(".");
                    if (pos != -1) {
                        firstBindingStr = firstBindingStr.substring(pos + 1, firstBindingStr.length());
                        SimpleName invokeName = (SimpleName) invokeExpr;
                        if (invokeName.getIdentifier().equals(firstBindingStr)) {
                            methodInvType.setModifier("static");
                        }
                    }
                    methodInvType.setFirstElementType(firstBinding.getErasure().getQualifiedName());
                } else {
                    methodInvType.setFirstElementType("unknown");
                }
            } else if (invokeExpr instanceof ThisExpression) {
                ITypeBinding firstBinding = invokeExpr.resolveTypeBinding();
                if (firstBinding != null) {
                    for (IMethodBinding method : invokeType.getDeclaredMethods()) {
                        if (method.equals(mi.resolveMethodBinding())) //may be wrong if the dotlen > 2 
                        {
                            if (Modifier.isStatic(method.getModifiers())) {
                                methodInvType.setModifier("static");
                            }
                        }
                    }
                    methodInvType.setFirstElementType(firstBinding.getErasure().getQualifiedName());
                } else {
                    methodInvType.setFirstElementType("unknown");
                }

            } else if (invokeExpr instanceof ArrayAccess) {
                ITypeBinding firstBinding = invokeExpr.resolveTypeBinding();
                if (firstBinding != null) {
                    methodInvType.setFirstElementType(firstBinding.getErasure().getQualifiedName());
                } else {
                    methodInvType.setFirstElementType("unknown");
                }
            }
        }
    } else if (sType.equals("QualifiedName")) {
        qualifiedNaType = new QualifiedNameType();
        if (param instanceof QualifiedName) {
            QualifiedName qi = (QualifiedName) param;
            String simpleName = qi.getName().getIdentifier();
            qualifiedNaType.setSimpleName(simpleName);
            qualifiedNaType.setModifier("null");
            qualifiedNaType.setDeclareType("null");
            Name qualifier = qi.getQualifier();
            ITypeBinding qType = qualifier.resolveTypeBinding();
            if (qType != null) {
                qualifiedNaType.setQualiferType(qType.getErasure().getQualifiedName());
                ITypeBinding tpBinding = qType;
                do {
                    for (IVariableBinding var : tpBinding.getDeclaredFields()) {
                        if (var.getName().equals(simpleName)) {
                            qualifiedNaType.setDeclareType(tpBinding.getErasure().getQualifiedName());
                        }
                    }
                    tpBinding = tpBinding.getSuperclass();
                } while (tpBinding != null);
                //               }while((tpBinding = tpBinding.getSuperclass())!= null);
            } else {
                qualifiedNaType.setQualiferType("unknown");
            }
            /*for(IVariableBinding var:qType.getDeclaredFields())
            {
               if (var.getName().equals(simpleName))
               {
                  if (Modifier.isStatic(var.getModifiers()))
             qualifiedNaType.setModifier("static");   
               }
            } */
            while (qualifier instanceof QualifiedName) {
                QualifiedName tmpQualifiedName = (QualifiedName) qualifier;
                qualifier = tmpQualifiedName.getQualifier();
            }

            ITypeBinding firstBinding = qualifier.resolveTypeBinding();
            if (firstBinding != null) {
                String firstBindingStr = firstBinding.getErasure().getQualifiedName();
                int pos = firstBindingStr.lastIndexOf(".");
                if (pos != -1) {
                    firstBindingStr = firstBindingStr.substring(pos + 1, firstBindingStr.length());
                    SimpleName name = (SimpleName) qualifier;
                    if (name.getIdentifier().equals(firstBindingStr)) {
                        qualifiedNaType.setModifier("static");
                    }
                }
                qualifiedNaType.setFirstElementType(firstBinding.getErasure().getQualifiedName());
            } else {
                qualifiedNaType.setFirstElementType("unknown");
            }
        } else if (param instanceof FieldAccess) {
            FieldAccess fa = (FieldAccess) param;
            String identifier = fa.getName().getIdentifier();
            qualifiedNaType.setSimpleName(identifier);
            qualifiedNaType.setModifier("null");
            Expression fieldExpr = fa.getExpression();
            if (fieldExpr == null) {
                qualifiedNaType.setQualiferType("null");
                qualifiedNaType.setFirstElementType("null");
            } else {
                ITypeBinding fieldType = fieldExpr.resolveTypeBinding();
                if (fieldType != null) {
                    qualifiedNaType.setQualiferType(fieldType.getErasure().getQualifiedName());
                    ITypeBinding tpBinding = fieldType;
                    do {
                        for (IVariableBinding var : tpBinding.getDeclaredFields()) {
                            if (var.getName().equals(identifier)) {
                                qualifiedNaType.setDeclareType(tpBinding.getErasure().getQualifiedName());
                            }
                        }
                        tpBinding = tpBinding.getSuperclass();
                    } while (tpBinding != null);
                } else {
                    qualifiedNaType.setQualiferType("unknown");
                }
                while (!((fieldExpr instanceof SimpleName) || (fieldExpr instanceof ThisExpression)
                        || (fieldExpr instanceof ArrayAccess))) {
                    if (fieldExpr instanceof MethodInvocation) {
                        MethodInvocation temp = (MethodInvocation) fieldExpr;
                        fieldExpr = temp.getExpression();
                    } else if (fieldExpr instanceof QualifiedName) {
                        QualifiedName temp = (QualifiedName) fieldExpr;
                        fieldExpr = temp.getQualifier();
                    } else if (fieldExpr instanceof FieldAccess) {
                        FieldAccess temp = (FieldAccess) fieldExpr;
                        fieldExpr = temp.getExpression();
                    } else {
                        qualifiedNaType.setFirstElementType("unknown");
                        break;
                    }
                }
                if (fieldExpr instanceof SimpleName) {
                    ITypeBinding firstBinding = fieldExpr.resolveTypeBinding();
                    if (firstBinding != null) {
                        String firstBindingStr = firstBinding.getErasure().getQualifiedName();
                        int pos = firstBindingStr.lastIndexOf(".");
                        if (pos != -1) {
                            firstBindingStr = firstBindingStr.substring(pos + 1, firstBindingStr.length());
                            SimpleName name = (SimpleName) fieldExpr;
                            if (name.getIdentifier().equals(firstBindingStr)) {
                                qualifiedNaType.setModifier("static");
                            }
                        }
                        qualifiedNaType.setFirstElementType(firstBinding.getErasure().getQualifiedName());
                    } else {
                        qualifiedNaType.setFirstElementType("unknown");
                    }
                } else if (fieldExpr instanceof ThisExpression) {
                    ITypeBinding firstBinding = fieldExpr.resolveTypeBinding();
                    if (firstBinding != null) {
                        for (IVariableBinding var : firstBinding.getDeclaredFields()) {
                            if (var.getName().equals(identifier)) {
                                if (Modifier.isStatic(var.getModifiers())) {
                                    qualifiedNaType.setModifier("static");
                                }
                            }
                        }
                        qualifiedNaType.setFirstElementType(firstBinding.getErasure().getQualifiedName());
                    } else {
                        qualifiedNaType.setFirstElementType("unknown");
                    }

                } else if (fieldExpr instanceof ArrayAccess) {
                    ITypeBinding firstBinding = fieldExpr.resolveTypeBinding();
                    if (firstBinding != null) {
                        qualifiedNaType.setFirstElementType(firstBinding.getErasure().getQualifiedName());
                    } else {
                        qualifiedNaType.setFirstElementType("unknown");
                    }
                }

            }
        }
    }
}