[
https://jira.codehaus.org/browse/QDOX-232?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=273355#comment-273355
]
Freewind commented on QDOX-232:
-------------------------------
{code}
if(m.getName()==null && getName()!=null) return false;
if (!m.getName().equals(getName())) return false;
{/code}
is not correct. If they both null, the 2nd line will throw NPE. So it's best to
use that `eq(...)` helper method:
{code}
if(!eq(m.getName(), getName()) return false;
{/code}
> DefaultJavaMethod#equals incorrect code
> ---------------------------------------
>
> Key: QDOX-232
> URL: https://jira.codehaus.org/browse/QDOX-232
> Project: QDox
> Issue Type: Bug
> Components: Java API
> Affects Versions: 2.0
> Reporter: Freewind
> Assignee: Robert Scholte
> Labels: equals
>
> {code}
> public boolean equals(Object obj) {
> if (obj == null) return false;
> JavaMethod m = (JavaMethod) obj;
> if (m.isConstructor() != isConstructor()) return false;
> if (m.getName() == null) return (getName() == null); // this
> line(215) is incorrect
> if (!m.getName().equals(getName())) return false;
>
> if (m.getReturns() == null) return (getReturns() == null); // THIS
> line(218) is incorrect
> {code}
> They should be:
> {code}
> if(m.getName()==null && getName()!=null) return false;
> {code}
> and
> {code}
> if(m.getReturns()==null && getReturns()!=null) return false;
> {code}
> Otherwise, if two methods with same name and return type but different
> parameters will return true, which is incorrect.
> Maybe other `equals` have same issue. I think it's a good idea to provide a
> helper method to check, e.g.:
> {code}
> public static boolean eq(Object obj1, Object obj2) {
> return obj1==obj2 || (obj1!=null && obj1.equals(obj2);
> }
> if(!eq(m.getName(), getName()) return false;
> if(!eq(m.getReturns(), getReturns()) return false;
> {code}
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email