You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by "Niall Pemberton (JIRA)" <ji...@apache.org> on 2007/01/20 12:54:29 UTC

[jira] Resolved: (BEANUTILS-267) BeanComparator(String, Comparator) should check the comparator for null and default to ComparableComparator.getInstance()

     [ https://issues.apache.org/jira/browse/BEANUTILS-267?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Niall Pemberton resolved BEANUTILS-267.
---------------------------------------

       Resolution: Fixed
    Fix Version/s: 1.8.0
         Assignee: Niall Pemberton

Fixed, thanks for the suggestion:

http://svn.apache.org/viewvc?view=rev&revision=498105

> BeanComparator(String, Comparator) should check the comparator for null and default to ComparableComparator.getInstance()
> -------------------------------------------------------------------------------------------------------------------------
>
>                 Key: BEANUTILS-267
>                 URL: https://issues.apache.org/jira/browse/BEANUTILS-267
>             Project: Commons BeanUtils
>          Issue Type: Improvement
>          Components: Bean-Collections
>    Affects Versions: 1.7.0
>            Reporter: Jacob Kjome
>         Assigned To: Niall Pemberton
>            Priority: Minor
>             Fix For: 1.8.0
>
>
> The way the BeanComparator(String, Comparator) constructor is implemented is inconvenient.  I've got code that passes in a comparator.  This comparator may be null.  I assumed that the 2-args constructor would sanely ignore a null comparator argument and use a default like ReverseComparator does in commons-collections, but alas, no.  I have to do the null check before I pass it in  
> For instance, here's the constructor for ReverseComparator, which takes a Comparator argument...
>     public ReverseComparator(Comparator comparator) {
>         if(comparator != null) {
>             this.comparator = comparator;
>         } else {
>             this.comparator = ComparableComparator.getInstance();
>         }
>     }
> The null check and provided default is convenient and reasonable.  
> Here's the current constructor for BeanComparator that can only end in a NullPointerException if provided  null comparator....
>     public BeanComparator( String property, Comparator comparator ) {
>         setProperty( property );
>         this.comparator = comparator;
>     }
> Why not?....
>     public BeanComparator( String property, Comparator comparator ) {
>         setProperty( property );
>         if(comparator != null) {
>             this.comparator = comparator;
>         } else {
>             this.comparator = ComparableComparator.getInstance();
>         }
>     }
> The fact that BeanComparator allows itself to be put in a bad state by storing a null comparator which it later tries to use with no null check, guaranteeing a NullPointerException, probably should be considered a bug.  However, since it works just fine when provided a non-null comparator, I consider this more of an "Improvement" opportunity than a bug, thus the reported Issue Type.  Hopefully this can be applied to the next release.
> Jake

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org