commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Travis Greer (JIRA)" <>
Subject [jira] Created: (BEANUTILS-277) BeanComparator - Unable to catch or handle NestedNullExceptions
Date Fri, 04 May 2007 16:51:15 GMT
BeanComparator - Unable to catch or handle NestedNullExceptions

                 Key: BEANUTILS-277
             Project: Commons BeanUtils
          Issue Type: Bug
          Components: Bean-Collections
    Affects Versions: 1.7.0
            Reporter: Travis Greer
            Priority: Minor

I believe there's a bug in org.apache.commons.beanutils.BeanComparator.

When sorting on a nested property, a org.apache.commons.beanutils.NestedNullException is thrown
if a null property is encountered.

For example, say I have a list of Actors and want to sort on "".  If any one of
the actors does not have a spouse (spouse == null), the sort will fail, throwing a NestedNullException
and wrapping that in a ClassCastException.

Adding a NullComparator to the BeanComparator does not fix the problem because the null won't
be detected until PropertyUtils.getProperty attempts to get the property - at which point
it's too late.

There's probably a better way to fix this, but replacing the compare method with this seems
to work for me (in addition to adding a NullComparator to BeanComparator):

    public int compare( Object o1, Object o2 ) {
        if ( property == null ) {
            // compare the actual objects
            return o1, o2 );
        try {
        	Object value1 = null;
        	Object value2 = null;
        	try {
	            value1 = PropertyUtils.getProperty( o1, property );
        	} catch (NestedNullException nne) {}
        	try {
	            value2 = PropertyUtils.getProperty( o2, property );
        	} catch (NestedNullException nne) {}
    		return, value2);
        catch ( Exception e ) {
            throw new ClassCastException( e.toString() );

I apologize if this is the incorrect way to go about this - I'm new at this.

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:
For additional commands, e-mail:

View raw message