[ 
http://issues.apache.org/jira/browse/COLLECTIONS-110?page=comments#action_12425847
 ] 
            
Dusan Chromy commented on COLLECTIONS-110:
------------------------------------------

My another argument for generics - and also an idea for improvement in 
collections.sf.net - would be to make
the functors work with checked exceptions.

Without generics, you have to wrap any checked exception in a FunctorException 
and unwrap it later, which sort of steals all the benefits of an algorithm over 
a loop.

Consider this example:

<code>
public deleteBulk(List l) throws AppException {
        try {
                CollectionUtils.forAllDo(l, new Closure() {
                        public void execute(Object arg) {
                                try {
                                        deleteAppObj((AppType)arg); //can throw 
AppException
                                } catch (AppException e) {
                                        throw new FunctorException(e);
                                }
                        }
                });
        } catch (FunctorException fe) {
                throw (AppException)fe.getCause();
        }
}
</code>

Now in Java 5 we can make our functors exception-savvy:

<code>
interface ThrowingClosure<T,E extends Exception> {
        void execute(T arg) throws E;
}
interface Closure<T> extends ThrowingClosure<T,RuntimeException> {}
</code>

With such functors you can rewrite the code from the above example so:

<code>
public deleteBulk(List l) throws AppException {
        CollectionUtils.forAllDo(l, new ThrowingClosure<AppType,AppException>() 
{
                public void execute(AppType arg) throws AppException {
                        deleteAppObj(arg); //can throw AppException
                }
        });
}
</code>

As you can see, the latter code is not cluttered with exception handling. Thats 
Apache Collections I'd like to have for my Java 5 projects!



> Support parametized classes with commons.collections.
> -----------------------------------------------------
>
>                 Key: COLLECTIONS-110
>                 URL: http://issues.apache.org/jira/browse/COLLECTIONS-110
>             Project: Commons Collections
>          Issue Type: Wish
>         Environment: Operating System: other
> Platform: Other
>            Reporter: Colbert Philippe
>
> It's time to create a parallel version of commons.collections to support 
> parametized classes of each container class and abstract class.  It's not 
> that 
> hard.  There is a 23 PDF document on Sun Java website describing in detail 
> how 
> it should be done and what to watch out for.
> I already converted a few classes from commons.collection privately for my 
> own 
> needs.  Once you get the hang of it, it's a rather quick process.
> I am even willing to volunteer my time to do some more but I need the 
> collaboration of some of the original programmers to watch over things.

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

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to