| <?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="2020-MM-DD" description="Maintenance release."> |
| <action issue="COLLECTIONS-759" dev="kinow" type="fix"> |
| Fix checkstyle issues regarding missing newline at end of file, and CRLF vs LF. |
| </action> |
| <action issue="COLLECTIONS-760" dev="kinow" type="add" due-to="Isira Seneviratne"> |
| Add tests for MapUtils |
| </action> |
| <action issue="COLLECTIONS-737" dev="kinow" type="update" due-to="Prodigysov"> |
| Return 0 immediately if the given iterable is null in IterableUtils#size. Update tests. |
| </action> |
| <action issue="COLLECTIONS-697" dev="eax" type="update" due-to="Ranjan George"> |
| JavaDoc for FixedSizeList should warn that modifying underlying list is still allowed and is not prevented |
| </action> |
| <action issue="COLLECTIONS-738" dev="kinow" type="update" due-to="Pengyu Nie"> |
| Remove the redundant assertNull in IterableUtilsTest.find and update Javadocs. |
| </action> |
| <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> |
| <action issue="COLLECTIONS-740" dev="ggregory" type="fix" due-to="Pengyu Nie"> |
| Add missing @throws comment for SwitchTransformer.switchTransformer. #124. |
| </action> |
| <action issue="COLLECTIONS-739" dev="ggregory" type="fix" due-to="Pengyu Nie"> |
| Fix inconsistent @throws comments in DefaultedMap #123. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Dominik Stadler"> |
| Fix links to release notes and update contents for 4.4 #127. |
| </action> |
| <action issue="COLLECTIONS-744" dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add org.apache.commons.collections4.EnumerationUtils.asIterable(Enumeration). |
| </action> |
| <action issue="COLLECTIONS-728" dev="ggregory" type="add" due-to="Claude Warren"> |
| BloomFilter contribution. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| [test] Update JUnit from 4.12 to 4.13. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| [build] Update Apache commons-parent from 48 to 50. |
| </action> |
| <action issue="COLLECTIONS-746" dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add org.apache.commons.collections4.properties.PropertiesFactory.EMPTY_PROPERTIES. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| [build] Update Jacoco from 0.8.4 to 0.8.5. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| [test] Update org.easymock:easymock 4.1 -> 4.2. |
| </action> |
| <action issue="COLLECTIONS-747" dev="ggregory" type="fix" due-to="Gary Gregory, Walter Laan"> |
| MultiKey.getKeys class cast exception. |
| </action> |
| <action issue="COLLECTIONS-748" dev="ggregory" type="update" due-to="Gary Gregory"> |
| Let org.apache.commons.collections4.properties.[Sorted]PropertiesFactory accept XML input. |
| </action> |
| <action type="update" dev="ggregory" due-to="Gary Gregory"> |
| Update tests from Apache Commons Lang 3.9 to 3.10. |
| </action> |
| <action dev="ggregory" type="update" due-to="Chen"> |
| Fixed the typo and deal the NPE with Objects.requireNonNull #118. |
| </action> |
| <action type="update" dev="ggregory" due-to="Gary Gregory"> |
| Update build from checkstyle.version 3.1.0 to 3.1.1. |
| Update build from checkstyle.dep.version 8.29 to 8.31. |
| </action> |
| <action dev="ggregory" type="update" due-to="Chen, Bruno P. Kinoshita, Gary Gregory, Michael Osipov"> |
| Better NPE messages in CollectionUtils with Objects.requireNonNull #117. |
| </action> |
| <action issue="COLLECTIONS-754" type="update" dev="ggregory" due-to="John Patrick"> |
| Upgrade to JUnit v5.6.0 #136 |
| </action> |
| <action issue="COLLECTIONS-753" type="update" dev="ggregory" due-to="John Patrick"> |
| Upgrade Hamcrest to 2.2. |
| </action> |
| <action issue="COLLECTIONS-759" dev="ggregory" type="update" due-to="Bruno P. Kinoshita"> |
| Add newline at end of file, and convert to unix (LF instead of CRLF) fixing checkstyle #147. |
| </action> |
| <action issue="COLLECTIONS-757" dev="ggregory" type="update" due-to="Chen"> |
| Update Javadoc in BidiMap classes #146. |
| </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> |