You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by tn...@apache.org on 2013/11/05 13:45:57 UTC

svn commit: r3421 - in /dev/commons/collections: ./ binaries/ source/

Author: tn
Date: Tue Nov  5 12:45:52 2013
New Revision: 3421

Log:
Creating distribution files for Commons Collections 4.0 RC1.

Added:
    dev/commons/collections/RELEASE-NOTES.txt   (with props)
    dev/commons/collections/binaries/commons-collections4-4.0-bin.tar.gz   (with props)
    dev/commons/collections/binaries/commons-collections4-4.0-bin.tar.gz.asc
    dev/commons/collections/binaries/commons-collections4-4.0-bin.tar.gz.md5
    dev/commons/collections/binaries/commons-collections4-4.0-bin.tar.gz.sha1
    dev/commons/collections/binaries/commons-collections4-4.0-bin.zip   (with props)
    dev/commons/collections/binaries/commons-collections4-4.0-bin.zip.asc
    dev/commons/collections/binaries/commons-collections4-4.0-bin.zip.md5
    dev/commons/collections/binaries/commons-collections4-4.0-bin.zip.sha1
    dev/commons/collections/source/commons-collections4-4.0-src.tar.gz   (with props)
    dev/commons/collections/source/commons-collections4-4.0-src.tar.gz.asc
    dev/commons/collections/source/commons-collections4-4.0-src.tar.gz.md5
    dev/commons/collections/source/commons-collections4-4.0-src.tar.gz.sha1
    dev/commons/collections/source/commons-collections4-4.0-src.zip   (with props)
    dev/commons/collections/source/commons-collections4-4.0-src.zip.asc
    dev/commons/collections/source/commons-collections4-4.0-src.zip.md5
    dev/commons/collections/source/commons-collections4-4.0-src.zip.sha1

Added: dev/commons/collections/RELEASE-NOTES.txt
==============================================================================
--- dev/commons/collections/RELEASE-NOTES.txt (added)
+++ dev/commons/collections/RELEASE-NOTES.txt Tue Nov  5 12:45:52 2013
@@ -0,0 +1,320 @@
+
+              Apache Commons Collections
+                     Version 4.0
+                    RELEASE NOTES
+
+INTRODUCTION:
+
+Commons collections is a project to develop and maintain collection classes
+based on and inspired by the JDK collection framework.
+This version uses the generics features of Java 5 and is not compatible with
+earlier JDK versions.
+
+The process of generifying an API is complex.
+For commons-collections, we have chosen to break the API in various ways.
+The aim behind this is to provide an API design that better suits generics.
+We have also removed all deprecated classes and fixed oddities in the previous
+API that we couldn't fix due to backwards compatibility restrictions.
+
+As such, this release can not be considered to be a simple, drop-in, replacement
+for commons-collections. To help with the migration to this new version, the
+package has changed to "org.apache.commons.collections4", thus it is possible
+to have both commons-collections versions in the classpath.
+
+These release notes will try to guide you in the process of upgrading, however you
+should remember that this is a new API based on the original, so some concepts
+have changed.
+
+Compatibility with previous releases
+------------------------------------
+
+This release is not source or binary compatible with previous releases of
+Commons Collections. This includes releases from the 3.x branch as well as
+preceding alpha releases for 4.0 (see details of changes below).
+
+
+Major changes since 3.2.1
+-------------------------
+
+ o Use of generics and other language features introduced in Java 5 (varargs, Iterable)
+ o Removed deprecated classes / methods and features which are now supported by the JDK
+ o Replaced Buffer interface with java.util.Queue
+ o Added concept of split maps with respective interfaces Put / Get (see also package splitmap)
+ o Added new Trie interface together with an implementation of a Patricia Trie
+
+
+Changes since 4.0-alpha1
+------------------------
+
+ o [COLLECTIONS-488] Added "CollectionsUtils#matchesAll(Iterable, Predicate)" to test if all elements
+                     of a collection match a given predicate. Thanks to Josh Cain.
+ o [COLLECTIONS-485] Accept wildcard input where possible, e.g. in copy-constructors, Unmodifiable* decorators
+                     and iterators. Thanks to Hollis Waite.
+ o [COLLECTIONS-481] No collision detection/resolution was performed when calling "CompositeSet#addComposited(...)"
+                     with more than one Set as argument. Additionally use varargs parameters instead of arrays
+                     in CompositeSet and CompositeCollection constructor and addComposited method. Thanks to Hollis Waite.
+ o [COLLECTIONS-480] Narrow return type of "BidiMap#values()" to Set as the values are required to be unique. Thanks to Hollis Waite.
+ o [COLLECTIONS-468] Renamed CompliantBag to CollectionBag.
+ o [COLLECTIONS-475] Fixed conversion of timeout parameters in "PassiveExpiringMap".
+
+
+Removed classes
+---------------
+
+ o [COLLECTIONS-458] Removed unused class "AbstractUntypedCollectionDecorator<E, D>"
+ o [COLLECTIONS-432] Removed "Buffer" interface and all its implementations and related classes.
+                     Replaced by "java.util.Queue", see also section [New classes]
+                     
+   - PriorityBuffer: use either java.util.PriorityQueue or java.util.concurrent.PriorityBlockingQueue
+   - SynchronizedBuffer: use the corresponding *BlockingQueue classes in java.util.concurrent
+   - BoundedBuffer: use either ArrayBlockingBuffer(capacity) or LinkedBlockingBuffer(capacity) in java.util.concurrent
+   - UnboundedFifoBuffer: use either java.util.LinkedList or java.util.concurrent.LinkedBlockingBuffer
+                     
+ o [COLLECTIONS-351] Removed features now supported by the JDK
+ 
+   - FastArrayList: use java.util.concurrent.CopyOnWriteArrayList
+   - FastHashMap: use java.util.concurrent.ConcurrentHashMap, but beware of null keys and values
+   - FastTreeSet: no direct replacement, use ConcurrentHashMap or a synchronized TreeMap
+   - IdentityMap: use java.util.IdentityHashMap
+   - ExtendedProperties: use commons-configuration
+   - Synchronized[List,Set,SortedSet]: use java.util.Collections.synchronized*()
+   - Typed* decorators: use generics for type safety, or java.util.Collections.checked*()
+   - [List,Set,Map]Utils.EMPTY_*: use the corresponding fields in java.util.Collections
+ 
+ o [COLLECTIONS-229] Removed deprecated collection classes and methods
+
+
+New classes
+-----------
+
+ o [COLLECTIONS-468] CollectionBag - decorates another Bag to make it comply with the Collection contract.
+ o [COLLECTIONS-463] PushbackIterator - supports pushback of elements during iteration. Thanks to Andy Seaborne, Claude Warren.
+ o [COLLECTIONS-462] PeekingIterator - supports one-element lookahead during iteration. Thanks to Andy Seaborne, Claude Warren.
+ o [COLLECTIONS-432] CircularFifoQueue - analogous class to CircularFifoBuffer for the Queue interface
+                     PredicatedQueue - analogous class to PredicatedBuffer
+                     TransformedQueue - analogous class to TransformedBuffer
+                     UnmodifiableQueue - analogous class to UnmodifiableBuffer
+                     QueueUtils - analogous class to BufferUtils
+ o [COLLECTIONS-422] PermutationIterator - generates unordered permutations of a collection. Thanks to Benoit Corne. 
+ o [COLLECTIONS-404] SequencesComparator - an implementation of Eugene Myers difference algorithm in package o.a.c.c.sequence. Thanks to Jordane Sarda.
+ o [COLLECTIONS-396] LazyIteratorChain - a variant of IteratorChain which supports lazy initialization. Thanks to Jeff Rodriguez.
+ o [COLLECTIONS-322] NodeListIterator - supports iteration over a org.w3c.dom.NodeList. Thanks to Thomas Vahrst. 
+ o [COLLECTIONS-313] CatchAndRethrowClosure - re-throws any checked exception as unchecked "FunctorException". Thanks to David J. M. Karlsen. 
+ o [COLLECTIONS-275] IndexedCollection - collection decorator which provides a map-like view on an existing collection. Thanks to Stephen Kestle. 
+ o [COLLECTIONS-258] DualLinkedHashBidiMap - bidi map implementation using LinkedHashMap instances. Thanks to Nathan Blomquist. 
+ o [COLLECTIONS-242] Equator - interface for testing object equality. 
+ o [COLLECTIONS-241] PassiveExpiringMap - map decorator which passively expires entries. Thanks to Elifarley Callado Coelho.
+ o [COLLECTIONS-225] PatriciaTrie - PATRICIA trie implementation for the new Trie interface, together with Unmodifiable and
+                     Synchronized decorators. Thanks to Sam Berlin and Roger Kapsi.
+ o [COLLECTIONS-8  ] ComparatorPredicate - predicate to compare objects against a fixed instance. Thanks to Rune Peter Bjørnstad.
+ o [None           ] Put / Get - interfaces for split maps
+ o [None           ] SplitMapUtils / splitmap.TransformedSplitMap - utilities and implementation for split maps
+
+
+New methods in *Utils
+---------------------
+
+ o [COLLECTIONS-488] Added "CollectionsUtils#matchesAll(Iterable, Predicate)" to test if all elements
+                     of a collection match a given predicate. Thanks to Josh Cain.
+ o [COLLECTIONS-456] ListUtils#longestCommonSubsequence(...) to get the longest common subsequence of arbitrary lists or CharSequences.
+ o [COLLECTIONS-450] CollectionUtils#forAllButLastDo(Collection, Closure) and forAllButLastDo(Iterator, Closure). Thanks to J. Moldawski.
+ o [COLLECTIONS-446] CollectionUtils#isEqualCollection(Collection, Collection, Equator). Thanks to Matt Lachman.
+ o [COLLECTIONS-436] *Utils#emptyIfNull(*) methods in classes CollectionUtils, ListUtils, SetUtils and MapUtils. Thanks to Arman Sharif.
+ o [COLLECTIONS-429] CollectionUtils#containsAll(Collection, Collection) with guaranteed runtime complexity of O(n + m)
+   +COLLECTIONS-434] and space complexity of O(n). This method may yield much better performance than Collection.containsAll(Collection)
+                     depending on the use-case and type of collection used. Thanks to Adrian Nistor, Mert Guldur.
+ o [COLLECTIONS-422] CollectionUtils#permutations(Collection) to generate all permutations of a collection. Thanks to Benoit Corne. 
+ o [COLLECTIONS-405] ListUtils#select() and ListUtils#selectRejected() methods. Thanks to Adam Dyga. 
+ o [COLLECTIONS-393] ListUtils#partition() to split a List into consecutive sublists. Thanks to Chris Shayan. 
+ o [COLLECTIONS-383] CollectionUtils#forAllDo(Iterator, Closure). Thanks to Adrian Cumiskey.  
+ o [COLLECTIONS-375] ListUtils#defaultIfNull(List, List). Thanks to Ivan Hristov. 
+ o [COLLECTIONS-361] CollectionUtils#filterInverse(Iterable, Predicate). Thanks to Jean-Noel Rouvignac.  
+ o [COLLECTIONS-306] CollectionUtils#subtract(Iterable, Iterable, Predicate). Thanks to Chris Shayan.  
+ o [COLLECTIONS-296] CollectionUtils#collate(...) to merge two sorted Collections using the standard O(n) merge algorithm. Thanks to Julius Davies.  
+ o [COLLECTIONS-286] CollectionUtils#extractSingleton(Collection). Thanks to Geoffrey De Smet.  
+ o [COLLECTIONS-263] MapUtils#populateMap(MultiMap, ...) to support also "MultiMap" instances as input. Thanks to John Hunsley.  
+ o [COLLECTIONS-235] ListUtils#indexOf(List, Predicate). Thanks to Nathan Egge. 
+ o [COLLECTIONS-194] MapUtils#populateMap(Map, Iterable, Transformer, ...). Thanks to Dave Meikle. 
+
+
+New features
+------------
+
+ o [COLLECTIONS-399] Added new method "get(int)" to "CircularFifoQueue". Thanks to Sebb.
+ o [COLLECTIONS-327] Added serialVersionUID fields for "CompositeCollection", "CompositeSet", "EmptyMapMutator", "EmptySetMutator". Thanks to sebb. 
+ o [COLLECTIONS-293] Added support for using custom "Equator" objects in "EqualPredicate". Thanks to Stephen Kestle. 
+ o [COLLECTIONS-289] Added method "CollatingIterator#getIteratorIndex()". Thanks to Fredrik Kjellberg.
+ o [COLLECTIONS-285] Added serialization support for "TreeBidiMap". Thanks to Christian Gruenberg. 
+ o [COLLECTIONS-272] Added serialization support for "FixedOrderComparator" and "TransformingComparator". Thanks to Chaitanya Mutyala. 
+ o [COLLECTIONS-260] Added constructor "TransformingComparator(Transformer)". Thanks to Stephen Kestle. 
+ o [COLLECTIONS-237] Added method "MultiValueMap#iterator()" to return a flattened version of "entrySet().iterator()".
+                     Clarified javadoc for "entrySet()" that the returned Entry objects are unflattened, i.e. the Entry object
+                     for a given key contains all values mapped to this key. Thanks to Nils Kaiser, Alan Mehlo. 
+ o [COLLECTIONS-226] Added method "ListOrderedMap#putAll(int, Map)". Thanks to Vasily Ivanov. 
+ o [COLLECTIONS-213] Added support for resettable iterators in "IteratorIterable". Thanks to Dusan Chromy. 
+
+
+Changed classes / methods
+-------------------------
+
+ o [COLLECTIONS-485] Accept wildcard input where possible, e.g. in copy-constructors, Unmodifiable* decorators
+                     and iterators. Thanks to Hollis Waite.
+ o [COLLECTIONS-480] Narrow return type of "BidiMap#values()" to Set as the values are required to be unique. Thanks to Hollis Waite.
+ o [COLLECTIONS-473] Made field "collection" in class "AbstractCollectionDecorator" private and added
+                     setter "setCollection(Collection)" with scope protected to set the decorated collection
+                     during de-serialization.
+ o [COLLECTIONS-466] Replaced "Collection" with "Iterable" for method arguments where applicable.
+ o [COLLECTIONS-460] Changed "IteratorChain" to use internally a "Queue" instead of a "List". Iterators are
+                     removed from the queue once used and can be garbage collected after being exhausted.
+                     Additionally removed the methods "setIterator(Iterator)" and "getIterators()".
+ o [COLLECTIONS-459] Removed method "setArray(Object)" in class ArrayIterator and method "setArray(Object[])"
+                     in class ObjectArrayIterator and made fields array, startIndex and endIndex final and package private.
+ o [COLLECTIONS-455] Changed scope of various fields to private / package private where appropriate.
+ o [COLLECTIONS-454] An iterator over a "Flat3Map#entrySet()" will now return independent Map.Entry objects that will
+                     not change anymore when the iterator progresses.
+ o [COLLECTIONS-453] Several closure and transformer implementations in the functor package will now copy
+                     an array as input parameter to their constructor (e.g. ChainedClosure).
+ o [COLLECTIONS-452] Change base package to "org.apache.commons.collections4".
+ o [COLLECTIONS-451] The constructors for all *Utils classes are now private to prevent instantiation. 
+ o [COLLECTIONS-424] "CompositeSet" does not inherit from "CompositeCollection" anymore. The inner class "SetMutator"
+                     has been updated accordingly. Thanks to Michael Pradel.
+ o [COLLECTIONS-382] Change maven coordinates to "org.apache.commons.commons-collections4". Thanks to Olivier Lamy. 
+ o [COLLECTIONS-381] Move the project structure to a standard maven layout. Thanks to Olivier Lamy. 
+ o [COLLECTIONS-372] TransformingComparator now supports different types for its input/output values. 
+ o [COLLECTIONS-362] "CollectionUtils#filter(Iterable, Predicate)" will now return whether the collection has been modified.
+                     Thanks to Jean-Noel Rouvignac. 
+ o [COLLECTIONS-341] "NOPClosure" is now a final class. Thanks to Goran Hacek. 
+ o [COLLECTIONS-324] Fields transformer and decorated in class "TransformingComparator" are now final. Thanks to sebb. 
+ o [COLLECTIONS-307] "SetUniqueList#subList()" will now return an unmodifiable list as changes to it may invalidate the parent list.
+                     Thanks to Christian Semrau, Thomas Vahrst. 
+ o [COLLECTIONS-298] Calling "CollectionUtils#sizeIsEmpty(null)" will now return true. Thanks to Benjamin Bentmann. 
+ o [COLLECTIONS-280] The predicate that rejected an object to be added to a "PredicatedCollection" is now contained in the
+                     respective exception message. Thanks to Chris Lewis. 
+ o [COLLECTIONS-265] "TreeBag" will now only accept "Comparable" objects as input when used with natural ordering. Thanks to David Saff. 
+ o [COLLECTIONS-251] The static factory methods have been renamed from "getInstance()" to a camel-case version of the class name,
+   +COLLECTIONS-321] e.g. "truePredicate()" for class "TruePredicate". Thanks to Stephen Kestle.
+ o [COLLECTIONS-240] "MultiValueMap" is now serializable. Thanks to Wouter de Vaal. 
+ o [COLLECTIONS-231] Return concrete class in static factory methods instead of base class interface
+                     (except for Unmodifiable decorators). Thanks to Torsten Curdt. 
+ o [COLLECTIONS-230] "CollectionUtils#size(Collection)" now returns 0 when called with null as input. Thanks to Stepan Koltsov,sebb.
+   +COLLECTIONS-297]
+   +COLLECTIONS-318]
+ o [COLLECTIONS-223] "CollectionUtils#addAll(...)" methods now return if the collection has been changed by this operation.
+                     Thanks to Vasily Ivanov. 
+ o [COLLECTIONS-221] "CompositeCollection", "CompositeMap" and "CompositeSet" are now serializable. Thanks to Pal Denes. 
+ o [COLLECTIONS-218] The "CollectionUtils#select(Collection, Predicate, Collection)" method will now return the output collection. 
+ o [COLLECTIONS-182] "CollectionUtils#forAllDo(Collection, Closure)" now returns the provided closure. Thanks to Jim Cakalic. 
+ o [COLLECTIONS-110] Make generic versions of all classes in collections.
+   +COLLECTIONS-243]
+   +COLLECTIONS-245]
+   +COLLECTIONS-247]
+   +COLLECTIONS-253]
+   +COLLECTIONS-273]
+   +COLLECTIONS-282]     
+ o [None           ] Switch Abstract*Decorator classes to expose decorated() protected method instead of the decorated collection directly.
+                     Each class overrides decorated() to add its type covariantly, thus getList()/getSet() etc. methods are removed
+ o [None           ] ArrayStack is now deprecated and will be removed in the next major release. It is replaced by the java.util.Deque
+                     interface available from Java 6.
+
+
+Fixed Bugs
+----------
+
+ o [COLLECTIONS-481] No collision detection/resolution was performed when calling "CompositeSet#addComposited(...)"
+                     with more than one Set as argument. Additionally use varargs parameters instead of arrays
+                     in CompositeSet and CompositeCollection constructor and addComposited method. Thanks to Hollis Waite.
+ o [COLLECTIONS-475] Fixed conversion of timeout parameters in "PassiveExpiringMap".
+ o [COLLECTIONS-474] ListOrderedMap#putAll(index, Object, Object) does not throw an exception anymore if the
+                     map contains null values. Additionally added javadoc clarification on the supported bounds
+                     for the index parameter. Thanks to Ning Chen.
+ o [COLLECTIONS-472] Improved performance of "AbstractMapBag#containsAll(Collection)" by returning immediately
+                     after a difference has been found. Thanks to Adrian Nistor.
+ o [COLLECTIONS-461] Added additional clarification to javadoc of interface "Put" wrt return type of
+                     "put(Object, Object)" method. Thanks to Matt Benson, sebb. 
+ o [COLLECTIONS-447] Tree traversal with a TreeListIterator will not be affected anymore by the removal of an element directly after
+                     a call to previous(). Thanks to Jeffrey Barnes. 
+ o [COLLECTIONS-445] Adapt and/or ignore several unit tests when run on a IBM J9 VM (specification version 1.6.0) due to a faulty
+                     "java.util.TreeMap" implementation. 
+ o [COLLECTIONS-444] SetUniqueList.set(int, E) now works correctly if the object to be inserted is already placed at the given position.
+                     Thanks to Thomas Vahrst, John Vasileff. 
+ o [COLLECTIONS-441] MultiKeyMap.clone() now correctly calls super.clone(). Thanks to Thomas Vahrst. 
+ o [COLLECTIONS-433] Improve performance of "TreeList#addAll" and "TreeList(Collection)" by converting the input collection into an
+                     AVL tree and efficiently merge it into the existing tree. Thanks to Jeffrey Barnes. 
+ o [COLLECTIONS-427] Fixed performance issue in "SetUniqueList#retainAll" method for large collections. Thanks to Mert Guldur. 
+ o [COLLECTIONS-426] Fixed performance issue in "ListOrderedSet#retainAll" method for large collections. Thanks to Adrian Nistor. 
+ o [COLLECTIONS-425] Improved performance of "ListOrderedMap#remove(Object)" method. Thanks to Adrian Nistor. 
+ o [COLLECTIONS-421] Update javadoc for "ListUtils#lazyList()" and "ListUtils#fixedSizeList()". Thanks to Benedikt Ritter. 
+ o [COLLECTIONS-419] Added clarifying javadoc wrt runtime complexity of "AbstractDualBidiMap#retainAll". Thanks to Adrian Nistor. 
+ o [COLLECTIONS-417] Added clarifying javadoc wrt runtime complexity of "AbstractLinkedList#retainAll". Thanks to Adrian Nistor. 
+ o [COLLECTIONS-415] Added clarifying javadoc wrt runtime complexity of "AbstractLinkedList#removeAll". Thanks to Adrian Nistor. 
+ o [COLLECTIONS-414] Fixed several compilation issues with older Java 1.6 compilers. 
+ o [COLLECTIONS-413] Improved performance of "removeAll()" method for sets returned by "DualHashBidiMap#entrySet()". Thanks to Adrian Nistor. 
+ o [COLLECTIONS-412] Improved performance of "CollectionUtils#subtract" methods. Thanks to Adrian Nistor. 
+ o [COLLECTIONS-411] Fixed possible "IndexOutOfBoundsException" in "ListOrderedMap#putAll". Thanks to Adrian Nistor. 
+ o [COLLECTIONS-410] Improved performance of "SetUniqueList#addAll" method. Thanks to Adrian Nistor. 
+ o [COLLECTIONS-409] Improved performance of "ListOrderedSet#addAll" method. Thanks to Adrian Nistor. 
+ o [COLLECTIONS-408] Improved performance of "SetUniqueList#removeAll". Thanks to Adrian Nistor. 
+ o [COLLECTIONS-407] Improved performance of "ListOrderedSet#remove(Object)" in case the object is  not contained in the Set. Thanks to Adrian Nistor. 
+ o [COLLECTIONS-406] Improved performance of "ListUtils#subtract" method. Thanks to Adrian Nistor. 
+ o [COLLECTIONS-400] Added missing null check in "CollectionUtils#addIgnoreNull(Collection, Object)". Thanks to Shin Hwei Tan. 
+ o [COLLECTIONS-391] Fixed javadoc for "MapUtils#toProperties(Map)". Thanks to Shin Hwei Tan. 
+ o [COLLECTIONS-389] Clarified javadoc for "TransformerUtils#mapTransformer" for null input. Thanks to Shin Hwei Tan. 
+ o [COLLECTIONS-388] Clarified javadoc for "FactoryUtils#prototypeFactory" for null input. Thanks to Shin Hwei Tan. 
+ o [COLLECTIONS-384] Fixed inconsistent javadoc for "MapUtils#synchronizedMap(Map)". Thanks to Shin Hwei Tan. 
+ o [COLLECTIONS-380] Fixed infinite loop when calling "UnmodifiableBoundedCollection#unmodifiableBoundedCollection()". Thanks to Dave Brosius. 
+ o [COLLECTIONS-379] Fixed javadoc for several methods wrt expected NullPointerExceptions. Thanks to Shin Hwei Tan. 
+ o [COLLECTIONS-364] "DualTreeBidiMap" now uses the correct comparator for the reverse map during de-serialization. 
+ o [COLLECTIONS-363] "TransformedMap" in the package "splitmap" can now be serialized. 
+ o [COLLECTIONS-360] "FilterListIterator#hasNext" does not throw a NullPointerException anymore to comply to the Java iterator specification.
+                     Thanks to Sai Zhang. 
+ o [COLLECTIONS-359] "ListUtils#intersection(List, List)" will now also work correctly if there are duplicate elements in the provided lists.
+                     Thanks to Mark Shead. 
+ o [COLLECTIONS-352] "AbstractCollectionDecorator" will now use internally "decorated()" to access the decorated collection. Thanks to Adam Gent. 
+ o [COLLECTIONS-350] Removed debug output in "MapUtils#getNumber(Map)". Thanks to Michael Akerman. 
+ o [COLLECTIONS-348] Fixed javadoc for all "transformedXXX(XXX)" methods in the respective Utils classes to clarify that existing objects in the
+                     list are not transformed. Thanks to Paul Benedict. 
+ o [COLLECTIONS-343] Singleton classes in package "functors" are now correctly de-serialized. Thanks to Goran Hacek. 
+ o [COLLECTIONS-340] Removed broken methods "equals(Object)" and "hashCode()" in class "NOPClosure". Thanks to Goran Hacek. 
+ o [COLLECTIONS-336] Simplified exceptions as the cause is available from the parent. Thanks to sebb. 
+ o [COLLECTIONS-335] Fixed cache assignment for "TreeBidiMap#entrySet". Thanks to sebb. 
+ o [COLLECTIONS-334] Synchronized access to lock in "StaticBucketMap#size()". Thanks to sebb. 
+ o [COLLECTIONS-332] Added clarification to javadoc of "ListOrderedMap" that "IdentityMap" and "CaseInsensitiveMap" are not supported.
+                     Thanks to Tom Parker. 
+ o [COLLECTIONS-331] Improve javadoc of "CollatingIterator" wrt the used "Comparator" and throw a NullPointerException in "CollatingIterator#least"
+                     if no comparator is set. Thanks to Michael Krkoska. 
+ o [COLLECTIONS-330] "LRUMap#keySet()#remove(Object)" will not throw a "ConcurrentModificationException" anymore. Thanks to Joerg Schaible. 
+ o [COLLECTIONS-328] Improved performance of "ListUtils#intersection(List, List)". Thanks to Thomas Rogan, Jilles van Gurp. 
+ o [COLLECTIONS-323] Changed behavior of "CaseInsensitiveMap" constructor to be compliant with "HashMap" in case the initial capacity is set to zero.
+                     Thanks to Maarten Brak. 
+ o [COLLECTIONS-320] Improved performance of "StaticBucketMap#putAll(Map)" by iterating over the entry set. Thanks to sebb. 
+ o [COLLECTIONS-319] Avoid redundant null check in "IteratorUtils#getIterator(Object)". Thanks to sebb. 
+ o [COLLECTIONS-317] Use a private method to populate the object in "AbstractHashedMap(Map)". Thanks to sebb. 
+ o [COLLECTIONS-316] Fixed javadoc of "LRUMap" wrt to the maxSize parameter of the constructor. Thanks to ori. 
+ o [COLLECTIONS-312] Use of final keyword where applicable, minor performance improvements by properly initializing the capacity of newly created
+                     collections when known in advance. Thanks to Peter Lawrey, Gary Gregory. 
+ o [COLLECTIONS-307] "SetUniqueList#subList()#contains(Object)" will now correctly check the subList rather than the parent list.
+                     Thanks to Christian Semrau. 
+ o [COLLECTIONS-304] "SetUniqueList#set(int, Object)" will now correctly enforce the uniqueness constraint. Thanks to Rafał Figas,Bjorn Townsend. 
+ o [COLLECTIONS-303] Improved javadoc for "Unmodifiable*" classes wrt behavior when the users tries to modify the collection. Thanks to Emmanuel Bourg. 
+ o [COLLECTIONS-294] "CaseInsensitiveMap" will now convert input strings to lower-case in a locale-independant manner. Thanks to Benjamin Bentmann. 
+ o [COLLECTIONS-256] Fixed javadoc for "ListUtils#transformedList(List)" to clarify that existing objects in the list are not transformed.
+   +COLLECTIONS-288] Thanks to Paul Benedict. 
+ o [COLLECTIONS-266] "MultiKey" will now be correctly serialized/de-serialized. Thanks to Joerg Schaible. 
+ o [COLLECTIONS-262] Fixed javadoc for methods "firstKey()" and "lastKey()" in class "AbstractLinkedMap". Thanks to Lisen Mu. 
+ o [COLLECTIONS-261] "Flat3Map#remove(Object)" will now return the correct value mapped to the removed key if the size of the map is less or equal 3.
+                     Thanks to ori. 
+ o [COLLECTIONS-255] Removed unused variables in "TreeBidiMap". Thanks to Henri Yandell. 
+ o [COLLECTIONS-249] "SetUniqueList.addAll(int, Collection)" now correctly add the collection at the provided index. Thanks to Joe Kelly. 
+ o [COLLECTIONS-232] Fixed several unit tests which were using parameters to "assertEquals(...)" in wrong order. Thanks to Mark Hindess. 
+ o [COLLECTIONS-228] "MultiValueMap#put(Object, Object)" and "MultiValueMap#putAll(Object, Collection)" now correctly return if the map
+                     has changed by this operation. 
+ o [COLLECTIONS-219] "CollectionUtils#removeAll" wrongly called "ListUtils#retainAll". Thanks to Tom Leccese. 
+ o [COLLECTIONS-217] Calling "setValue(Object)" on any Entry returned by a "Flat3Map" will now correctly set the value for the current entry.
+                     Thanks to Matt Bishop. 
+ o [COLLECTIONS-216] "MultiKey#toString()" will now use "Arrays#toString(List)". Thanks to Hendrik Maryns. 
+
+
+For complete information on Commons Collections, including instructions on how to submit bug reports,
+patches, or suggestions for improvement, see the Apache Commons Collections website:
+
+http://commons.apache.org/proper/commons-collections/

Propchange: dev/commons/collections/RELEASE-NOTES.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: dev/commons/collections/RELEASE-NOTES.txt
------------------------------------------------------------------------------
    svn:keywords = Id Revision HeadURL

Propchange: dev/commons/collections/RELEASE-NOTES.txt
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: dev/commons/collections/binaries/commons-collections4-4.0-bin.tar.gz
==============================================================================
Binary file - no diff available.

Propchange: dev/commons/collections/binaries/commons-collections4-4.0-bin.tar.gz
------------------------------------------------------------------------------
    svn:mime-type = application/x-gzip

Added: dev/commons/collections/binaries/commons-collections4-4.0-bin.tar.gz.asc
==============================================================================
--- dev/commons/collections/binaries/commons-collections4-4.0-bin.tar.gz.asc (added)
+++ dev/commons/collections/binaries/commons-collections4-4.0-bin.tar.gz.asc Tue Nov  5 12:45:52 2013
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.11 (GNU/Linux)
+
+iQIcBAABAgAGBQJSeORfAAoJEKQfE8mZlFKTiJ8P/AxHlY76TKk7KawCCrTDX430
+zalt2bpwzVi0TUWg1+XGCAhc1ZCI3sTBPqNvmz2bNCFbKoAdQfqQsFmKkZTPYq0x
+v0ZR7CcSOab0XvNe2M0G77v509FL0brlJIpGAS9CWhm4/s+JZt0H1U7oMlWjyiJc
+UND4JzfrP/k6L6Z+r27mw+phDW6/L33+sVoDWkFrwbici3EmcUCAK7F9X7Km70Ov
+HNbTsWbZAEWLCnXrRT6cipfISGKKOSkbA20T2IG/8x+WFLRb74yW+4LDYJ4DaZZF
+EX04xe2bkrmHk1dClPpr/iEkeE+hYK5Y7fzwEWJuCC12T1ef1c5Vc9rab9q3/OHU
+HTbxqV7RVPwePiWLkom4JUIb93jPMnKwSoIsf3SUk7aBgnFDb7qJ7Xp+hXe+Msxy
+NVBAudffotX5PhJS4CxpQFjMCec+i/o0xRuRGAJbO7n5oblvpmUm0Jw1eXApxray
+cFy/BXwl5VDxdW4xFcvG6fTV4bYYkUgNbgyPvDpDNRad8LLQVka0vsUSN3Mlwbst
+xTLjWvRk4ni40ZyeZwlbxD3X9Yu03nB2sT5Vc45NpATWNdOu7SRD78Xh/pyfE0m3
+OPRjjmSq2VqxE510fSn0GEVm9X3cqA2qXXX5SE7YOjw/2djsTMO4f3BTjF+PBfaN
+twFyqUT9L5v3LBhwE8+5
+=9zFs
+-----END PGP SIGNATURE-----

Added: dev/commons/collections/binaries/commons-collections4-4.0-bin.tar.gz.md5
==============================================================================
--- dev/commons/collections/binaries/commons-collections4-4.0-bin.tar.gz.md5 (added)
+++ dev/commons/collections/binaries/commons-collections4-4.0-bin.tar.gz.md5 Tue Nov  5 12:45:52 2013
@@ -0,0 +1 @@
+01838770ed97a5c9864a610534cc89d2
\ No newline at end of file

Added: dev/commons/collections/binaries/commons-collections4-4.0-bin.tar.gz.sha1
==============================================================================
--- dev/commons/collections/binaries/commons-collections4-4.0-bin.tar.gz.sha1 (added)
+++ dev/commons/collections/binaries/commons-collections4-4.0-bin.tar.gz.sha1 Tue Nov  5 12:45:52 2013
@@ -0,0 +1 @@
+51ee779ffebf67ccb4d9e122ae44fb623bd8789e
\ No newline at end of file

Added: dev/commons/collections/binaries/commons-collections4-4.0-bin.zip
==============================================================================
Binary file - no diff available.

Propchange: dev/commons/collections/binaries/commons-collections4-4.0-bin.zip
------------------------------------------------------------------------------
    svn:mime-type = application/zip

Added: dev/commons/collections/binaries/commons-collections4-4.0-bin.zip.asc
==============================================================================
--- dev/commons/collections/binaries/commons-collections4-4.0-bin.zip.asc (added)
+++ dev/commons/collections/binaries/commons-collections4-4.0-bin.zip.asc Tue Nov  5 12:45:52 2013
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.11 (GNU/Linux)
+
+iQIcBAABAgAGBQJSeORgAAoJEKQfE8mZlFKTcfQP/i3/x1o+D4OJMlU48FV9ZcdC
+IBzkgCcoqg5z2umHXh4vOine4PxqJHVsn1VAdJcPJqwsX5LDCnymtSwut7oYirxA
+N9zeZ15AtcryyZ+i0en10nmuvqgQ5QOJw2hA6IbEsl0zvrkH8exFBuLDFJfTUk45
+pc2atAbxwatAOAFEey1zvfTsdeHhgY8nfmGXF5wjd17HD4pKWT4w2LbJYrJqhFGB
+7u+V3A9o/FkUxZAT+ubvLqRd+K48DOnz+rZyHGOs6xT/n7qeSBhf+6hJSiu5n4sm
+ijNUqx6JMNx4b8sWl43BSpjHPrY79ZfQlKiXv1S5QdWRhazAHIWrV2dZrOTqmeR6
+oYmumvAQsonTwibPQoJ/Yj3nhN31UJFzigmPsjyaZhz8knaOte3NQq82poKmYWdI
++hcXkzMcGKH2WYuxUORXYR6ERiAUhQTC9yhQR6Zw6+rsL/q9NQstB8gUlwvycHs5
+JWASFFFUcImaGnd8AMpBkQU/uP2k89G06s+j1HvJf41arIP8HrzWJ7qeLtb6QC1C
+eIoT0TO1+palr6gPaQXwff1DBJJZRwj9bG6LaDoK4imxVwc/LnjanJHprUGWWabp
+myULMjHaUEzWwIebBiaH7pF+cY43OfLC420IdWwTbyMHhsVzxrrZlb1TUKJBGl8a
+EHWQvAX8HdnFdxnUM0Ig
+=HKtm
+-----END PGP SIGNATURE-----

Added: dev/commons/collections/binaries/commons-collections4-4.0-bin.zip.md5
==============================================================================
--- dev/commons/collections/binaries/commons-collections4-4.0-bin.zip.md5 (added)
+++ dev/commons/collections/binaries/commons-collections4-4.0-bin.zip.md5 Tue Nov  5 12:45:52 2013
@@ -0,0 +1 @@
+51b495b1ed2c04920a1edac091e99126
\ No newline at end of file

Added: dev/commons/collections/binaries/commons-collections4-4.0-bin.zip.sha1
==============================================================================
--- dev/commons/collections/binaries/commons-collections4-4.0-bin.zip.sha1 (added)
+++ dev/commons/collections/binaries/commons-collections4-4.0-bin.zip.sha1 Tue Nov  5 12:45:52 2013
@@ -0,0 +1 @@
+0b55e0213fc02093bcc4e2792fac138e751ac99d
\ No newline at end of file

Added: dev/commons/collections/source/commons-collections4-4.0-src.tar.gz
==============================================================================
Binary file - no diff available.

Propchange: dev/commons/collections/source/commons-collections4-4.0-src.tar.gz
------------------------------------------------------------------------------
    svn:mime-type = application/x-gzip

Added: dev/commons/collections/source/commons-collections4-4.0-src.tar.gz.asc
==============================================================================
--- dev/commons/collections/source/commons-collections4-4.0-src.tar.gz.asc (added)
+++ dev/commons/collections/source/commons-collections4-4.0-src.tar.gz.asc Tue Nov  5 12:45:52 2013
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.11 (GNU/Linux)
+
+iQIcBAABAgAGBQJSeORgAAoJEKQfE8mZlFKTljoQAJ2mXuzIYOUEzlbmWYLsMFXe
+Z2VKSJyXaYAs2My/FO/RETcHjiLTN76xORVs410hQcaGb2ib/qA24K4G2dUcAKx5
+sEj3nkOz9334LuAqAFcGzLWffI4vCtMefO1flWTqbieCdMxWMVSWHeHKP+Gt6Cf6
+rufV3riTDI5Ux8zvIlDgBXOEM04gOGQXZJiIrNhBJkm+qIU7hQO+bGb3t+KpmrHz
+4xEbWtl6vlm+mgN4W5PBmYVaUxgH1AeP2/ZUFmDrHwkUedJq8FcJZqLHd5DIugds
+qCI8nZA/0R2xvrZW/E7KuzR5nHNCdQYsRwSM3fUqsH80RpRVO/pwFRhmGFtPyvq7
+mRbef3wLs8ufSbVr38jYHgdG66wlCmiPqPWV0lzQ7BZQkxpxM8DtTwkATFLOEokx
+wv2wWUZb3N7u/7hTFFJOxGEjh0OdWHhIxY2dAqIJ/OH8DW+k2b/lq653sDW7IPvW
+nvdiwZ50rCnTMnG9nADRRwGXYW4Wf9oPqhvBTVhwTX9q/ImB+MM6yuQergP3EMmh
+tBsnYcCu8XpvowJAr1NLAybNpEObPwVx3oKIRqs/hu1EiM4v3EhE0vpolcuXOnls
+OhovddPlDL9RpaW5ePYgRhuI75yyjl6oNA341WpFwxX1ff+HEdd5vR4axSSZ0gmg
+UVzEedbLa2OAAMmheloK
+=Y0hV
+-----END PGP SIGNATURE-----

Added: dev/commons/collections/source/commons-collections4-4.0-src.tar.gz.md5
==============================================================================
--- dev/commons/collections/source/commons-collections4-4.0-src.tar.gz.md5 (added)
+++ dev/commons/collections/source/commons-collections4-4.0-src.tar.gz.md5 Tue Nov  5 12:45:52 2013
@@ -0,0 +1 @@
+d4516b1e5481f2102100ca2d9c66ac27
\ No newline at end of file

Added: dev/commons/collections/source/commons-collections4-4.0-src.tar.gz.sha1
==============================================================================
--- dev/commons/collections/source/commons-collections4-4.0-src.tar.gz.sha1 (added)
+++ dev/commons/collections/source/commons-collections4-4.0-src.tar.gz.sha1 Tue Nov  5 12:45:52 2013
@@ -0,0 +1 @@
+b5092c5cb5fa333ba6ddd13123b5df78bf97d3a9
\ No newline at end of file

Added: dev/commons/collections/source/commons-collections4-4.0-src.zip
==============================================================================
Binary file - no diff available.

Propchange: dev/commons/collections/source/commons-collections4-4.0-src.zip
------------------------------------------------------------------------------
    svn:mime-type = application/zip

Added: dev/commons/collections/source/commons-collections4-4.0-src.zip.asc
==============================================================================
--- dev/commons/collections/source/commons-collections4-4.0-src.zip.asc (added)
+++ dev/commons/collections/source/commons-collections4-4.0-src.zip.asc Tue Nov  5 12:45:52 2013
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.11 (GNU/Linux)
+
+iQIcBAABAgAGBQJSeORhAAoJEKQfE8mZlFKTmlEP/01HgZ4YuZSO4UomtBwAwkjz
+cMOrTaRRZJ1iTxeaDsuYycpCWoAUXzXZvyGWvFnABk4Sn6nqpBmrYxsIEV4MpBrz
+upbPNwPWhf9Yr2JPrW5cWvn5vV4NcXtrRtDSJLC2iYp6JpoNW2TUN+LkeAMAmXMq
+i5YKXmyx4kXgiIGIyxGuRvOEUtbQRcZ3ueH0YrraYdhyjNn9fGlxQxxU2w2uhOxU
+uD4bpZfd10lGO+5nYbzj2aumL6AbfSGT3o8o57gCui52uU84XdK1XGLgQaR24Vv9
+ySvft8GBOLx68WNRtZE+ITb5cVDxDIWZhM+PH7PGd0PAVbKphqFT7qDeIdUuGiEs
+fEv2z6qmKqLx0iIhvAiPVIvYc1+382SUPq2vKTUYdX8tMOhawzCPTHW+5hHcJyJU
+rNPqIyUz3lwbWDrnp8FSqrLXnxLzCOGa8HsQin+5pQJGbCXRPccctCLLjTj3Mr0T
+OEn2yhhLFXJW+vMPWTq1AF7UfMO5Go12TnDGGEBu0JHnjLPOavvTjzJxsipNBnoF
+hptt+/Phrq6Tn3bn5rX4ADlru6MV2phhUScu2w2Cl0Y2BM1zfNbsF9yTIBjU3j0q
+7t6o5KHqjgLFYLC7Ton6gDjW6t7yOFd1JX7t/kreNXwhXIvDIwzlE4WNSejBCHI1
+RNCDYMYJr2FJb4OAEt2t
+=JRGH
+-----END PGP SIGNATURE-----

Added: dev/commons/collections/source/commons-collections4-4.0-src.zip.md5
==============================================================================
--- dev/commons/collections/source/commons-collections4-4.0-src.zip.md5 (added)
+++ dev/commons/collections/source/commons-collections4-4.0-src.zip.md5 Tue Nov  5 12:45:52 2013
@@ -0,0 +1 @@
+cb71402890aeda41f50f402e2c4a20e2
\ No newline at end of file

Added: dev/commons/collections/source/commons-collections4-4.0-src.zip.sha1
==============================================================================
--- dev/commons/collections/source/commons-collections4-4.0-src.zip.sha1 (added)
+++ dev/commons/collections/source/commons-collections4-4.0-src.zip.sha1 Tue Nov  5 12:45:52 2013
@@ -0,0 +1 @@
+b49ca5ee1365a9fd4fc4979772396b3c5be7cdb2
\ No newline at end of file