commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Duncan Jones (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (LANG-842) Lack of consistency in comparaison api
Date Mon, 08 Oct 2012 07:38:02 GMT

    [ 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

Mime
View raw message