[
https://issues.apache.org/jira/browse/BEANUTILS-268?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12466633
]
Niall Pemberton commented on BEANUTILS-268:
-------------------------------------------
Jacob Kjome wrote....
Hi Niall,
I lost one full comment message trying to respond to your comment in Jira and
now I'm trying again and I keep getting system failures when trying to add the
comment. So, I'm emailing you directly. Here's what I tried to write in
Jira...
I see your point, but I think it misses the mark if the root of the problem is
PropertyUtils.getPropterty() throwing the NullPointerException. A "Suitable
Compartor" is irrelevant in this case because the comparator will never have a
chance to be called since the unexpected exception will have already been
thrown.
Having said that, shouldn't all comparators handle null values, not just
"Suitable Comparators"? Lists allow null values. All comparators must account
for this or be brittle by nature.
Please don't close this until we narrow down the problem. If it is
PropertyUtils.getProperty() that causes the problem, then even though all
BeanComparator is doing is delegating to PropertyUtils.getProperty(),
BeanComparator still has to deal with the issue that it can't support beans
that return null property values. If that means fixing
PropertyUtils.getProperty() (actually PropertyUtilsBean.getNestedProperty()),
another BeanUtils class, then so be it. Users of BeanComparator shouldn't have
to concern themselves about how BeanComparator works, just that it does... or
doesn't, as it were.
Jake
> BeanComparator.compare() doesn't can't handle null values returned by bean
> properties
> -------------------------------------------------------------------------------------
>
> Key: BEANUTILS-268
> URL: https://issues.apache.org/jira/browse/BEANUTILS-268
> Project: Commons BeanUtils
> Issue Type: Bug
> Components: Bean-Collections
> Affects Versions: 1.7.0
> Reporter: Jacob Kjome
>
> I've got a bean that has properties that will, at times, return null values.
> BeanComparator appears to fail with a NullPointerException. It's difficult
> to tell exactly where because the exception thrown is a ClassCastException
> with a message of e.toString(), so all I know is that a NullPointerException
> happened, not where it happened.
> I suspect that the exception happens inside the compare(Object, Object)
> method with the call...
> Object value1 = PropertyUtils.getProperty( o1, property );
> Looking into PropertyUtils, and following the path, it seems like the
> problematic code is in...
> PropertyUtilsBean.getNestedProperty(Object, String)
> That code is rather involved. If I get around to performing a minimal
> testcase, I'll see if I can narrow down the exception to a particular piece
> of code. In any case, there's no reason why a bean shouldn't be allowed to
> return null for a given property.
> My workaround is to add methods for respective properties that are guaranteed
> to not return null. For instance, if I have a getter called getMyValue(), I
> create a corresponding method called getMyValueNotNul(). I have to take care
> with the value it returns, though. The position in a sort for a null value
> would be different than a literal empty String. So, depending on the Object
> type, I have to make up values which will either come before all other
> non-null values or after all other non-null values (I don't recall what the
> natural order of null values are; whether they come first or last. I know
> when ordering on a SQLcolumn, null values show up last. Hopefully that
> behavior is consistent here, but that's beside the point here).
> I hope this can be fixed before 1.8.0 is released!
> Jake
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]