Hi,

I have a mixed feeling about this release. If I remember well this code predates Java 5, and despite the amazing work that has been put into to generify the code, I wonder if it has been sufficiently thought out for a Java 5 world. I also made some observations, in no specific order:

- there are several marker interfaces, but maybe some annotations would make more sense?

- couldn't Function, UnaryFunction and BinaryFunction be unified with a single interface using a vararg parameter?

- EachElement should be able to work on any Iterable. Also I'm not sure to understand why its constructor is public.

- Shouldn't Generator implement Iterable?

- why are equals, hashCode and toString defined in the Functor interface?

- why Predicate isn't an extension of Function<Boolean> ?

- why Procedure isn't an extension of Function<Void> ?

- Why are constants available through both a static field AND a static method? For example Identity.INSTANCE and Identify.instance(), or Constant.TRUE and Constant.truePredicate() ?

- The Javadoc for Limit states "A predicate that returns true the first n times it is invoked.", but what happens after? Is it the opposite of Offset?

- Why aren't Limit and Offset serializable like the other classes in the core package?

- Limit and Offset could probably use an AtomicInteger instead of a synchronized block

- the site has no example easily accessible, the reader is invited to browse the JUnit tests. That's not really user friendly.

- I see IllegalArgumentExceptions thrown for null values, shouldn't this be changed to throw NullPointerExceptions ?

- @inheritDoc tags should be removed if no additional description is provided in the subclasses. This tag is only useful for extending the description from the method of the super class.

- what's the point of having equals(T) methods in addition to equals(Object) ? It clutters the API.

- CollectionTransformer has a todo stating : "TODO revisit this class..."

- There are several untested classes in the composite package

- Most of the equals/hashcode methods are not tested


I haven't reviewed everything yet, but that's what I saw at a first glance.

Emmanuel Bourg



Le 20/10/2011 19:41, Simone Tripodi a écrit :
Hi all guys,
I'm writing to call for a vote to release apache commons-functor-1.0
based on RC1.

The vote will stay open for 72 hours and closes on Sunday 23th, at 5:40pm CET.

Many thanks in advance for reviewing, have a nice day!
All the best,
Simo

Release notes:

  http://people.apache.org/builds/commons/functor/1.0/RC1/RELEASE-NOTES.txt

Tag:

  https://svn.apache.org/repos/asf/commons/proper/functor/tags/FUNCTOR_1_0_RC1/

Site:

  http://people.apache.org/builds/commons/functor/1.0/RC1/site/

Binaries:

  http://people.apache.org/builds/commons/functor/1.0/RC1/binaries/

Maven Artifacts (staged on Nexus)

  
https://repository.apache.org/content/repositories/orgapachecommons-086/org/apache/commons/commons-functor/

[ ] +1 release it
[ ] +0 go ahead I don't care
[ ] -1 no, do not release it because... (please explain why)

http://people.apache.org/~simonetripodi/
http://simonetripodi.livejournal.com/
http://twitter.com/simonetripodi
http://www.99soft.org/

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


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

Reply via email to