Erik created COLLECTIONS-530:
--------------------------------

             Summary: Rejecting items on predicate failure without throwing an 
Exception
                 Key: COLLECTIONS-530
                 URL: https://issues.apache.org/jira/browse/COLLECTIONS-530
             Project: Commons Collections
          Issue Type: Improvement
          Components: List
    Affects Versions: 4.0
            Reporter: Erik



The PredicatedList class doesn't allow entries that fail the predicate, but 
throws an Exception on entry.
The problem I have with this, is that it places the onus of filtering out 
invalid entries on the caller.
I typically add items in a loop. The item added is the result of a method call 
(which returns null if it can't create one).
This problem is so common for me that I have created my own FilteredList class 
that simply ignores invalid entries.
I would like the PredicatedList class to be capable of rejecting items without 
throwing an exception.
I don't mind writing the code for this, but there are a great many ways in 
which this can be done.
So I was wondering what the interface should look like.

Separate FilteredList class.
Works, but seems a little verbose for the purpose

New factory method: filteredList(List<T> list, Predicate<? super T> predicate) 
Nice and simple, but doesn't allow extension; other ways of dealing with 
predicate failure.

New factory method with enum: predicatedList(List<T> list, Predicate<? super T> 
predicate, PredicateFailEnum action)
More verbose to use and adds an extra class, but allows more alternative ways 
to deal with predicate failure.
One more nice thing is that it might be less confusing, 
because choosing between predicatedList and the above filteredList might not be 
so obvious.

New factory method with interface: filteredList(List<T> list, Predicate<? super 
T> predicate, PredicateFailInterface action)
Complex, but the most flexible way of dealing with predicate failure.




--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to