<?xml version="1.0"?> | |
<!-- | |
Licensed to the Apache Software Foundation (ASF) under one or more | |
contributor license agreements. See the NOTICE file distributed with | |
this work for additional information regarding copyright ownership. | |
The ASF licenses this file to You under the Apache License, Version 2.0 | |
(the "License"); you may not use this file except in compliance with | |
the License. You may obtain a copy of the License at | |
http://www.apache.org/licenses/LICENSE-2.0 | |
Unless required by applicable law or agreed to in writing, software | |
distributed under the License is distributed on an "AS IS" BASIS, | |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
See the License for the specific language governing permissions and | |
limitations under the License. | |
--> | |
<document> | |
<properties> | |
<title>Apache Commons Collections Release Notes</title> | |
</properties> | |
<body> | |
<release version="4.5" date="2019-MM-DD" description="Maintenance release."> | |
<action issue="COLLECTIONS-724" dev="ggregory" type="update" due-to="Eitan Adler"> | |
Simplify two remove-if loops #77. | |
</action> | |
<action issue="COLLECTIONS-726" dev="ggregory" type="update" due-to="liuhaozzu, Gary Gregory"> | |
Add lambdas function to provide default values in MapUtils #81. | |
</action> | |
<action issue="COLLECTIONS-727" dev="ggregory" type="fix" due-to="XiangzheXu, XZ-X"> | |
A potential misleading comment #82. | |
</action> | |
<action issue="COLLECTIONS-679" dev="ggregory" type="fix" due-to="David Mollitor, Mikko Maunu"> | |
Using existing class in example given in Javadocs. #85. | |
</action> | |
<action issue="COLLECTIONS-729" dev="ggregory" type="fix" due-to="dota17"> | |
Add test cases to IteratorUtilsTest #86. | |
</action> | |
<action dev="ggregory" type="fix" due-to="dota17"> | |
Fix typos in release notes and Javadoc for AbstractHashedMap and AbstractHashedMapTest #88. | |
</action> | |
<action issue="COLLECTIONS-704" dev="ggregory" type="update" due-to="dota17"> | |
Update size to capacity for GrowthList #90. | |
</action> | |
<action dev="ggregory" type="add" due-to="dota17"> | |
Test subMap and tailMap #94. | |
</action> | |
<action dev="ggregory" type="add" due-to="dota17"> | |
Add junit for add, remove, setCount and entrySet in the UnmodifiableMultiSetTest #95. | |
</action> | |
<action dev="ggregory" type="add" due-to="dota17"> | |
Add two test cases in UnmodifiableQueueTest #96. | |
</action> | |
<action dev="ggregory" type="add" due-to="dota17"> | |
Update two test cases in AbstractMultiValuedMapTest testPutAll_map1 testPutAll_map2 #97. | |
</action> | |
<action dev="ggregory" type="update" due-to="dota17"> | |
TransformedSortedBagTest should work with TransformedSortedBag, not TransformedBag #98. | |
</action> | |
<action dev="ggregory" type="add" due-to="dota17"> | |
Add a test case for AbstractMultiValuedMapTest testToString() #100. | |
</action> | |
<action dev="ggregory" type="update" due-to="dota17"> | |
Update some map test cases #104. | |
</action> | |
<action dev="ggregory" type="update" due-to="dota17"> | |
Add three test cases in UnmodifiableQueueTest #105. | |
</action> | |
<action issue="COLLECTIONS-674" dev="ggregory" type="add" due-to="dota17"> | |
Add CollectionUtils removeRange, removeCount #91. | |
</action> | |
<action dev="ggregory" type="add" due-to="dota17"> | |
Add a test case AbstractMultiValuedMapTest#testMultiValuedMapIterator() #108. | |
</action> | |
<action dev="ggregory" type="update" due-to="dota17"> | |
Remove the parentheses in the error message in CircularFifoQueue #107. | |
</action> | |
<action dev="ggregory" type="add" due-to="dota17"> | |
Add junit for getWithNull and subList in LazyListTest; #103. | |
</action> | |
<action dev="ggregory" type="add" due-to="dota17"> | |
Add test cases to ArrayListValuedHashMapTest; #106. | |
</action> | |
<action dev="ggregory" type="add" due-to="dota17"> | |
Add test cases in UnmodifiableMultiValuedMapTest; #102. | |
</action> | |
<action dev="ggregory" type="update" due-to="Gary Gregory"> | |
[test] org.easymock:easymock 4.0.2 -> 4.1. | |
</action> | |
<action issue="COLLECTIONS-734" dev="ggregory" type="fix" due-to="Chen"> | |
Encountered an IllegalStateException while traversing with Flat3Map.entrySet(). #115. | |
</action> | |
<action dev="ggregory" type="update" due-to="Chen"> | |
Fix inconsistent @throws comments in ListOrderedSet #125. | |
</action> | |
</release> | |
<release version="4.4" date="2019-07-05" description="Maintenance release."> | |
<action issue="COLLECTIONS-710" dev="ggregory" type="fix" due-to="Yu Shi, Gary Gregory"> | |
NullPointerExceptions in CompositeCollection, CompositeSet, and CompositeMap. | |
</action> | |
<action issue="COLLECTIONS-715" dev="ggregory" type="add" due-to="morningmemo, Gary Gregory"> | |
Implement Collection's removeIf(). | |
</action> | |
<action issue="COLLECTIONS-718" dev="ggregory" type="update" due-to="Eitan Adler"> | |
Fix LRUMap exception message. | |
</action> | |
<action issue="COLLECTIONS-719" dev="ggregory" type="add" due-to="Gary Gregory"> | |
Create a PropertiesFactory and SortedPropertiesFactory. | |
</action> | |
<action issue="COLLECTIONS-719" dev="ggregory" type="add" due-to="Stephan Windmüller, Bruno P. Kinoshita"> | |
Support Transformer for LazyList #52. | |
</action> | |
<action issue="COLLECTIONS-723" dev="ggregory" type="add" due-to="Eitan Adler, SOC, Bruno P. Kinoshita"> | |
Make use of FunctionalInterface #48. | |
</action> | |
<action issue="COLLECTIONS-716" dev="ggregory" type="update" due-to="Sebb"> | |
Don't include email address in Exception messages. | |
</action> | |
</release> | |
<release version="4.3" date="2018-12-21" description="Update from Java 7 to Java 8, bug fixes, and small changes."> | |
<action issue="COLLECTIONS-691" dev="kinow" type="fix" due-to="Eitan Adler"> | |
Use boolean operator for boolean result. | |
</action> | |
<action issue="COLLECTIONS-688" dev="ggregory" type="update"> | |
Update platform requirement from Java 7 to 8. | |
</action> | |
<action issue="COLLECTIONS-689" dev="ggregory" type="update" due-to="Richard Walker"> | |
Link to Javadoc API broken. | |
</action> | |
<action issue="COLLECTIONS-692" dev="ggregory" type="update" due-to="Gary Gregory, Eitan Adler"> | |
Replace use of deprecated Class#newInstance() PR #49. | |
</action> | |
<action issue="COLLECTIONS-696" dev="ggregory" type="add" due-to="Maxim Solodovnik"> | |
AbstractReferenceMap made easier for subclassing; PR #51. | |
</action> | |
<action issue="COLLECTIONS-701" dev="ggregory" type="fix" due-to="Shin Hong, Don Jeba"> | |
StackOverflowError in SetUniqueList.add() when it receives itself. | |
</action> | |
<action issue="COLLECTIONS-703" dev="ggregory" type="fix" due-to="Tomas Tulka"> | |
The PassiveExpiringMap#put() method should return the previous record only if not expired. | |
</action> | |
<action issue="COLLECTIONS-706" dev="ggregory" type="fix" due-to="Richard Eckart de Castilho, Gary Gregory"> | |
Add SetUtils.unmodifiableSet(T... items) method. | |
</action> | |
<action issue="COLLECTIONS-709" dev="ggregory" type="fix" due-to="Robert Wertman"> | |
MultiSet.Entry::getCount() isn't 0 after removing the last element. | |
</action> | |
</release> | |
<release version="4.2" date="2018-07-11" description="Update from Java 6 to Java 7, bug fixes, and small changes."> | |
<action issue="COLLECTIONS-681" dev="kinow" type="add" due-to="Stephan Fuhrmann"> | |
Add test for MultiSetUtils | |
</action> | |
<action issue="COLLECTIONS-599" dev="ggregory" type="fix" due-to="Tejas Patel, Saleem Akbar, Gary Gregory"> | |
HashEntry array object naming data initialized with double the size during deserialization. | |
</action> | |
<action issue="COLLECTIONS-662" dev="chtompki" type="fix" due-to="Vamsi Kavuri"> | |
Unit tests MapUtilsTest and ListIteratorWrapperTest no longer fail on Java 9. | |
</action> | |
<action issue="COLLECTIONS-661" dev="kinow" type="fix"> | |
Intermittent test failures in Windows for HashSetValuedHashMap. | |
</action> | |
<action issue="COLLECTIONS-660" dev="kinow" type="fix"> | |
Uncomment test in AbstractMapTest regarding LRUMap equals. | |
</action> | |
<action issue="COLLECTIONS-658" dev="britter" type="add"> | |
Add Automatic-Module-Name MANIFEST entry for Java 9 compatibility. | |
</action> | |
<action issue="COLLECTIONS-656" dev="ggregory" type="fix"> | |
Fix site build on Java 8. | |
</action> | |
<action issue="COLLECTIONS-653" dev="kinow" type="fix"> | |
Update Javadoc to Build on Java 1.8. | |
</action> | |
<action issue="COLLECTIONS-606" dev="chtompki" type="fix" due-to="Vamsi Kavuri"> | |
Build status, Coverage status and Maven central weren't in README.md | |
</action> | |
<action issue="COLLECTIONS-602" dev="kinow" type="update" due-to="John Mark"> | |
Improve efficiency of DefaultedMap.get. | |
</action> | |
<action issue="COLLECTIONS-603" dev="kinow" type="update" due-to="Artem Konovalov"> | |
Small improvements for generics, conditional statements, and warnings suppressions. | |
</action> | |
<action issue="COLLECTIONS-655" dev="ggregory" type="update"> | |
Update platform from Java 6 to Java 7. | |
</action> | |
<action issue="COLLECTIONS-594" dev="ggregory" type="fix" due-to="Javen O'Neal"> | |
Web site spelling error: MultiValuedMapeList. | |
</action> | |
<action issue="COLLECTIONS-597" dev="ggregory" type="fix" due-to="Enrique"> | |
Correction of Javadoc for org.apache.commons.collections4.functors.CatchAndRethrowClosure. | |
</action> | |
<action issue="COLLECTIONS-589" dev="ggregory" type="add" due-to="Gary Gregory"> | |
Add null-safe MapUtils.size(Map<?, ?>) method. | |
</action> | |
<action issue="COLLECTIONS-586" dev="ggregory" type="add" due-to="Shailender Bathula, Gary Gregory"> | |
PatriciaTrie prefixMap clear throws NullPointerException. | |
</action> | |
<action issue="COLLECTIONS-654" dev="ggregory" type="add"> | |
Add class SortedProperties to sort keys. | |
</action> | |
<action issue="COLLECTIONS-666" dev="ggregory" type="update" due-to="BELUGA BEHR"> | |
org.apache.commons.collections4.ListUtils.union(List, List) should pre-allocate result list. | |
</action> | |
<action issue="COLLECTIONS-669" dev="ggregory" type="update" due-to="BELUGA BEHR, Gary Gregory"> | |
Update org.apache.commons.collections4.CollectionUtils.addAll(Collection<C>, C[]) to addAll(Collection<C>, C...). | |
</action> | |
<action issue="COLLECTIONS-668" dev="ggregory" type="add" due-to="Gary Gregory"> | |
Add CollectionUtils containsAny method for primitive array: org.apache.commons.collections4.CollectionUtils.containsAny(Collection<?>, T...). | |
</action> | |
<action issue="COLLECTIONS-575" dev="ggregory" type="add" due-to="Guram Savinov, Grzegorz Rożniecki, Bruno P. Kinoshita, Gary Gregory"> | |
Synchronized queue wrapper in QueueUtils. | |
</action> | |
<action issue="COLLECTIONS-670" dev="ggregory" type="add" due-to="Gary Gregory"> | |
Add org.apache.commons.collections4.IteratorUtils.first(Iterator). | |
</action> | |
<action issue="COLLECTIONS-671" dev="ggregory" type="add" due-to="Gary Gregory"> | |
Add org.apache.commons.collections4.IterableUtils.first(Iterable). | |
</action> | |
<action issue="COLLECTIONS-678" dev="ggregory" type="fix" due-to="Oscar Luis Vera Pérez"> | |
The verification of unsupported iterator methods is not complete. | |
</action> | |
<action issue="COLLECTIONS-673" dev="ggregory" type="fix" due-to="John Mark, Stephan Fuhrmann"> | |
ListUtils.partition potential integer overflow. | |
</action> | |
</release> | |
<release version="4.1" date="2015-11-28" description="This is a security and minor release."> | |
<action issue="COLLECTIONS-508" dev="tn" type="add"> | |
Added new interfaces "MultiValuedMap", "ListValuedMap" and "SetValuedMap" | |
as a replacement for "MultiMap". Decorators and implementations reside in | |
the "multimap" package and a "MultiMapUtils" class has been added. | |
The existing interface "MultiMap" as well as the concrete implementation | |
"MultiValueMap" has been deprecated. | |
</action> | |
<action issue="COLLECTIONS-551" dev="tn" type="update"> | |
Deprecated various method in "CollectionUtils" in favor of similar | |
methods in the newly introduced "IterableUtils". | |
</action> | |
<action issue="COLLECTIONS-580" dev="tn" type="update"> | |
Serialization support for unsafe classes in the functor package | |
has been removed as this can be exploited for remote code execution | |
attacks. Classes considered to be unsafe are: CloneTransformer, | |
ForClosure, InstantiateFactory, InstantiateTransformer, InvokerTransformer, | |
PrototypeCloneFactory, PrototypeSerializationFactory, WhileClosure. | |
</action> | |
<action issue="COLLECTIONS-580" dev="tn" type="fix"> | |
Added validation when de-serializing a "MultiValueMap#ReflectionFactory": | |
only Collection classes are allowed, otherwise an UnsupportedOperationException | |
will be thrown during de-serialization. | |
</action> | |
<action issue="COLLECTIONS-567" dev="tn" type="add"> | |
Added new MultiSet interface which is intended to be a replacement for | |
the Bag interface. The main difference is that a MultiSet is fully compatible | |
to the Collection contract. | |
</action> | |
<action issue="COLLECTIONS-576" dev="tn" type="fix" due-to="Stephan Roch"> | |
Subclasses of MultiKey did not re-calculate their hashcode after de-serialization. | |
</action> | |
<action issue="COLLECTIONS-572" dev="tn" type="add"> | |
Added set operations to "SetUtils": union, difference, intersection and disjunction. | |
The operations return a view of the result that is backed by the input sets. | |
</action> | |
<action issue="COLLECTIONS-570" dev="tn" type="update"> | |
All constructors and static factory methods will now throw a "NullPointerException" if | |
a required input argument is null. Previously sometimes a "IllegalArgumentException" was used. | |
</action> | |
<action issue="COLLECTIONS-571" dev="tn" type="update"> | |
Deprecated methods "synchronizedCollection(Collection)" and "unmodifiableCollection(Collection)" | |
in class "CollectionUtils", the corresponding methods in "java.util.Collections" should be used instead. | |
</action> | |
<action issue="COLLECTIONS-566" dev="tn" type="fix"> | |
"IteratorUtils#collate(...)" methods did not use natural ordering when a | |
null comparator was provided. | |
</action> | |
<action issue="COLLECTIONS-557" dev="tn" type="add" due-to="Philippe Mouawad"> | |
Added support to specify the initial size of a "LRUMap". | |
</action> | |
<action issue="COLLECTIONS-565" dev="tn" type="add"> | |
Added decorators for "NavigableSet" interface. | |
</action> | |
<action issue="COLLECTIONS-464,COLLECTIONS-442" dev="tn" type="add"> | |
Added new class "FluentIterable" to support a fluent API for manipulating | |
Iterable instances. Additionally various supporting methods have been | |
added to "IterableUtils" and "IteratorUtils". | |
</action> | |
<action issue="COLLECTIONS-464" dev="tn" type="add"> | |
Added new "ZippingIterator" and factory methods "IteratorUtils#zippingIterator(...)". | |
</action> | |
<action issue="COLLECTIONS-464" dev="tn" type="add"> | |
Added new decorator "SkippingIterator" and factory methods "IteratorUtils#skippingIterator(...)". | |
</action> | |
<action issue="COLLECTIONS-556" dev="tn" type="add"> | |
Added method "SetUtils#newIdentityHashSet()" which returns a new identity HashSet | |
using reference-equality instead of object-equality. | |
</action> | |
<action issue="COLLECTIONS-562" dev="tn" type="update"> | |
Upgraded minimum java requirement to Java 6 (up from Java 5). | |
</action> | |
<action issue="COLLECTIONS-395" dev="tn" type="add" due-to="David Hawthorne"> | |
Added method "LRUMap#get(Object, boolean)" that allows to query the map | |
without affecting the least recently used order. | |
</action> | |
<action issue="COLLECTIONS-558" dev="tn" type="fix" due-to="Felix Rabe"> | |
Changed return type of "ListOrderedSet#remove(int)" from Object to the generic type parameter. | |
</action> | |
<action issue="COLLECTIONS-555" dev="tn" type="fix" due-to="M Kim"> | |
Added clarification to javadoc of "TreeBag#add(Object)" wrt null arguments. | |
</action> | |
<action issue="COLLECTIONS-427" dev="tn" type="add" due-to="Gonçalo Marques"> | |
Added "toString(...)" methods to newly created "IterableUtils" and existing "IteratorUtils" | |
to get a string representation of an Iterable/Iterator instance similar to "Arrays#toString(...)". | |
</action> | |
<action issue="COLLECTIONS-427" dev="tn" type="fix"> | |
Reverted performance improvement for "SetUniqueList#retainAll(Collection)" | |
introduced in 4.0. Added clarifying javadoc wrt runtime complexity instead. | |
</action> | |
<action issue="COLLECTIONS-426" dev="tn" type="fix"> | |
Reverted performance improvement for "ListOrderedSet#retainAll(Collection)" | |
introduced in 4.0. Added clarifying javadoc wrt runtime complexity instead. | |
</action> | |
<action issue="COLLECTIONS-530" dev="tn" type="fix" due-to="Erik"> | |
Added a Builder for "PredicatedCollection". Elements added to the builder | |
that fail the predicate will not throw an IllegalArgumentException. The builder | |
supports creating predicated lists, bags, sets and queues. | |
</action> | |
<action issue="COLLECTIONS-545" dev="tn" type="fix" due-to="Oswaldo Olivo"> | |
Documented runtime complexity of "CollectionUtils#removeAll(Collection, Collection). | |
</action> | |
<action issue="COLLECTIONS-543" dev="tn" type="fix"> | |
"AbstractCollectionDecorator" doesn't forward equals and hashCode anymore. | |
</action> | |
<action issue="COLLECTIONS-544" dev="tn" type="fix" due-to="Oswaldo Olivo"> | |
Documented runtime complexity of "CollectionUtils#retainAll(Collection, Collection). | |
</action> | |
<action issue="COLLECTIONS-542" dev="tn" type="fix"> | |
"AbstractHashedMap" still inherits from "AbstractMap", contrary to what | |
the class javadoc stated. The inheritance will now be removed in v5.0. | |
</action> | |
<action issue="COLLECTIONS-539" dev="tn" type="add" due-to="Guram Savinov"> | |
Changed scope of "CircularFifoQueue#isAtFullCapacity()" to public. | |
</action> | |
<action issue="COLLECTIONS-525" dev="tn" type="fix" due-to="Zigler Zhang"> | |
The map returned by "PatriciaTrie#prefixMap()" did not contain all keys | |
that are prefixed by the given search key in some rare cases. | |
</action> | |
<action issue="COLLECTIONS-511" dev="tn" type="add" due-to="Nathan Blomquist, Brent Worden"> | |
Added new methods "IterableUtils#partition(...)" to partition an input collection | |
into separate output collections based on evaluation of one or more predicates. | |
</action> | |
<action issue="COLLECTIONS-537" dev="tn" type="fix" due-to="Frank Jakop"> | |
Harmonized signature of factory methods for functor-related classes which take | |
a collection as input with their array counterparts. | |
</action> | |
<action issue="COLLECTIONS-540" dev="tn" type="fix" due-to="Daniel Stewart, Issam El Atif"> | |
Added overloaded method "CollectionUtils#get(Enumeration, int)" and simplified | |
code for "CollectionUtils#get(Object, int)". | |
</action> | |
<action issue="COLLECTIONS-536" dev="tn" type="fix" due-to="Tagir Valeev"> | |
Improved check for null input in "MapUtils#putAll(Map, Object[])". | |
</action> | |
<action issue="COLLECTIONS-534" dev="tn" type="fix" due-to="Oswaldo Olivo"> | |
Added clarifying javadoc wrt runtime complexity of "CollectionBag#retainAll". | |
</action> | |
<action issue="COLLECTIONS-529" dev="tn" type="add" due-to="Alexander Muthmann, Dipanjan Laha"> | |
Added methods "removeAll(...)" and "retainAll(...)" to "CollectionUtils" that perform | |
equality checks using the provided "Equator" object instead of "Object#equals()". | |
</action> | |
<action issue="COLLECTIONS-531" dev="tn" type="fix" due-to="Dipanjan Laha"> | |
Use correct type bounds in | |
"CollectionUtils#isEqualCollection(Collection, Collection, Equator)" to | |
prevent a "ClassCastException" at runtime for invalid inputs. | |
</action> | |
<action issue="COLLECTIONS-523" dev="tn" type="fix" due-to="Thiago Andrade"> | |
Removed unneeded private method in "PassiveExpiringMap". | |
</action> | |
<action issue="COLLECTIONS-516" dev="tn" type="fix" due-to="Cyrille Artho"> | |
Added clarification to the javadoc of "MapUtils#toProperties(Map)" in case | |
of null keys/values. | |
</action> | |
<action issue="COLLECTIONS-524" dev="tn" type="fix" due-to="J Goodfellow"> | |
"ListOrderedSet#listOrderedSet(List)" did not remove duplicates from the | |
input list as advertised in the javadoc. | |
</action> | |
<action issue="COLLECTIONS-521" dev="tn" type="fix" due-to="Maxime Nay"> | |
"MultiKeyMap" was throwing a "NullPointerException" for various operations | |
if two key arguments have been used and the second was "null". | |
</action> | |
<action issue="COLLECTIONS-522" dev="tn" type="fix" due-to="Erik"> | |
Updated code example for "PredicatedList". | |
</action> | |
<action issue="COLLECTIONS-512" dev="tn" type="fix" due-to="Cyrille Artho"> | |
"TransformingComparator" and "FixedOrderComparator" did not comply with | |
the contract of "Object#equals". | |
</action> | |
<action issue="COLLECTIONS-510" dev="tn" type="fix" due-to="Hollis Waite"> | |
Fix compilation errors when using source level 1.8 and a recent java 8 compiler. | |
</action> | |
<action issue="COLLECTIONS-509" dev="tn" type="fix"> | |
Clarified javadoc of "CollectionBag" wrt changes from the original Bag interface. | |
</action> | |
<action issue="COLLECTIONS-507" dev="tn" type="fix" due-to="Gerson"> | |
Removed wrong type bounds for "ComparatorUtils#chainedComparator(...)". | |
</action> | |
<action issue="COLLECTIONS-506" dev="tn" type="fix" due-to="Anthony Communier"> | |
Added javadoc clarification to class "CollectionUtils" that input objects which | |
override "Object#equals(Object)" must also maintain the general contract of | |
"Object#hashCode()" as various utility methods take advantage of sets/maps/bags. | |
</action> | |
<action issue="COLLECTIONS-503" dev="tn" type="add" due-to="Josh Cain"> | |
Added new transformer "IfTransformer" and factory methods "TransformerUtils#ifTransformer(...)" | |
which replace "TransformerUtils#switchTransformer(Predicate, Transformer, Transformer)". | |
</action> | |
<action issue="COLLECTIONS-471" dev="tn" type="add" due-to="Radford Tam"> | |
Added new decorator "BoundedIterator" and factory methods "IteratorUtils#boundedIterator(...)". | |
</action> | |
</release> | |
<release version="4.0" date="2013-11-27" description=" | |
This is a major release: It combines bug fixes, new features and | |
changes to existing features. | |
Most notable changes are: use of generics and other language features introduced in Java 5 (varargs, Iterable), | |
removed deprecated classes / methods and features which are now supported by the JDK, | |
replaced Buffer interface with java.util.Queue, | |
added concept of split maps with respective interfaces Put / Get (see also package splitmap), | |
added new Trie interface together with an implementation of a Patricia Trie. | |
Because of the base package name change, this release can be used together | |
with earlier versions of Commons Collections. | |
The minimal version of the Java platform required to compile and use | |
Commons Collections is Java 5. | |
Users are encouraged to upgrade to this version as, in addition to new | |
features, this release includes numerous bug fixes. | |
"> | |
<action issue="COLLECTIONS-502" dev="tn" type="update"> | |
Resolved generic parameter inconsistency for various static fields, e.g. BagUtils.EMPTY_BAG, | |
TruePredicate.INSTANCE and many others. All accessible static fields use raw types so that | |
they can be used directly without explicit casting. To avoid compiler warnings about unchecked | |
conversion and/or rawtypes use the corresponding factory methods, e.g. BagUtils.emptyBag(). | |
</action> | |
<action issue="COLLECTIONS-501" dev="tn" type="update"> | |
Renamed methods "V MultiKeyMap#remove(Object, Object, ...)" to | |
"V MultiKeyMap#removeMultiKey(Object, Object, ...)" to avoid future conflicts | |
with a default method of the Map interface in Java 8. | |
</action> | |
<action issue="COLLECTIONS-500" dev="tn" type="update"> | |
Renamed "V MultiMap#remove(K, V)" to "boolean MultiMap#removeMapping(K, V)" | |
to avoid future conflicts with a default method of the Map interface in Java 8. | |
</action> | |
<action issue="COLLECTIONS-499" dev="tn" type="update"> | |
Refactored the test framework for Bag implementations to extend from | |
"AbstractCollectionTest" by decorating the concrete Bag instance with | |
a CollectionBag or CollectionSortedBag. | |
</action> | |
<action issue="COLLECTIONS-498" dev="tn" type="fix"> | |
"CollectionBag" will now also respect the contract of the decorated bag in case | |
a null argument is provided to either removeAll or retainAll. | |
</action> | |
<action issue="COLLECTIONS-497" dev="tn" type="add"> | |
Added bag decorator "CollectionSortedBag" which decorates a SortedBag to make it | |
comply with the Collection contract. | |
</action> | |
<action issue="COLLECTIONS-496" dev="tn" type="update"> | |
"UnmodifiableBoundedCollection" does now also implement the marker interface "Unmodifiable" | |
similar as all other unmodifiable decorators. | |
</action> | |
<action issue="COLLECTIONS-495" dev="tn" type="fix"> | |
"UnmodifiableTrie#unmodifiableTrie(Trie)" will not decorate again an already | |
unmodifiable Trie. Also the return type has been changed to "Trie" to be consistent | |
with other Unmodifiable decorators. | |
</action> | |
<action issue="COLLECTIONS-494" dev="tn" type="update" due-to="Emmanuel Bourg"> | |
Moved "Equator" interface to base package for consistency. | |
</action> | |
<action issue="COLLECTIONS-488" dev="tn" type="add" due-to="Josh Cain"> | |
Added "CollectionsUtils#matchesAll(Iterable, Predicate)" to test if all elements | |
of a collection match a given predicate. | |
</action> | |
<action issue="COLLECTIONS-485" dev="tn" type="fix" due-to="Hollis Waite"> | |
Accept wildcard input where possible, e.g. in copy-constructors, Unmodifiable* decorators | |
and iterators. | |
</action> | |
<action issue="COLLECTIONS-481" dev="tn" type="fix" due-to="Hollis Waite"> | |
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. | |
</action> | |
<action issue="COLLECTIONS-480" dev="tn" type="update" due-to="Hollis Waite"> | |
Narrow return type of "BidiMap#values()" to Set as the values are required to be unique. | |
</action> | |
<action issue="COLLECTIONS-475" dev="tn" type="fix"> | |
Fixed conversion of timeout parameters in "PassiveExpiringMap". | |
</action> | |
<action issue="COLLECTIONS-474" dev="sebb" type="fix" due-to="Ning Chen"> | |
Exception in "ListOrderedMap#putAll" if map contains null values. | |
</action> | |
<action issue="COLLECTIONS-473" dev="tn" type="update" due-to="sebb"> | |
Made field "collection" in class "AbstractCollectionDecorator" private and added | |
setter "setCollection(Collection)" with scope protected to set the decorated collection | |
during de-serialization. | |
</action> | |
<action issue="COLLECTIONS-472" dev="tn" type="fix" due-to="Adrian Nistor"> | |
Improved performance of "AbstractMapBag#containsAll(Collection)" by returning immediately | |
after a difference has been found. | |
</action> | |
<action issue="COLLECTIONS-470" dev="tn" type="update" due-to="sebb"> | |
Renamed class "TransformedMap" in package "splitmap" to "TransformedSplitMap" to avoid | |
name clash with similar class in package "map". | |
</action> | |
<action issue="COLLECTIONS-468" dev="tn" type="add"> | |
Added bag decorator "CollectionBag" which decorates a bag to make it comply with the | |
Collection contract. | |
</action> | |
<action issue="COLLECTIONS-466" dev="tn" type="update"> | |
Replaced "Collection" with "Iterable" for method arguments where applicable. | |
</action> | |
<action issue="COLLECTIONS-463" dev="tn" type="add" due-to="Andy Seaborne, Claude Warren"> | |
Added "PushbackIterator" decorator to support pushback of elements during iteration. | |
</action> | |
<action issue="COLLECTIONS-462" dev="tn" type="add" due-to="Andy Seaborne, Claude Warren"> | |
Added "PeekingIterator" decorator to support one-element lookahead during iteration. | |
</action> | |
<action issue="COLLECTIONS-461" dev="tn" type="fix" due-to="Matt Benson, sebb"> | |
Added additional clarification to javadoc of interface "Put" wrt return type of | |
"put(Object, Object)" method. | |
</action> | |
<action issue="COLLECTIONS-460" dev="tn" type="update"> | |
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()". | |
</action> | |
<action issue="COLLECTIONS-459" dev="tn" type="update" due-to="sebb"> | |
Removed method "setArray(Object)" in class ArrayIterator and method "setArray(Object[])" | |
in class ObjectArrayIterator and made fields array, startIndex and endIndex final. | |
</action> | |
<action issue="COLLECTIONS-458" dev="sebb" type="remove"> | |
Removed unused class "AbstractUntypedCollectionDecorator<E, D>". | |
</action> | |
<action issue="COLLECTIONS-456" dev="tn" type="add"> | |
Added methods "ListUtils#longestCommonSubsequence(...)" to get the longest common subsequence | |
of arbitrary lists or CharSequences. | |
</action> | |
<action issue="COLLECTIONS-455" dev="sebb" type="update"> | |
Changed scope of fields to private where appropriate. | |
</action> | |
<action issue="COLLECTIONS-454" dev="tn" type="update"> | |
An iterator over a "Flat3Map#entrySet()" will now return | |
independent Map.Entry objects that will not change anymore when | |
the iterator progresses. | |
</action> | |
<action issue="COLLECTIONS-453" dev="tn" type="update"> | |
Several closure and transformer implementations in the functors package | |
will now copy an array as input to their constructor (e.g. ChainedClosure). | |
</action> | |
<action issue="COLLECTIONS-452" dev="tn" type="update"> | |
Change base package to org.apache.commons.collections4. | |
</action> | |
<action issue="COLLECTIONS-451" dev="tn" type="update"> | |
The constructors for all Utils classes are now private to prevent instantiation. | |
</action> | |
<action issue="COLLECTIONS-450" dev="tn" type="add" due-to="J. Moldawski"> | |
Added methods "forAllButLastDo(Collection, Closure)" and "forAllButLastDo(Iterator, Closure)" | |
to class "CollectionUtils". | |
</action> | |
<action issue="COLLECTIONS-447" dev="tn" type="fix" due-to="Jeffrey Barnes"> | |
Tree traversal with a TreeListIterator will not be affected anymore by | |
the removal of an element directly after a call to previous(). | |
</action> | |
<action issue="COLLECTIONS-446" dev="tn" type="add" due-to="Matt Lachman"> | |
Added method "CollectionUtils#isEqualCollection(Collection, Collection, Equator)". | |
</action> | |
<action issue="COLLECTIONS-445" dev="tn" type="fix"> | |
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. | |
</action> | |
<action issue="COLLECTIONS-444" dev="tn" type="fix" due-to="Thomas Vahrst, John Vasileff"> | |
SetUniqueList.set(int, E) now works correctly if the object to be inserted | |
is already placed at the given position. | |
</action> | |
<action issue="COLLECTIONS-441" dev="tn" type="fix" due-to="Thomas Vahrst"> | |
MultiKeyMap.clone() now correctly calls super.clone(). | |
</action> | |
<action issue="COLLECTIONS-436" dev="tn" type="add" due-to="Arman Sharif"> | |
Added "emptyIfNull" methods to classes "CollectionUtils", "ListUtils", "SetUtils" | |
and "MapUtils". | |
</action> | |
<action issue="COLLECTIONS-433" dev="tn" type="fix" due-to="Jeffrey Barnes"> | |
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. | |
</action> | |
<action issue="COLLECTIONS-432" dev="tn" type="update"> | |
Replaced "Buffer" interface with "java.util.Queue". Kept "CircularFifoQueue" | |
as well as "Predicated", "Transformed" and "Unmodifiable" decorators. | |
</action> | |
<action issue="COLLECTIONS-429,COLLECTIONS-434" dev="tn" type="add" due-to="Adrian Nistor, Mert Guldur"> | |
Added method "CollectionUtils#containsAll(Collection, Collection)" with guaranteed | |
runtime complexity of O(n + m) 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. | |
</action> | |
<action issue="COLLECTIONS-427" dev="brentworden" type="fix" due-to="Mert Guldur"> | |
Fixed performance issue in "SetUniqueList#retainAll" method for large collections. | |
</action> | |
<action issue="COLLECTIONS-426" dev="brentworden" type="fix" due-to="Adrian Nistor"> | |
Fixed performance issue in "ListOrderedSet#retainAll" method for large collections. | |
</action> | |
<action issue="COLLECTIONS-425" dev="tn" type="fix" due-to="Adrian Nistor"> | |
Improved performance of "ListOrderedMap#remove(Object)" method. | |
</action> | |
<action issue="COLLECTIONS-424" dev="tn" type="update" due-to="Michael Pradel"> | |
"CompositeSet" does not inherit from "CompositeCollection" anymore. The inner class | |
"SetMutator" has been updated accordingly. | |
</action> | |
<action issue="COLLECTIONS-422" dev="tn" type="add" due-to="Benoit Corne"> | |
Added method "CollectionUtils#permutations(Collection)" and class "PermutationIterator" | |
to generate unordered permutations of a collection. | |
</action> | |
<action issue="COLLECTIONS-421" dev="tn" type="fix" due-to="Benedikt Ritter"> | |
Update javadoc for "ListUtils#lazyList()" and "ListUtils#fixedSizeList()". | |
</action> | |
<action issue="COLLECTIONS-419" dev="tn" type="fix" due-to="Adrian Nistor"> | |
Added clarifying javadoc wrt runtime complexity of "AbstractDualBidiMap#retainAll". | |
</action> | |
<action issue="COLLECTIONS-417" dev="tn" type="fix" due-to="Adrian Nistor"> | |
Added clarifying javadoc wrt runtime complexity of "AbstractLinkedList#retainAll". | |
</action> | |
<action issue="COLLECTIONS-415" dev="tn" type="fix" due-to="Adrian Nistor"> | |
Added clarifying javadoc wrt runtime complexity of "AbstractLinkedList#removeAll". | |
</action> | |
<action issue="COLLECTIONS-414" dev="tn" type="fix"> | |
Fixed several compilation issues with older Java 1.6 compilers. | |
</action> | |
<action issue="COLLECTIONS-413" dev="tn" type="fix" due-to="Adrian Nistor"> | |
Improved performance of "removeAll()" method for sets returned by "DualHashBidiMap#entrySet()". | |
</action> | |
<action issue="COLLECTIONS-412" dev="tn" type="fix" due-to="Adrian Nistor"> | |
Improved performance of "CollectionUtils#subtract" methods. | |
</action> | |
<action issue="COLLECTIONS-411" dev="tn" type="fix" due-to="Adrian Nistor"> | |
Fixed possible "IndexOutOfBoundsException" in "ListOrderedMap#putAll". | |
</action> | |
<action issue="COLLECTIONS-410" dev="tn" type="fix" due-to="Adrian Nistor"> | |
Improved performance of "SetUniqueList#addAll" method. | |
</action> | |
<action issue="COLLECTIONS-409" dev="tn" type="fix" due-to="Adrian Nistor"> | |
Improved performance of "ListOrderedSet#addAll" method. | |
</action> | |
<action issue="COLLECTIONS-408" dev="tn" type="fix" due-to="Adrian Nistor"> | |
Improved performance of "SetUniqueList#removeAll". | |
</action> | |
<action issue="COLLECTIONS-407" dev="tn" type="fix" due-to="Adrian Nistor"> | |
Improved performance of "ListOrderedSet#remove(Object)" in case the object is | |
not contained in the Set. | |
</action> | |
<action issue="COLLECTIONS-406" dev="tn" type="fix" due-to="Adrian Nistor"> | |
Improved performance of "ListUtils#subtract" method. | |
</action> | |
<action issue="COLLECTIONS-405" dev="brentworden" type="add" due-to="Adam Dyga"> | |
Added "ListUtils#select" and "ListUtils#selectRejected" methods. | |
</action> | |
<action issue="COLLECTIONS-404" dev="luc" type="add" due-to="Jordane Sarda"> | |
Added an implementation of Eugene Myers difference algorithm in package | |
o.a.c.c.sequence. | |
</action> | |
<action issue="COLLECTIONS-400" dev="tn" type="fix" due-to="Shin Hwei Tan"> | |
Added missing null check in "CollectionUtils#addIgnoreNull(Collection, Object)". | |
</action> | |
<action issue="COLLECTIONS-399" dev="tn" type="add" due-to="Sebb"> | |
Added new method "get(int)" to "CircularFifoQueue". | |
</action> | |
<action issue="COLLECTIONS-396" dev="tn" type="add" due-to="Jeff Rodriguez"> | |
Added "LazyIteratorChain" iterator. | |
</action> | |
<action issue="COLLECTIONS-393" dev="tn" type="add" due-to="Chris Shayan"> | |
Added "ListUtils#partition" method to split a List into consecutive sublists. | |
</action> | |
<action issue="COLLECTIONS-391" dev="tn" type="fix" due-to="Shin Hwei Tan"> | |
Fixed javadoc for "MapUtils#toProperties(Map)". | |
</action> | |
<action issue="COLLECTIONS-389" dev="tn" type="fix" due-to="Shin Hwei Tan"> | |
Clarified javadoc for "TransformerUtils#mapTransformer" for null input. | |
</action> | |
<action issue="COLLECTIONS-388" dev="tn" type="fix" due-to="Shin Hwei Tan"> | |
Clarified javadoc for "FactoryUtils#prototypeFactory" for null input. | |
</action> | |
<action issue="COLLECTIONS-384" dev="ggregory" type="fix" due-to="Shin Hwei Tan"> | |
Fixed inconsistent javadoc for "MapUtils#synchronizedMap(Map)". | |
</action> | |
<action issue="COLLECTIONS-383" dev="tn" type="add" due-to="Adrian Cumiskey"> | |
Added "CollectionUtils#forAllDo" implementation which takes an "Iterator" as input. | |
</action> | |
<action issue="COLLECTIONS-382" dev="tn" type="update" due-to="Olivier Lamy"> | |
Change maven coordinates to "org.apache.commons.commons-collections4". | |
</action> | |
<action issue="COLLECTIONS-381" dev="sebb" type="update" due-to="Olivier Lamy"> | |
Move the project structure to a standard maven layout. | |
</action> | |
<action issue="COLLECTIONS-380" dev="tn" type="fix" due-to="Dave Brosius"> | |
Fixed infinite loop when calling "UnmodifiableBoundedCollection#unmodifiableBoundedCollection()". | |
</action> | |
<action issue="COLLECTIONS-379" dev="tn" type="fix" due-to="Shin Hwei Tan"> | |
Fixed javadoc for several methods wrt expected NullPointerExceptions. | |
</action> | |
<action issue="COLLECTIONS-375" dev="tn" type="add" due-to="Ivan Hristov"> | |
Added method "ListUtils#defaultIfNull(List, List)". | |
</action> | |
<action issue="COLLECTIONS-372" dev="tn" type="update"> | |
TransformingComparator now supports different types for its input/output values. | |
</action> | |
<action issue="COLLECTIONS-364" dev="sebb" type="fix"> | |
"DualTreeBidiMap" now uses the correct comparator for the reverse map during de-serialization. | |
</action> | |
<action issue="COLLECTIONS-363" dev="sebb" type="fix"> | |
"TransformedMap" in the package "splitmap" can now be serialized. | |
</action> | |
<action issue="COLLECTIONS-362" dev="brentworden" type="update" due-to="Jean-Noel Rouvignac"> | |
"CollectionUtils#filter(Iterable, Predicate)" will now return whether the collection | |
has been modified. | |
</action> | |
<action issue="COLLECTIONS-361" dev="tn" type="add" due-to="Jean-Noel Rouvignac"> | |
Add method "CollectionUtils#filterInverse(Iterable, Predicate)". | |
</action> | |
<action issue="COLLECTIONS-360" dev="jochen" type="fix" due-to="Sai Zhang"> | |
"FilterListIterator#hasNext" does not throw a NullPointerException anymore | |
to comply to the Java iterator specification. | |
</action> | |
<action issue="COLLECTIONS-359" dev="bayard" type="fix" due-to="Mark Shead"> | |
"ListUtils#intersection(List, List)" will now also work correctly if there | |
are duplicate elements in the provided lists. | |
</action> | |
<action issue="COLLECTIONS-352" dev="bayard" type="fix" due-to="Adam Gent"> | |
"AbstractCollectionDecorator" will now use internally "decorated()" to access | |
the decorated collection. | |
</action> | |
<action issue="COLLECTIONS-351" dev="bayard" type="remove" due-to="Henri Yandell"> | |
Removed features which are now supported by the JDK. | |
</action> | |
<action issue="COLLECTIONS-350" dev="bayard" type="fix" due-to="Michael Akerman"> | |
Removed debug output in "MapUtils#getNumber(Map)". | |
</action> | |
<action issue="COLLECTIONS-348" dev="brentworden" type="fix" due-to="Paul Benedict"> | |
Fixed javadoc for all "transformedXXX(XXX)" methods in the respective Utils classes | |
to clarify that existing objects in the list are not transformed. | |
</action> | |
<action issue="COLLECTIONS-343" dev="mbenson" type="fix" due-to="Goran Hacek"> | |
Singleton classes in package "functors" are now correctly de-serialized. | |
</action> | |
<action issue="COLLECTIONS-341" dev="mbenson" type="update" due-to="Goran Hacek"> | |
"NOPClosure" is now a final class. | |
</action> | |
<action issue="COLLECTIONS-340" dev="mbenson" type="fix" due-to="Goran Hacek"> | |
Removed broken methods "equals(Object)" and "hashCode()" in class "NOPClosure". | |
</action> | |
<action issue="COLLECTIONS-336" dev="bayard" type="fix" due-to="sebb"> | |
Simplified exceptions as the cause is available from the parent. | |
</action> | |
<action issue="COLLECTIONS-335" dev="jochen" type="fix" due-to="sebb"> | |
Fixed cache assignment for "TreeBidiMap#entrySet". | |
</action> | |
<action issue="COLLECTIONS-334" dev="jochen" type="fix" due-to="sebb"> | |
Synchronized access to lock in "StaticBucketMap#size()". | |
</action> | |
<action issue="COLLECTIONS-332" dev="jochen" type="fix" due-to="Tom Parker"> | |
Added clarification to javadoc of "ListOrderedMap" that "IdentityMap" and | |
"CaseInsensitiveMap" are not supported. | |
</action> | |
<action issue="COLLECTIONS-331" dev="jochen" type="fix" due-to="Michael Krkoska"> | |
Improve javadoc of "CollatingIterator" wrt the used "Comparator" and throw a | |
NullPointerException in "CollatingIterator#least" if no comparator is set. | |
</action> | |
<action issue="COLLECTIONS-330" dev="mbenson" type="fix" due-to="Joerg Schaible"> | |
"LRUMap#keySet()#remove(Object)" will not throw a "ConcurrentModificationException" anymore. | |
</action> | |
<action issue="COLLECTIONS-328" dev="bayard" type="fix" due-to="Thomas Rogan, Jilles van Gurp"> | |
Improved performance of "ListUtils#intersection(List, List)". | |
</action> | |
<action issue="COLLECTIONS-327" dev="brentworden" type="add" due-to="sebb"> | |
Added serialVersionUID fields for "CompositeCollection", "CompositeSet", | |
"EmptyMapMutator", "EmptySetMutator". | |
</action> | |
<action issue="COLLECTIONS-324" dev="tn" type="update" due-to="sebb"> | |
Fields transformer and decorated in class "TransformingComparator" are now final. | |
</action> | |
<action issue="COLLECTIONS-323" dev="jochen" type="fix" due-to="Maarten Brak"> | |
Changed behavior of "CaseInsensitiveMap" constructor to be compliant with "HashMap" | |
in case the initial capacity is set to zero. | |
</action> | |
<action issue="COLLECTIONS-322" dev="tn" type="add" due-to="Thomas Vahrst"> | |
Added NodeListIterator and convenience methods in IteratorUtils to iterate over | |
a org.w3c.dom.NodeList. | |
</action> | |
<action issue="COLLECTIONS-320" dev="bayard" type="fix" due-to="sebb"> | |
Improved performance of "StaticBucketMap#putAll(Map)" by iterating over the entry set. | |
</action> | |
<action issue="COLLECTIONS-319" dev="bayard" type="fix" due-to="sebb"> | |
Avoid redundant null check in "IteratorUtils#getIterator(Object)". | |
</action> | |
<action issue="COLLECTIONS-317" dev="bayard" type="fix" due-to="sebb"> | |
Use a private method to populate the object in "AbstractHashedMap(Map)". | |
</action> | |
<action issue="COLLECTIONS-316" dev="bayard" type="fix" due-to="ori"> | |
Fixed javadoc of "LRUMap" wrt to the maxSize parameter of the constructor. | |
</action> | |
<action issue="COLLECTIONS-313" dev="brentworden" type="add" due-to="David J. M. Karlsen"> | |
Added new abstract class "CatchAndRethrowClosure" that re-throws any checked exception | |
as unchecked "FunctorException". | |
</action> | |
<action issue="COLLECTIONS-312" dev="tn" type="fix" due-to="Peter Lawrey, Gary Gregory"> | |
Use of final keyword where applicable, minor performance improvements by properly | |
initializing the capacity of newly created collections when known in advance. | |
</action> | |
<action issue="COLLECTIONS-307" dev="tn" type="update" due-to="Christian Semrau, Thomas Vahrst"> | |
"SetUniqueList#subList()" will now return an unmodifiable list as changes to it | |
may invalidate the parent list. | |
</action> | |
<action issue="COLLECTIONS-307" dev="bayard" type="fix" due-to="Christian Semrau"> | |
"SetUniqueList#subList()#contains(Object)" will now correctly check the subList | |
rather than the parent list. | |
</action> | |
<action issue="COLLECTIONS-306" dev="brentworden" type="add" due-to="Chris Shayan"> | |
Added method "CollectionUtils#subtract(Iterable, Iterable, Predicate)". | |
</action> | |
<action issue="COLLECTIONS-304" dev="bayard" type="fix" due-to="Rafał Figas,Bjorn Townsend"> | |
"SetUniqueList#set(int, Object)" will now correctly enforce the uniqueness constraint. | |
</action> | |
<action issue="COLLECTIONS-303" dev="bayard" type="fix" due-to="Emmanuel Bourg"> | |
Improved javadoc for "Unmodifiable*" classes wrt behavior when the users tries | |
to modify the collection. | |
</action> | |
<action issue="COLLECTIONS-298" dev="bayard" type="update" due-to="Benjamin Bentmann"> | |
Calling "CollectionUtils#sizeIsEmpty(null)" will now return true. | |
</action> | |
<action issue="COLLECTIONS-296" dev="tn" type="add" due-to="Julius Davies"> | |
Added methods "CollectionUtils#collate(...)" to merge two sorted Collections | |
into a sorted List using the standard O(n) merge algorithm. | |
</action> | |
<action issue="COLLECTIONS-294" dev="bayard" type="fix" due-to="Benjamin Bentmann"> | |
"CaseInsensitiveMap" will now convert input strings to lower-case in a | |
locale-independant manner. | |
</action> | |
<action issue="COLLECTIONS-293" dev="tn" type="add" due-to="Stephen Kestle"> | |
Added support for using custom "Equator" objects in "EqualPredicate". | |
</action> | |
<action issue="COLLECTIONS-289" dev="bayard" type="add" due-to="Fredrik Kjellberg"> | |
Added method "CollatingIterator#getIteratorIndex()". | |
</action> | |
<action issue="COLLECTIONS-256,COLLECTIONS-288" dev="bayard" type="fix" due-to="Paul Benedict"> | |
Fixed javadoc for "ListUtils#transformedList(List)" to clarify that existing objects | |
in the list are not transformed. | |
</action> | |
<action issue="COLLECTIONS-286" dev="mbenson" type="add" due-to="Geoffrey De Smet"> | |
Added method "CollectionUtils#extractSingleton(Collection)". | |
</action> | |
<action issue="COLLECTIONS-285" dev="tn" type="add" due-to="Christian Gruenberg"> | |
Added serialization support for "TreeBidiMap". | |
</action> | |
<action issue="COLLECTIONS-280" dev="bayard" type="update" due-to="Chris Lewis"> | |
The predicate that rejected an object to be added to a "PredicatedCollection" | |
is now contained in the respective exception message. | |
</action> | |
<action issue="COLLECTIONS-275" dev="tn" type="add" due-to="Stephen Kestle"> | |
Added "IndexedCollection" collection decorator which provides a map-like | |
view on an existing collection. | |
</action> | |
<action issue="COLLECTIONS-272" dev="tn" type="add" due-to="Chaitanya Mutyala"> | |
Added serialization support for "FixedOrderComparator" and "TransformingComparator". | |
</action> | |
<action issue="COLLECTIONS-266" dev="bayard" type="fix" due-to="Joerg Schaible"> | |
"MultiKey" will now be correctly serialized/de-serialized. | |
</action> | |
<action issue="COLLECTIONS-265" dev="bayard" type="update" due-to="David Saff"> | |
"TreeBag" will now only accept "Comparable" objects as input when used with natural ordering. | |
</action> | |
<action issue="COLLECTIONS-263" dev="tn" type="add" due-to="John Hunsley"> | |
Added methods "MapUtils#populateMap(MultiMap, ...)" to support also "MultiMap" instances | |
as input. | |
</action> | |
<action issue="COLLECTIONS-262" dev="bayard" type="fix" due-to="Lisen Mu"> | |
Fixed javadoc for methods "firstKey()" and "lastKey()" in class "AbstractLinkedMap". | |
</action> | |
<action issue="COLLECTIONS-261" dev="bayard" type="fix" due-to="ori"> | |
"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. | |
</action> | |
<action issue="COLLECTIONS-260" dev="mbenson" type="add" due-to="Stephen Kestle"> | |
Added constructor "TransformingComparator(Transformer)". | |
</action> | |
<action issue="COLLECTIONS-258" dev="tn" type="add" due-to="Nathan Blomquist"> | |
Added "DualLinkedHashBidiMap" bidi map implementation. | |
</action> | |
<action issue="COLLECTIONS-255" dev="mbenson" type="fix" due-to="Henri Yandell"> | |
Removed unused variables in "TreeBidiMap". | |
</action> | |
<action issue="COLLECTIONS-251,COLLECTIONS-321" dev="mbenson" type="update" due-to="Stephen Kestle"> | |
The static factory methods have been renamed from "getInstance()" to a camel-case | |
version of the class name, e.g. "truePredicate()" for class "TruePredicate". | |
</action> | |
<action issue="COLLECTIONS-249" dev="bayard" type="fix" due-to="Joe Kelly"> | |
"SetUniqueList.addAll(int, Collection)" now correctly add the collection at the | |
provided index. | |
</action> | |
<action issue="COLLECTIONS-242" dev="skestle" type="add"> | |
Added "Equator" interface. | |
</action> | |
<action issue="COLLECTIONS-241" dev="brentworden" type="add" due-to="Elifarley Callado Coelho"> | |
Added "PassiveExpiringMap" map decorator. | |
</action> | |
<action issue="COLLECTIONS-240" dev="bayard" type="update" due-to="Wouter de Vaal"> | |
"MultiValueMap" is now serializable. | |
</action> | |
<action issue="COLLECTIONS-237" dev="tn" type="add" due-to="Nils Kaiser, Alan Mehlo"> | |
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. | |
</action> | |
<action issue="COLLECTIONS-235" dev="bayard" type="add" due-to="Nathan Egge"> | |
Added method "ListUtils#indexOf(List, Predicate)". | |
</action> | |
<action issue="COLLECTIONS-232" dev="bayard" type="fix" due-to="Mark Hindess"> | |
Fixed several unit tests which were using parameters to "assertEquals(...)" in wrong order. | |
</action> | |
<action issue="COLLECTIONS-231" dev="tn" type="update" due-to="Torsten Curdt"> | |
Return concrete class in static factory methods instead of base class interface | |
(except for Unmodifiable decorators). | |
</action> | |
<action issue="COLLECTIONS-230,COLLECTIONS-297,COLLECTIONS-318" dev="bayard" type="update" due-to="Stepan Koltsov,sebb"> | |
"CollectionUtils#size(Collection)" now returns 0 when called with null as input. | |
</action> | |
<action issue="COLLECTIONS-229" dev="scolebourne" type="remove"> | |
Removed deprecated classes and methods. | |
</action> | |
<action issue="COLLECTIONS-228" dev="scolebourne" type="fix"> | |
"MultiValueMap#put(Object, Object)" and "MultiValueMap#putAll(Object, Collection)" | |
now correctly return if the map has changed by this operation. | |
</action> | |
<action issue="COLLECTIONS-226" dev="bayard" type="add" due-to="Vasily Ivanov"> | |
Added method "ListOrderedMap#putAll(int, Map)". | |
</action> | |
<action issue="COLLECTIONS-225" dev="tn" type="add" due-to="Sam Berlin, Roger Kapsi"> | |
Added new "Trie" interface with a first concrete implementation "PatriciaTrie" | |
together with decorators "Unmodifiable" and "Synchronized". | |
</action> | |
<action issue="COLLECTIONS-223" dev="bayard" type="update" due-to="Vasily Ivanov"> | |
"CollectionUtils#addAll(...)" methods now return if the collection has been changed | |
by this operation. | |
</action> | |
<action issue="COLLECTIONS-221" dev="bayard" type="update" due-to="Pal Denes"> | |
"CompositeCollection", "CompositeMap" and "CompositeSet" are now serializable. | |
</action> | |
<action issue="COLLECTIONS-219" dev="scolebourne" type="fix" due-to="Tom Leccese"> | |
"CollectionUtils#removeAll" wrongly called "ListUtils#retainAll". | |
</action> | |
<action issue="COLLECTIONS-218" dev="skestle" type="update"> | |
The "CollectionUtils#select(Collection, Predicate, Collection)" method will now | |
return the output collection. | |
</action> | |
<action issue="COLLECTIONS-217" dev="scolebourne" type="fix" due-to="Matt Bishop"> | |
Calling "setValue(Object)" on any Entry returned by a "Flat3Map" will now | |
correctly set the value for the current entry. | |
</action> | |
<action issue="COLLECTIONS-216" dev="scolebourne" type="fix" due-to="Hendrik Maryns"> | |
"MultiKey#toString()" will now use "Arrays#toString(List)". | |
</action> | |
<action issue="COLLECTIONS-213" dev="brentworden" type="add" due-to="Dusan Chromy"> | |
Added support for resettable iterators in "IteratorIterable". | |
</action> | |
<action issue="COLLECTIONS-194" dev="bayard" type="add" due-to="Dave Meikle"> | |
Added methods "MapUtils#populateMap(Map, Iterable, Transformer, ...)". | |
</action> | |
<action issue="COLLECTIONS-182" dev="mbenson" type="update" due-to="Jim Cakalic"> | |
"CollectionUtils#forAllDo(Collection, Closure)" now returns the provided closure. | |
</action> | |
<action issue="COLLECTIONS-110,COLLECTIONS-243,COLLECTIONS-245,COLLECTIONS-247, | |
COLLECTIONS-253,COLLECTIONS-273,COLLECTIONS-282" dev="multiple" type="update"> | |
Make generic versions of all classes in collections. | |
</action> | |
<action issue="COLLECTIONS-8" dev="brentworden" type="add" due-to="Rune Peter Bjørnstad"> | |
Added class "ComparatorPredicate". | |
</action> | |
</release> | |
<release version="3.2.2" date="2015-11-15" description="This is a security and bugfix release."> | |
<action issue="COLLECTIONS-580" dev="tn" type="update"> | |
Serialization support for unsafe classes in the functor package is disabled | |
by default as this can be exploited for remote code execution attacks. | |
To re-enable the feature the system property "org.apache.commons.collections.enableUnsafeSerialization" | |
needs to be set to "true". | |
Classes considered to be unsafe are: CloneTransformer, ForClosure, InstantiateFactory, | |
InstantiateTransformer, InvokerTransformer, PrototypeCloneFactory, | |
PrototypeSerializationFactory, WhileClosure. | |
</action> | |
<action issue="COLLECTIONS-538" dev="tn" type="fix" due-to="Trejkaz"> | |
"ExtendedProperties" will now use a privileged action to access the | |
"file.separator" system property. In case the class does not have | |
permission to read system properties, the "File#separator" field will | |
be used instead. | |
</action> | |
<action issue="COLLECTIONS-447" dev="tn" type="fix" due-to="Jeffrey Barnes"> | |
Tree traversal with a TreeListIterator will not be affected anymore by | |
the removal of an element directly after a call to previous(). | |
</action> | |
<action issue="COLLECTIONS-444" dev="tn" type="fix" due-to="Thomas Vahrst, John Vasileff"> | |
SetUniqueList.set(int, Object) now works correctly if the object to be inserted | |
is already placed at the given position. | |
</action> | |
<action issue="COLLECTIONS-350" dev="bayard" type="fix" due-to="Michael Akerman"> | |
Removed debug output in "MapUtils#getNumber(Map)". | |
</action> | |
<action issue="COLLECTIONS-335" dev="jochen" type="fix" due-to="sebb"> | |
Fixed cache assignment for "TreeBidiMap#entrySet". | |
</action> | |
<action issue="COLLECTIONS-334" dev="jochen" type="fix" due-to="sebb"> | |
Synchronized access to lock in "StaticBucketMap#size()". | |
</action> | |
<action issue="COLLECTIONS-307" dev="bayard" type="fix" due-to="Christian Semrau"> | |
"SetUniqueList#subList()#contains(Object)" will now correctly check the subList | |
rather than the parent list. | |
</action> | |
<action issue="COLLECTIONS-304" dev="bayard" type="fix" due-to="Rafał Figas,Bjorn Townsend"> | |
"SetUniqueList#set(int, Object)" will now correctly enforce the uniqueness constraint. | |
</action> | |
<action issue="COLLECTIONS-294" dev="bayard" type="fix" due-to="Benjamin Bentmann"> | |
"CaseInsensitiveMap" will now convert input strings to lower-case in a | |
locale-independent manner. | |
</action> | |
<action issue="COLLECTIONS-266" dev="bayard" type="fix" due-to="Joerg Schaible"> | |
"MultiKey" will now be correctly serialized/de-serialized. | |
</action> | |
<action issue="COLLECTIONS-261" dev="bayard" type="fix" due-to="ori"> | |
"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. | |
</action> | |
<action issue="COLLECTIONS-249" dev="bayard" type="fix" due-to="Joe Kelly"> | |
"SetUniqueList.addAll(int, Collection)" now correctly add the collection at the | |
provided index. | |
</action> | |
<action issue="COLLECTIONS-228" dev="scolebourne" type="fix"> | |
"MultiValueMap#put(Object, Object)" and "MultiValueMap#putAll(Object, Collection)" | |
now correctly return if the map has changed by this operation. | |
</action> | |
<action issue="COLLECTIONS-219" dev="scolebourne" type="fix" due-to="Tom Leccese"> | |
"CollectionUtils#removeAll" wrongly called "ListUtils#retainAll". | |
</action> | |
<action issue="COLLECTIONS-217" dev="scolebourne" type="fix" due-to="Matt Bishop"> | |
Calling "setValue(Object)" on any Entry returned by a "Flat3Map" will now | |
correctly set the value for the current entry. | |
</action> | |
</release> | |
</body> | |
</document> |