package org.testng.eclipse.util.signature; import java.util.List; import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.MethodDeclaration; import org.eclipse.jdt.core.dom.SimpleName; import org.eclipse.jdt.core.dom.SingleVariableDeclaration; import org.eclipse.jdt.core.dom.Type; public class ASTMethodDescriptor implements IMethodDescriptor { private MethodDeclaration m_method; private String m_annotationType; public ASTMethodDescriptor(MethodDeclaration methodDeclaration, final String annotationType) { m_method = methodDeclaration; m_annotationType = annotationType; } public String getName() { return ((SimpleName) m_method.getName()).toString(); } public String getReturnTypeSignature() { Type returnType = m_method.getReturnType2(); if (null == returnType && m_method.getAST().apiLevel() < AST.JLS3) { returnType = m_method.getReturnType(); } return TypeSignature.getSignature(returnType); } public String getSignature() { StringBuffer buf = new StringBuffer("("); List paramVars = m_method.parameters(); // List<SingleVariableDeclaration> for(int i = 0; i < paramVars.size(); i++) { buf.append(TypeSignature.getSignature(((SingleVariableDeclaration) paramVars.get(i)).getType())); // if(i + 1 < paramVars.size()) { // buf.append(","); // } } buf.append(")") .append(getReturnTypeSignature()) ; return buf.toString(); } public String getFullSignature() { return getName() + getSignature(); } public int getParameterCount() { return m_method.parameters().size(); } public String getAnnotationType() { return m_annotationType; } /** * Override hashCode. * * @return the Objects hashcode. */ public int hashCode() { int hashCode = 1; hashCode = 31 * hashCode + getFullSignature().hashCode(); return hashCode; } /** * Returns <code>true</code> if this <code>MethodDescriptor</code> is the same as the o argument. * * @return <code>true</code> if this <code>MethodDescriptor</code> is the same as the o argument. */ public boolean equals(Object o) { if(this == o) { return true; } if (o == null || !(o instanceof IMethodDescriptor)) { return false; } IMethodDescriptor castedObj = (IMethodDescriptor) o; return getFullSignature().equals(castedObj.getFullSignature()); } }