[ 
https://issues.apache.org/jira/browse/LANG-360?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12538664
 ] 

Paul Benedict commented on LANG-360:
------------------------------------

What's ironic is that the current behavior is in perfect line with the javadoc:

"Appends the toString that would be produced by Object  if a class did not 
override toString itself. null  will return null. 
ObjectUtils.appendIdentityToString(*, null) = null"

Based on that, it's difficult to argue that the current behavior is incorrect. 
Almost all of Commons Lang behavior returns null where possible for a null 
source parameter.

I recommend keeping the current behavior, but adding a second method that 
combines appendIdentityToString and defaultIfNull: 

appendIdentityToString(StringBuffer buffer, Object object, Object defaultValue)

> Why does appendIdentityToString return null?
> --------------------------------------------
>
>                 Key: LANG-360
>                 URL: https://issues.apache.org/jira/browse/LANG-360
>             Project: Commons Lang
>          Issue Type: Bug
>            Reporter: Jörg Gottschling
>             Fix For: 2.4
>
>
> ObjectUtils is designed to handle null imputs gracefully. But 
> ObjectUtils.appendIdentityToString does not. It returns null unnessecary if 
> you pass null als second parameter (the object to get the identity from). For 
> example appendIdentityToString(new StringBuffer(), null) will return null! 
> Which is an uncommen behaviour. Think about code like this:
> ObjectUtils.appendIdentityToString(buffer, param1)
>                     .appendIdentityToString(buffer, param2)
>                     .appendIdentityToString(buffer, param3);
> This will cause an NPE if param1 or param2 ist null. There may be other code 
> where a NPE will not happen, but the code is used for debugging and there 
> will be an unexpected or wrong output.
> So you shoul return the StringBuffer which is passed in or a new one if null. 
> The harder question is what to do with the object. I think we should append 
> "null" to the StringBuffer, because this is what I would expect and what the 
> passed reference is.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to