RELEASE NOTES: COLLECTIONS 3.3
Commons collections is a project to develop and maintain collection classes
based on and inspired by the JDK collection framework.
This project is JDK1.2 compatible, and does not use JDK1.5 generics.
This release adds various new classes and fixes a number of bugs.
All feedback should be directed to commons-user at jakarta.apache.org.
COMPATIBILITY
This release is fully source and binary compatible with v3.2.
(Checks performed using JDiff and Clirr, thanks).
Please check the bug fixes to ensure you weren't relying on the behaviour of a bug.
One bug was that the ExtendedProperties was hiding properties with empty
property values. It is possible you could have been depending on that feature.
See [COLLECTIONS-238].
There are is one new deprecation:
- ExtendedProperties.include is deprecated in favour of a getInclude()/setInclude(String) pairing
If this causes major headaches to anyone please contact dev at commons.apache.org.
NEW CLASSES
ENHANCEMENTS
BUG FIXES
- Flat3Map - Fix setValue in MapIterator and EntrySetIterator to work correctly [COLLECTIONS-217]
- ExtendedProperties - Include property name had confused static/instance semantics [COLLECTIONS-214]
- CollectionUtils - Fix removeAll() method which was completely broken [COLLECTIONS-219]
- MultiValueMap - Fix put() and putAll() to return correct results [COLLECTIONS-228]
- SetUniqueList - addAll(int, Collection) fixed to properly insert at the specified index [COLLECTIONS-249]
- UnboundedFifoBuffer - Serialization/Deserialization no longer creates an unmodifiable object [COLLECTIONS-220]
- Composite classes - Now implement Serializable [COLLECTIONS-221]
- MultiValueMap - Now implements Serializable [COLLECTIONS-240]
- Transformed classes - now all have decorateTransform methods [COLLECTIONS-256]
- Flat3Map - remove() now returns the correct value when size <= 3 [COLLECTIONS-261]
- FastTreeMap - no longer loses the comparator [COLLECTIONS-264]
- TreeBag - no longer accepts non-Comparable classes when naturally ordered [COLLECTIONS-265]
- MultiKey - hashCode made transient to deal with RMI issues [COLLECTIONS-266]
- ExtendedProperties - combine now imports properly [COLLECTIONS-271]
- ExtendedProeprties - put() and putAll() now update the getKeys() map [COLLECTIONS-278]
- CaseInsensitiveMap - Case insensitivity approach made locale independent [COLLECTIONS-294]
- ExtendedProperties - convertProperties now filters out non-String values [COLLECTIONS-299]
- SetUniqueList - set method no longer allows duplicates [COLLECTIONS-304]
- SetUniqueList - subList().contains() now checks against its own values and not its parents [COLLECTIONS-307]
- AbstractHashedMap - Map constructor now calls a private putAll rather than a potential method in a subclass [COLLECTIONS-317]
- StaticBucketMap - putAll() uses more efficient entrySet() iterator [COLLECTIONS-320]
JAVADOC
- IteratorChain - Clarify constructor behaviour
- Unmodiable collections - Improved documentation to indicate what happens when a modification attempt is made [COLLECTIONS-303]
- MuliKey - Spelling [COLLECTIONS-216]
- DefaultedMap - Clarify transformer behaviour [COLLECTIONS-215]
- AbstractLinkMap - firstKey() and lastKey() documentation swapped [COLLECTIONS-262]
- ListUtils - transformedList behaviour correctly explained [COLLECTIONS-288]
- LRUMap - constructor javadoc no longer implies -1 maxSize means unlimited [COLLECTIONS-316]