You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Pier-Luc Caron St-Pierre (JIRA)" <ji...@apache.org> on 2012/10/06 20:11:03 UTC
[jira] [Created] (LANG-842) Lack of consistency in comparaison api
Pier-Luc Caron St-Pierre created LANG-842:
---------------------------------------------
Summary: Lack of consistency in comparaison api
Key: LANG-842
URL: https://issues.apache.org/jira/browse/LANG-842
Project: Commons Lang
Issue Type: Improvement
Components: lang.*, lang.time.*
Affects Versions: 3.2
Reporter: Pier-Luc Caron St-Pierre
Priority: Trivial
The comparaison api is lacking of consistency with null.
Few instances :
org.apache.commons.lang3.StringUtils#equals returns false if one of the parameter is null.
org.apache.commons.lang3.ObjectUtils#equals returns false if one of the parameter is null.
org.apache.commons.lang3.time.DateUtils#truncatedCompareTo throws IllegalArgumentException if one of the parameter is null
org.apache.commons.lang3.time.DateUtils#isSameInstant throws IllegalArgumentException if one of the parameter is null
I do not have any suggestion to fix that problem because any solution would break backward compatibility.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (LANG-842) Lack of consistency in comparaison
api
Posted by "Duncan Jones (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/LANG-842?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13471433#comment-13471433 ]
Duncan Jones commented on LANG-842:
-----------------------------------
The {{equals}} methods must return {{false}}, [by contract|http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html#equals%28java.lang.Object%29]:
bq. For any non-null reference value {{x, x.equals(null)}} should return {{false}}.
This makes sense, as nothing equals null - the correct answer is returned.
But for all other methods, it's quite standard to throw a runtime exception on a null argument. Take, for example, {{DateUtils.truncatedCompareTo}} - by its very design, the method must return a verdict on the differences between the two objects. There is no value that would be appropriate when one of the arguments is null. (You could argue a corner case when both arguments are null, but that's it).
Personally I would prefer to see {{NullPointerException}}, but I suspect this might be related to how the {{Validate}} class used to work pre 3.0.
> Lack of consistency in comparaison api
> --------------------------------------
>
> Key: LANG-842
> URL: https://issues.apache.org/jira/browse/LANG-842
> Project: Commons Lang
> Issue Type: Improvement
> Components: lang.*, lang.time.*
> Affects Versions: 3.2
> Reporter: Pier-Luc Caron St-Pierre
> Priority: Trivial
>
> The comparaison api is lacking of consistency with null.
> Few instances :
> org.apache.commons.lang3.StringUtils#equals returns false if one of the parameter is null.
> org.apache.commons.lang3.ObjectUtils#equals returns false if one of the parameter is null.
> org.apache.commons.lang3.time.DateUtils#truncatedCompareTo throws IllegalArgumentException if one of the parameter is null
> org.apache.commons.lang3.time.DateUtils#isSameInstant throws IllegalArgumentException if one of the parameter is null
> I do not have any suggestion to fix that problem because any solution would break backward compatibility.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira