commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Erik (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (COLLECTIONS-530) Rejecting items on predicate failure without throwing an Exception
Date Sun, 01 Jun 2014 22:18:01 GMT

    [ https://issues.apache.org/jira/browse/COLLECTIONS-530?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14015107#comment-14015107
] 

Erik commented on COLLECTIONS-530:
----------------------------------

Thanks Thomas, I was not aware of that.
In that case, I agree that this feature should not be added to common-collections in the above
form.

Alternatively I could write a FilteredCollectionBuilder class like so:

FilteredCollectionBuilder<E> builder = new FilteredCollectionBuilder<>(predicate);
builder.addIfPredicateAccepts(e);
builder.addAllAcceptedByPredicate(collection);
PredicatedList<E> list = builder.createPredicatedListFromAcceptedElements(new ArrayList<E>());
PredicatedSet<E> set = builder.createPredicatedSetFromAcceptedElements(new ArrayList<E>());

Would you be interested in that?

> 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)

Mime
View raw message