Prepare for the next release candidate

This commit is contained in:
Gary Gregory 2024-03-31 11:50:24 -04:00
parent 4cac454ded
commit 5e6708d789
9 changed files with 435 additions and 228 deletions

View File

@ -49,13 +49,13 @@ Getting Started
--------------- ---------------
+ Make sure you have a [JIRA account](https://issues.apache.org/jira/). + Make sure you have a [JIRA account](https://issues.apache.org/jira/).
+ Make sure you have a [GitHub account](https://github.com/signup/free). + Make sure you have a [GitHub account](https://github.com/signup/free). This is not essential, but makes providing patches much easier.
+ If you're planning to implement a new feature it makes sense to discuss your changes on the [dev list](https://commons.apache.org/mail-lists.html) first. This way you can make sure you're not wasting your time on something that isn't considered to be in Apache Commons Collections's scope. + If you're planning to implement a new feature it makes sense to discuss your changes on the [dev list](https://commons.apache.org/mail-lists.html) first. This way you can make sure you're not wasting your time on something that isn't considered to be in Apache Commons Collections's scope.
+ Submit a [Jira Ticket][jira] for your issue, assuming one does not already exist. + Submit a [Jira Ticket][jira] for your issue, assuming one does not already exist.
+ Clearly describe the issue including steps to reproduce when it is a bug. + Clearly describe the issue including steps to reproduce when it is a bug.
+ Make sure you fill in the earliest version that you know has the issue. + Make sure you fill in the earliest version that you know has the issue.
+ Find the corresponding [repository on GitHub](https://github.com/apache/?query=commons-), + Find the corresponding [repository on GitHub](https://github.com/apache/?query=commons-),
[fork](https://help.github.com/articles/fork-a-repo/) and check out your forked repository. [fork](https://help.github.com/articles/fork-a-repo/) and check out your forked repository. If you don't have a GitHub account, you can still clone the Commons repository.
Making Changes Making Changes
-------------- --------------
@ -109,7 +109,6 @@ Additional Resources
+ [General GitHub documentation](https://help.github.com/) + [General GitHub documentation](https://help.github.com/)
+ [GitHub pull request documentation](https://help.github.com/articles/creating-a-pull-request/) + [GitHub pull request documentation](https://help.github.com/articles/creating-a-pull-request/)
+ [Apache Commons Twitter Account](https://twitter.com/ApacheCommons) + [Apache Commons Twitter Account](https://twitter.com/ApacheCommons)
+ `#apache-commons` IRC channel on `irc.freenode.net`
[cla]:https://www.apache.org/licenses/#clas [cla]:https://www.apache.org/licenses/#clas
[jira]:https://issues.apache.org/jira/browse/COLLECTIONS [jira]:https://issues.apache.org/jira/browse/COLLECTIONS

View File

@ -44,12 +44,11 @@ Apache Commons Collections
=================== ===================
[![Java CI](https://github.com/apache/commons-collections/actions/workflows/maven.yml/badge.svg)](https://github.com/apache/commons-collections/actions/workflows/maven.yml) [![Java CI](https://github.com/apache/commons-collections/actions/workflows/maven.yml/badge.svg)](https://github.com/apache/commons-collections/actions/workflows/maven.yml)
[![Coverage Status](https://codecov.io/gh/apache/commons-collections/branch/master/graph/badge.svg)](https://app.codecov.io/gh/apache/commons-collections/branch/master) [![Coverage Status](https://codecov.io/gh/apache/commons-collections/branch/master/graph/badge.svg)](https://app.codecov.io/gh/apache/commons-collections)
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.apache.commons/commons-collections4/badge.svg?gav=true)](https://maven-badges.herokuapp.com/maven-central/org.apache.commons/commons-collections4/?gav=true) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.apache.commons/commons-collections4/badge.svg?gav=true)](https://maven-badges.herokuapp.com/maven-central/org.apache.commons/commons-collections4/?gav=true)
[![Javadocs](https://javadoc.io/badge/org.apache.commons/commons-collections4/4.4.svg)](https://javadoc.io/doc/org.apache.commons/commons-collections4/4.4) [![Javadocs](https://javadoc.io/badge/org.apache.commons/commons-collections4/4.5.0-M1.svg)](https://javadoc.io/doc/org.apache.commons/commons-collections4/4.5.0-M1)
[![CodeQL](https://github.com/apache/commons-collections/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/apache/commons-collections/actions/workflows/codeql-analysis.yml) [![CodeQL](https://github.com/apache/commons-collections/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/apache/commons-collections/actions/workflows/codeql-analysis.yml)
[![OpenSSF [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/apache/commons-collections/badge)](https://api.securityscorecards.dev/projects/github.com/apache/commons-collections)
Scorecard](https://api.securityscorecards.dev/projects/github.com/apache/commons-collections/badge)](https://api.securityscorecards.dev/projects/github.com/apache/commons-collections)
The Apache Commons Collections package contains types that extend and augment the Java Collections Framework. The Apache Commons Collections package contains types that extend and augment the Java Collections Framework.
@ -60,27 +59,35 @@ More information can be found on the [Apache Commons Collections homepage](https
The [Javadoc](https://commons.apache.org/proper/commons-collections/apidocs) can be browsed. The [Javadoc](https://commons.apache.org/proper/commons-collections/apidocs) can be browsed.
Questions related to the usage of Apache Commons Collections should be posted to the [user mailing list](https://commons.apache.org/mail-lists.html). Questions related to the usage of Apache Commons Collections should be posted to the [user mailing list](https://commons.apache.org/mail-lists.html).
Where can I get the latest release? Getting the latest release
----------------------------------- --------------------------
You can download source and binaries from our [download page](https://commons.apache.org/proper/commons-collections/download_collections.cgi). You can download source and binaries from our [download page](https://commons.apache.org/proper/commons-collections/download_collections.cgi).
Alternatively, you can pull it from the central Maven repositories: Alternatively, you can pull it from the central Maven repositories:
```xml ```xml
<dependency> <dependency>
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId> <artifactId>commons-collections4</artifactId>
<version>4.4</version> <version>4.5.0-M1</version>
</dependency> </dependency>
``` ```
Building
--------
Building requires a Java JDK and [Apache Maven](https://maven.apache.org/).
The required Java version is found in the `pom.xml` as the `maven.compiler.source` property.
From a command shell, run `mvn` without arguments to invoke the default Maven goal to run all tests and checks.
Contributing Contributing
------------ ------------
We accept Pull Requests via GitHub. The [developer mailing list][ml] is the main channel of communication for contributors. We accept Pull Requests via GitHub. The [developer mailing list](https://commons.apache.org/mail-lists.html) is the main channel of communication for contributors.
There are some guidelines which will make applying PRs easier for us: There are some guidelines which will make applying PRs easier for us:
+ No tabs! Please use spaces for indentation. + No tabs! Please use spaces for indentation.
+ Respect the code style. + Respect the existing code style for each file.
+ Create minimal diffs - disable on save actions like reformat source code or organize imports. If you feel the source code should be reformatted create a separate PR for this change. + Create minimal diffs - disable on save actions like reformat source code or organize imports. If you feel the source code should be reformatted create a separate PR for this change.
+ Provide JUnit tests for your changes and make sure your changes don't break any existing tests by running ```mvn```. + Provide JUnit tests for your changes and make sure your changes don't break any existing tests by running ```mvn```.
@ -89,20 +96,23 @@ You can learn more about contributing via GitHub in our [contribution guidelines
License License
------- -------
This code is under the [Apache License v2](https://www.apache.org/licenses/LICENSE-2.0). This code is licensed under the [Apache License v2](https://www.apache.org/licenses/LICENSE-2.0).
See the `NOTICE.txt` file for required notices and attributions. See the `NOTICE.txt` file for required notices and attributions.
Donations Donating
--------- --------
You like Apache Commons Collections? Then [donate back to the ASF](https://www.apache.org/foundation/contributing.html) to support the development. You like Apache Commons Collections? Then [donate back to the ASF](https://www.apache.org/foundation/contributing.html) to support development.
Additional Resources Additional Resources
-------------------- --------------------
+ [Apache Commons Homepage](https://commons.apache.org/) + [Apache Commons Homepage](https://commons.apache.org/)
+ [Apache Issue Tracker (JIRA)](https://issues.apache.org/jira/browse/COLLECTIONS) + [Apache Issue Tracker (JIRA)](https://issues.apache.org/jira/browse/COLLECTIONS)
+ [Apache Commons Slack Channel](https://the-asf.slack.com/archives/C60NVB8AD)
+ [Apache Commons Twitter Account](https://twitter.com/ApacheCommons) + [Apache Commons Twitter Account](https://twitter.com/ApacheCommons)
+ `#apache-commons` IRC channel on `irc.freenode.org`
[ml]:https://commons.apache.org/mail-lists.html Apache Commons Components
-------------------------
Please see the [list of components](https://commons.apache.org/components.html)

View File

@ -1,23 +1,185 @@
Apache Commons Collections 4.4 RELEASE NOTES Apache Commons Collections 4.5.0-M1 RELEASE NOTES
-------------------------------------------------
The Apache Commons Collections package contains types that extend and augment the Java Collections Framework.
This milestone release requires Java 8 and adds the package `org.apache.commons.collections4.bloomfilter` for review.
Changes in this version
-----------------------
New features
------------
* COLLECTIONS-843: Implement Layered Bloom filter #402. Thanks to Claude Warren, Alex Herbert, Gary Gregory.
* COLLECTIONS-748: Let org.apache.commons.collections4.properties.[Sorted]PropertiesFactory accept XML input. Thanks to Gary Gregory.
* COLLECTIONS-772: Add private constructor to ArrayUtils; better Javadocs, #195. Thanks to Arturo Bernal, Alex Herbert, Gary Gregory, Bruno P. Kinoshita.
* COLLECTIONS-760: Add tests for MapUtils. Thanks to Isira Seneviratne.
* Test subMap and tailMap #94. Thanks to dota17.
* Add junit for add, remove, setCount and entrySet in the UnmodifiableMultiSetTest #95. Thanks to dota17.
* Add two test cases in UnmodifiableQueueTest #96. Thanks to dota17.
* Update two test cases in AbstractMultiValuedMapTest testPutAll_map1 testPutAll_map2 #97. Thanks to dota17.
* Add a test case for AbstractMultiValuedMapTest testToString() #100. Thanks to dota17.
* Add a test case AbstractMultiValuedMapTest#testMultiValuedMapIterator() #108. Thanks to dota17.
* Add junit for getWithNull and subList in LazyListTest; #103. Thanks to dota17.
* Add test cases to ArrayListValuedHashMapTest; #106. Thanks to dota17.
* Add test cases in UnmodifiableMultiValuedMapTest; #102. Thanks to dota17.
* COLLECTIONS-674: Add CollectionUtils removeRange, removeCount #91. Thanks to dota17.
* Add ListUtils.getFirst() and getLast(). Thanks to Gary Gregory.
* Add singleton ObjectToStringComparator.INSTANCE. Thanks to Gary Gregory.
* Add github/codeql-action.
* COLLECTIONS-811: Add Guava testlib tests. Thanks to Ben Manes.
* COLLECTIONS-728: Add BloomFilter contribution. Thanks to Claude Warren.
* COLLECTIONS-726: Add lambdas function to provide default values in MapUtils #81. Thanks to liuhaozzu, Gary Gregory.
* Add three test cases in UnmodifiableQueueTest #105. Thanks to dota17.
* COLLECTIONS-744: Add org.apache.commons.collections4.EnumerationUtils.asIterable(Enumeration). Thanks to Gary Gregory.
* COLLECTIONS-746: Add org.apache.commons.collections4.properties.PropertiesFactory.EMPTY_PROPERTIES. Thanks to Gary Gregory.
* COLLECTIONS-746: Add PropertiesFactory. Thanks to Gary Gregory.
* Add org.apache.commons.collections4.properties.OrderedProperties and OrderedPropertiesFactory. Thanks to Gary Gregory.
* Make AbstractPatriciaTrie public #407. Thanks to Vadim, Claude Warren, Gary Gregory, Alex Herbert.
* Add test cases for indexOf and contains method of ArrayUtils class #215. Thanks to Ajay Kumar Jha, Bruno P. Kinoshita, Claude Warren.
* Add Maven property project.build.outputTimestamp for build reproducibility. Thanks to Gary Gregory.
Fixed Bugs
----------
* COLLECTIONS-780: Use assertThrows V2. Thanks to Arturo Bernal.
* COLLECTIONS-778: Use assertThrows. Thanks to Arturo Bernal.
* COLLECTIONS-771: Fix flaky AbstractMultiValuedMapTest#testToString. Thanks to Xin Tong.
* COLLECTIONS-769: Fix flaky UnmodifiableMultiValuedMapTest. Thanks to Xin (Cynthia) Tong.
* COLLECTIONS-764: Refine javadoc and fix typos. Thanks to XenoAmess.
* COLLECTIONS-765: Update Javadoc of ListIteratorWrapper#remove. Thanks to Tobias Kiecker.
* COLLECTIONS-708: Add hashCode method to CollectionUtils that supports an equator parameter. Thanks to dota17.
* COLLECTIONS-759: Fix checkstyle issues regarding missing newline at end of file, and CRLF vs LF.
* COLLECTIONS-727: A potential misleading comment #82. Thanks to XiangzheXu, XZ-X.
* COLLECTIONS-679: Using existing class in example given in Javadocs. #85. Thanks to David Mollitor, Mikko Maunu.
* COLLECTIONS-729: Add test cases to IteratorUtilsTest #86. Thanks to dota17.
* Fix typos in release notes and Javadoc for AbstractHashedMap and AbstractHashedMapTest #88. Thanks to dota17.
* COLLECTIONS-740: Add missing @throws comment for SwitchTransformer.switchTransformer. #124. Thanks to Pengyu Nie.
* COLLECTIONS-739: Fix inconsistent @throws comments in DefaultedMap #123. Thanks to Pengyu Nie.
* Fix links to release notes and update contents for 4.4 #127. Thanks to Dominik Stadler.
* Fix checkstyle syntax (was scope, is now accessModifiers) via PR #235. Thanks to Jin Xu.
* COLLECTIONS-786: Fix PassiveExpiringMap documentation for methods that involve accessing the entire map. Thanks to vandrewskis.
* SortedProperties should sort entrySet() as well as keys() #256. Thanks to Michael Berry.
* COLLECTIONS-796: SetUniqueList.createSetBasedOnList doesn't add list elements to return value. Thanks to Clemens Kurz.
* COLLECTIONS-799: UnmodifiableNavigableSet can be modified by pollFirst() and pollLast(). Thanks to Stefano Cordio.
* Use Java 8 and method reference. #274. Thanks to Arturo Bernal.
* COLLECTIONS-788: Use Java 8 features #228. Thanks to Arturo Bernal.
* COLLECTIONS-807: Upgraded org.junit.Test to org.junit.jupiter.api.Test #295, #304. Thanks to Pradeesh Kumar, samabcde.
* COLLECTIONS-802: ReferenceMap iterator remove violates contract #300. Thanks to samabcde, Ben Manes.
* COLLECTIONS-812: Fix flaky EmptyPropertiesTest#testSave. Thanks to Ng Tsz Sum.
* Use java.lang.Objects#equals; eliminate a couple of nulls #307. Thanks to Steve Bosman.
* COLLECTIONS-814: CollectionUtils.removeAll() not throwing NPE #340. Thanks to angusdev.
* Fix minor typos #323 Thanks to Marc Wrobel.
* AbstractReferenceMap.SoftRef implements hashCode() but not equals(). Thanks to Gary Gregory.
* AbstractReferenceMap.WeakRef implements hashCode() but not equals(). Thanks to Gary Gregory.
* Use Java style array decelerations #362. Thanks to Arturo Bernal.
* COLLECTIONS-806: Remove use of JUnit4 junit.framework.Test class #371. Thanks to Piyush Sagar.
* COLLECTIONS-839: Migrate Map tests to JUnit 5 assertions #391. Thanks to Sam Ng, Gary Gregory, Bruno P. Kinoshita.
* COLLECTIONS-835: Fix links in javadoc and documentations #325. Thanks to Marc Wrobel.
* Correct test of Collection toArray(Object[]) vs toArray() to optionally ignore array order.
Ordering is not specified for some collections such as Bags. Thanks to Partha Protim Paul.
* COLLECTIONS-836: Correct test of BidiMap to optionally ignore testing the key set matches the values order.
Ordering is not specified for some BidiMaps such as DualHashBidiMaps. Thanks to Anant Dahiya.
* COLLECTIONS-737: Return 0 immediately if the given iterable is null in IterableUtils#size. Update tests. Thanks to Prodigysov.
* COLLECTIONS-697: JavaDoc for FixedSizeList should warn that modifying underlying list is still allowed and is not prevented Thanks to Ranjan George.
* Fill in some map test cases #104. Thanks to dota17.
* COLLECTIONS-738: Remove the redundant assertNull in IterableUtilsTest.find and update Javadocs. Thanks to Pengyu Nie.
* COLLECTIONS-724: Simplify two remove-if loops #77. Thanks to Eitan Adler.
* Fix inconsistent @throws comments in ListOrderedSet #125. Thanks to Chen.
* COLLECTIONS-704: Update size to capacity for GrowthList #90. Thanks to dota17.
* TransformedSortedBagTest should work with TransformedSortedBag, not TransformedBag #98. Thanks to dota17.
* Remove the parentheses in the error message in CircularFifoQueue #107. Thanks to dota17.
* COLLECTIONS-747: MultiKey.getKeys class cast exception. Thanks to Gary Gregory, Walter Laan.
* COLLECTIONS-759: Use newline at end of file, and convert to Unix (LF instead of CRLF) fixing checkstyle #147. Thanks to Bruno P. Kinoshita.
* Fixed the typo and deal the NPE with Objects.requireNonNull #118. Thanks to Chen.
* COLLECTIONS-757: Javadoc BidiMap classes #146. Thanks to Chen.
* COLLECTIONS-773: Assert ensureCapacity #198. Thanks to Martin Monperrus.
* COLLECTIONS-775: Fix flaky CollectionUtilsTest.getFromMap() #200. Thanks to Xin Tong, Bruno P. Kinoshita, Gary Gregory.
* Minor Improvements #203, #208. Thanks to Arturo Bernal.
* Fix typo erroring -> erring #202. Thanks to EruDev.
* COLLECTIONS-734: Encountered an IllegalStateException while traversing with Flat3Map.entrySet(). #115. Thanks to Chen.
* Better NPE messages in CollectionUtils with Objects.requireNonNull #117. Thanks to Chen, Bruno P. Kinoshita, Gary Gregory, Michael Osipov.
* Improve MapUtils with the null checks, add JUnit for it and add Javadoc for the parameter indent. #126. Thanks to Chen.
* COLLECTIONS-793: Simplify Assertion. Thanks to Arturo Bernal.
* [StepSecurity] ci: Harden GitHub Actions #401. Thanks to step-security-bot, Gary Gregory.
* Fix punctuation and minor Javadoc issues #409. Thanks to Martin Wiesner, Bruno P. Kinoshita, Gary Gregory.
* Deprecate IterableUtils 0-argument constructor. Thanks to Gary Gregory.
* COLLECTIONS-850: Tests in org.apache.commons.collections4.multimap should not depend on map iteration order, see also #429. Thanks to Gary Gregory, Anirudh Madhavan.
* COLLECTIONS-850: Reimplement FixedOrderComparator#equals() and hashCode(), see also #392. Thanks to Gary Gregory, Saurabh Rahate.
Changes
-------
* Bump org.easymock:easymock from 4.0.2 to 5.2.0 #352, #355, #375, #414. Thanks to Gary Gregory, Dependabot.
* Bump actions/cache. Thanks to Dependabot, Gary Gregory.
* Bump actions/setup-java. Thanks to Dependabot, Gary Gregory.
* Bump actions/checkout. Thanks to Dependabot, Gary Gregory.
* Bump codecov/codecov-action. Thanks to Dependabot.
* Bump Apache commons-parent from 48 to 67. Thanks to Gary Gregory, Dependabot.
* Bump Jacoco from 0.8.4 to 0.8.8. Thanks to Gary Gregory.
* Bump tests from Apache Commons Lang 3.9 to 3.11. Thanks to Gary Gregory.
* Bump maven-checkstyle-plugin 3.1.0 to 3.2.1 #379. Thanks to Gary Gregory.
* Bump checkstyle from 8.29 to 9.3. Thanks to Gary Gregory.
* COLLECTIONS-754: Bump to JUnit v5.6.2 #136. Thanks to John Patrick.
* COLLECTIONS-777: Migrate JUnit 4.12 to 5.9.1 #324, #338. Thanks to John Patrick, Gary Gregory, Dependabot.
* COLLECTIONS-753: Bump Hamcrest to 2.2. Thanks to John Patrick.
* Remove deprecated sudo setting. #161. Thanks to dengliming.
* Bump tests from commons-io:commons-io 2.6 to 2.16.0 #180, #469. Thanks to Gary Gregory.
* Bump maven-pmd-plugin from 3.12.0 to 3.19.0 #167, #196, #253, #311, #334. Thanks to Dependabot, Gary Gregory.
* Bump optional commons-codec:commons-codec from 1.14 to 1.16.1. Thanks to Gary Gregory.
* Bump commons.junit.version from 5.6.2 to 5.8.2 #181 #213 #236 #252 #254 #268. Thanks to Dependabot.
* COLLECTIONS-774: Bump maven-antrun-plugin from 1.8 to 3.1.0 #170, #303. Thanks to Dependabot.
* Bump maven-checkstyle-plugin from 3.1.1 to 3.1.2 #211. Thanks to Dependabot.
* COLLECTIONS-779: Migrate assert to Assertions #209. Thanks to Arturo Bernal, Gary Gregory.
* COLLECTIONS-781: Add and use CollectionUtils.INDEX_NOT_FOUND constant. Thanks to Arturo Bernal, Gary Gregory.
* Bump commons-lang3 from 3.11 to 3.14.0. Thanks to Dependabot, Gary Gregory.
* COLLECTIONS-785: Add new variables to oac.collections4.CollectionUtils and use them in the code base. Thanks to Arturo Bernal.
* Bump easymock from 4.2 to 4.3 #226. Thanks to Dependabot.
* Bump maven-pmd-plugin from 3.15.0 to 3.16.0 #286. Thanks to Dependabot.
* Bump commons-parent from 52 to 58 #299, #368, #373, #393. Thanks to Dependabot, Gary Gregory.
* Bump japicmp from 0.15.4 to 0.16.0. Thanks to Dependabot.
* Bump pmd from 6.46.0 to 6.52.0 #318, #327, #333, #347. Thanks to Dependabot, Gary Gregory.
* Bump guava-testlib from 31.1-jre to 33.1.0-jre #394, #395, #404, #405, #411, #423, #438, #462. Thanks to Dependabot.
For complete information on Apache Commons Collections, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons Collections website:
https://commons.apache.org/proper/commons-collections/
Download page: https://commons.apache.org/proper/commons-collections/download_collections.cgi
-----------------------------------------------------------------------------
Apache Commons Collections 4.4 RELEASE NOTES
--------------------------------------------
The Apache Commons Collections package contains types that extend and augment the Java Collections Framework. The Apache Commons Collections package contains types that extend and augment the Java Collections Framework.
Maintenance release. Maintenance release.
Changes in this version include: Changes in this version
-----------------------
New features: New features
o COLLECTIONS-715: Implement Collection's removeIf(). Thanks to morningmemo, Gary Gregory. ------------
o COLLECTIONS-719: Create a PropertiesFactory and SortedPropertiesFactory. Thanks to Gary Gregory.
o COLLECTIONS-719: Support Transformer for LazyList #52. Thanks to Stephan Windmüller, Bruno P. Kinoshita.
o COLLECTIONS-723: Make use of FunctionalInterface #48. Thanks to Eitan Adler, SOC, Bruno P. Kinoshita.
Fixed Bugs: * COLLECTIONS-715: Implement Collection's removeIf(). Thanks to morningmemo, Gary Gregory.
o COLLECTIONS-710: NullPointerExceptions in CompositeCollection, CompositeSet, and CompositeMap. Thanks to Yu Shi, Gary Gregory. * COLLECTIONS-719: Create a PropertiesFactory and SortedPropertiesFactory. Thanks to Gary Gregory.
* COLLECTIONS-719: Support Transformer for LazyList #52. Thanks to Stephan Windmüller, Bruno P. Kinoshita.
* COLLECTIONS-723: Make use of FunctionalInterface #48. Thanks to Eitan Adler, SOC, Bruno P. Kinoshita.
Changes: Fixed Bugs
o COLLECTIONS-718: Fix LRUMap exception message. Thanks to Eitan Adler. ----------
o COLLECTIONS-716: Don't include email address in Exception messages. Thanks to Sebb.
* COLLECTIONS-710: NullPointerExceptions in CompositeCollection, CompositeSet, and CompositeMap. Thanks to Yu Shi, Gary Gregory.
Changes
-------
* COLLECTIONS-718: Fix LRUMap exception message. Thanks to Eitan Adler.
* COLLECTIONS-716: Don't include email address in Exception messages. Thanks to Sebb.
For complete information on Apache Commons Collections, including instructions on how to submit bug reports, For complete information on Apache Commons Collections, including instructions on how to submit bug reports,
@ -27,9 +189,10 @@ https://commons.apache.org/proper/commons-collections/
Download page: https://commons.apache.org/proper/commons-collections/download_pool.cgi Download page: https://commons.apache.org/proper/commons-collections/download_pool.cgi
=============================================================================== -----------------------------------------------------------------------------
Apache Commons Collections 4.3 RELEASE NOTES Apache Commons Collections 4.3 RELEASE NOTES
--------------------------------------------
The Apache Commons Collections package contains types that extend and augment the Java Collections Framework. The Apache Commons Collections package contains types that extend and augment the Java Collections Framework.
@ -37,19 +200,25 @@ Update from Java 7 to Java 8, bug fixes, and small changes.
Changes in this version include: Changes in this version include:
New features: New features
o COLLECTIONS-696: AbstractReferenceMap made easier for subclassing; PR #51. Thanks to Maxim Solodovnik. ------------
Fixed Bugs: * COLLECTIONS-696: AbstractReferenceMap made easier for subclassing; PR #51. Thanks to Maxim Solodovnik.
o COLLECTIONS-691: Use boolean operator for boolean result. Thanks to Eitan Adler.
o COLLECTIONS-701: StackOverflowError in SetUniqueList.add() when it receives itself. Thanks to Shin Hong, Don Jeba.
o COLLECTIONS-703: The PassiveExpiringMap#put() method should return the previous record only if not expired. Thanks to Tomas Tulka.
o COLLECTIONS-706: Add SetUtils.unmodifiableSet(T... items) method. Thanks to Richard Eckart de Castilho, Gary Gregory.
Changes: Fixed Bugs
o COLLECTIONS-688: Update platform requirement from Java 7 to 8. ----------
o COLLECTIONS-689: Link to Javadoc API broken. Thanks to Richard Walker.
o COLLECTIONS-692: Replace use of deprecated Class#newInstance() PR #49. Thanks to Gary Gregory, Eitan Adler. * COLLECTIONS-691: Use boolean operator for boolean result. Thanks to Eitan Adler.
* COLLECTIONS-701: StackOverflowError in SetUniqueList.add() when it receives itself. Thanks to Shin Hong, Don Jeba.
* COLLECTIONS-703: The PassiveExpiringMap#put() method should return the previous record only if not expired. Thanks to Tomas Tulka.
* COLLECTIONS-706: Add SetUtils.unmodifiableSet(T... items) method. Thanks to Richard Eckart de Castilho, Gary Gregory.
Changes
-------
* COLLECTIONS-688: Update platform requirement from Java 7 to 8.
* COLLECTIONS-689: Link to Javadoc API broken. Thanks to Richard Walker.
* COLLECTIONS-692: Replace use of deprecated Class#newInstance() PR #49. Thanks to Gary Gregory, Eitan Adler.
Please NOTE: Clirr errors reported for this release are false positive, this is proved by Japicmp report Please NOTE: Clirr errors reported for this release are false positive, this is proved by Japicmp report
And manual testing. And manual testing.
@ -61,9 +230,10 @@ https://commons.apache.org/proper/commons-collections/
Download page: https://commons.apache.org/proper/commons-collections/download_collections.cgi Download page: https://commons.apache.org/proper/commons-collections/download_collections.cgi
=============================================================================== -----------------------------------------------------------------------------
Apache Commons Collections 4.2 RELEASE NOTES Apache Commons Collections 4.2 RELEASE NOTES
--------------------------------------------
The Apache Commons Collections package contains types that extend and augment the Java Collections Framework. The Apache Commons Collections package contains types that extend and augment the Java Collections Framework.
@ -71,36 +241,42 @@ Update from Java 6 to Java 7, bug fixes, and small changes.
Changes in this version include: Changes in this version include:
New features: New features
o COLLECTIONS-681: Add test for MultiSetUtils Thanks to Stephan Fuhrmann. ------------
o COLLECTIONS-658: Add Automatic-Module-Name MANIFEST entry for Java 9 compatibility.
o COLLECTIONS-589: Add null-safe MapUtils.size(Map<?, ?>) method. Thanks to Gary Gregory.
o COLLECTIONS-586: PatriciaTrie prefixMap clear throws NullPointerException. Thanks to Shailender Bathula, Gary Gregory.
o COLLECTIONS-654: Add class SortedProperties to sort keys.
o COLLECTIONS-668: Add CollectionUtils containsAny method for primitive array: org.apache.commons.collections4.CollectionUtils.containsAny(Collection<?>, T...). Thanks to Gary Gregory.
o COLLECTIONS-575: Synchronized queue wrapper in QueueUtils. Thanks to Guram Savinov, Grzegorz Rożniecki, Bruno P. Kinoshita, Gary Gregory.
o COLLECTIONS-670: Add org.apache.commons.collections4.IteratorUtils.first(Iterator). Thanks to Gary Gregory.
o COLLECTIONS-671: Add org.apache.commons.collections4.IterableUtils.first(Iterable). Thanks to Gary Gregory.
Fixed Bugs: * COLLECTIONS-681: Add test for MultiSetUtils Thanks to Stephan Fuhrmann.
o COLLECTIONS-599: HashEntry array object naming data initialized with double the size during deserialization. Thanks to Tejas Patel, Saleem Akbar, Gary Gregory. * COLLECTIONS-658: Add Automatic-Module-Name MANIFEST entry for Java 9 compatibility.
o COLLECTIONS-662: Unit tests MapUtilsTest and ListIteratorWrapperTest no longer fail on Java 9. Thanks to Vamsi Kavuri. * COLLECTIONS-589: Add null-safe MapUtils.size(Map<?, ?>) method. Thanks to Gary Gregory.
o COLLECTIONS-661: Intermittent test failures in Windows for HashSetValuedHashMap. * COLLECTIONS-586: PatriciaTrie prefixMap clear throws NullPointerException. Thanks to Shailender Bathula, Gary Gregory.
o COLLECTIONS-660: Uncomment test in AbstractMapTest regarding LRUMap equals. * COLLECTIONS-654: Add class SortedProperties to sort keys.
o COLLECTIONS-656: Fix site build on Java 8. * COLLECTIONS-668: Add CollectionUtils containsAny method for primitive array: org.apache.commons.collections4.CollectionUtils.containsAny(Collection<?>, T...). Thanks to Gary Gregory.
o COLLECTIONS-653: Update Javadoc to Build on Java 1.8. * COLLECTIONS-575: Synchronized queue wrapper in QueueUtils. Thanks to Guram Savinov, Grzegorz Rożniecki, Bruno P. Kinoshita, Gary Gregory.
o COLLECTIONS-606: Build status, Coverage status and Maven central weren't in README.md Thanks to Vamsi Kavuri. * COLLECTIONS-670: Add org.apache.commons.collections4.IteratorUtils.first(Iterator). Thanks to Gary Gregory.
o COLLECTIONS-594: Website spelling error: MultiValuedMapList. Thanks to Javen O'Neal. * COLLECTIONS-671: Add org.apache.commons.collections4.IterableUtils.first(Iterable). Thanks to Gary Gregory.
o COLLECTIONS-597: Correction of Javadoc for org.apache.commons.collections4.functors.CatchAndRethrowClosure. Thanks to Enrique.
o COLLECTIONS-678: The verification of unsupported iterator methods is not complete. Thanks to Oscar Luis Vera Pérez.
o COLLECTIONS-673: ListUtils.partition potential integer overflow. Thanks to John Mark, Stephan Fuhrmann.
Changes: Fixed Bugs
o COLLECTIONS-602: Improve efficiency of DefaultedMap.get. Thanks to John Mark. ----------
o COLLECTIONS-603: Small improvements for generics, conditional statements, and warnings suppressions. Thanks to Artem Konovalov.
o COLLECTIONS-655: Update platform from Java 6 to Java 7. * COLLECTIONS-599: HashEntry array object naming data initialized with double the size during deserialization. Thanks to Tejas Patel, Saleem Akbar, Gary Gregory.
o COLLECTIONS-666: org.apache.commons.collections4.ListUtils.union(List, List) should pre-allocate result list. Thanks to BELUGA BEHR. * COLLECTIONS-662: Unit tests MapUtilsTest and ListIteratorWrapperTest no longer fail on Java 9. Thanks to Vamsi Kavuri.
o COLLECTIONS-669: Update org.apache.commons.collections4.CollectionUtils.addAll(Collection<C>, C[]) to addAll(Collection<C>, C...). Thanks to BELUGA BEHR, Gary Gregory. * COLLECTIONS-661: Intermittent test failures in Windows for HashSetValuedHashMap.
* COLLECTIONS-660: Uncomment test in AbstractMapTest regarding LRUMap equals.
* COLLECTIONS-656: Fix site build on Java 8.
* COLLECTIONS-653: Update Javadoc to Build on Java 1.8.
* COLLECTIONS-606: Build status, Coverage status and Maven central weren't in README.md Thanks to Vamsi Kavuri.
* COLLECTIONS-594: Website spelling error: MultiValuedMapList. Thanks to Javen O'Neal.
* COLLECTIONS-597: Correction of Javadoc for org.apache.commons.collections4.functors.CatchAndRethrowClosure. Thanks to Enrique.
* COLLECTIONS-678: The verification of unsupported iterator methods is not complete. Thanks to Oscar Luis Vera Pérez.
* COLLECTIONS-673: ListUtils.partition potential integer overflow. Thanks to John Mark, Stephan Fuhrmann.
Changes
-------
* COLLECTIONS-602: Improve efficiency of DefaultedMap.get. Thanks to John Mark.
* COLLECTIONS-603: Small improvements for generics, conditional statements, and warnings suppressions. Thanks to Artem Konovalov.
* COLLECTIONS-655: Update platform from Java 6 to Java 7.
* COLLECTIONS-666: org.apache.commons.collections4.ListUtils.union(List, List) should pre-allocate result list. Thanks to BELUGA BEHR.
* COLLECTIONS-669: Update org.apache.commons.collections4.CollectionUtils.addAll(Collection<C>, C[]) to addAll(Collection<C>, C...). Thanks to BELUGA BEHR, Gary Gregory.
For complete information on Apache Commons Collections, including instructions on how to submit bug reports, For complete information on Apache Commons Collections, including instructions on how to submit bug reports,
@ -110,13 +286,13 @@ https://commons.apache.org/proper/commons-collections/
Download page: https://commons.apache.org/proper/commons-collections/download_collections.cgi Download page: https://commons.apache.org/proper/commons-collections/download_collections.cgi
=============================================================================== -----------------------------------------------------------------------------
Apache Commons Collections Apache Commons Collections 4.1 RELEASE NOTES
Version 4.1 --------------------------------------------
RELEASE NOTES
INTRODUCTION: Introduction
------------
Apache Commons Collections is a project to develop and maintain collection Apache Commons Collections is a project to develop and maintain collection
classes based on and inspired by the JDK collection framework. classes based on and inspired by the JDK collection framework.
@ -152,119 +328,119 @@ Major changes since 4.0
Changes Changes
------- -------
o [COLLECTIONS-580]: Serialization support for unsafe classes in the functor package * [COLLECTIONS-580]: Serialization support for unsafe classes in the functor package
has been removed as this can be exploited for remote code execution has been removed as this can be exploited for remote code execution
attacks. Classes considered to be unsafe are: CloneTransformer, attacks. Classes considered to be unsafe are: CloneTransformer,
ForClosure, InstantiateFactory, InstantiateTransformer, InvokerTransformer, ForClosure, InstantiateFactory, InstantiateTransformer, InvokerTransformer,
PrototypeCloneFactory, PrototypeSerializationFactory, WhileClosure. PrototypeCloneFactory, PrototypeSerializationFactory, WhileClosure.
o [COLLECTIONS-551]: Deprecated various method in "CollectionUtils" in favor of similar * [COLLECTIONS-551]: Deprecated various method in "CollectionUtils" in favor of similar
methods in the newly introduced "IterableUtils". methods in the newly introduced "IterableUtils".
o [COLLECTIONS-570]: All constructors and static factory methods will now throw a "NullPointerException" * [COLLECTIONS-570]: All constructors and static factory methods will now throw a "NullPointerException"
if a required input argument is null. Previously sometimes a "IllegalArgumentException" if a required input argument is null. Previously sometimes a "IllegalArgumentException"
was used. was used.
o [COLLECTIONS-571]: Deprecated methods "synchronizedCollection(Collection)" and * [COLLECTIONS-571]: Deprecated methods "synchronizedCollection(Collection)" and
"unmodifiableCollection(Collection)" in class "CollectionUtils", the corresponding "unmodifiableCollection(Collection)" in class "CollectionUtils", the corresponding
methods in "java.util.Collections" should be used instead. methods in "java.util.Collections" should be used instead.
o [COLLECTIONS-562]: Upgraded minimum java requirement to Java 6 (up from Java 5). * [COLLECTIONS-562]: Upgraded minimum java requirement to Java 6 (up from Java 5).
New features New features
------------ ------------
o [COLLECTIONS-508]: Added new interfaces "MultiValuedMap", "ListValuedMap" and "SetValuedMap" * [COLLECTIONS-508]: Added new interfaces "MultiValuedMap", "ListValuedMap" and "SetValuedMap"
as a replacement for "MultiMap". Decorators and implementations reside in as a replacement for "MultiMap". Decorators and implementations reside in
the "multimap" package and a "MultiMapUtils" class has been added. the "multimap" package and a "MultiMapUtils" class has been added.
The existing interface "MultiMap" as well as the concrete implementation The existing interface "MultiMap" as well as the concrete implementation
"MultiValueMap" has been deprecated. "MultiValueMap" has been deprecated.
o [COLLECTIONS-567]: Added new MultiSet interface which is intended to be a replacement for * [COLLECTIONS-567]: 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 the Bag interface. The main difference is that a MultiSet is fully compatible
to the Collection contract. to the Collection contract.
o [COLLECTIONS-572]: Added set operations to "SetUtils": union, difference, intersection and disjunction. * [COLLECTIONS-572]: 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. The operations return a view of the result that is backed by the input sets.
o [COLLECTIONS-557]: Added support to specify the initial size of a "LRUMap". Thanks to Philippe Mouawad. * [COLLECTIONS-557]: Added support to specify the initial size of a "LRUMap". Thanks to Philippe Mouawad.
o [COLLECTIONS-565]: Added decorators for "NavigableSet" interface. * [COLLECTIONS-565]: Added decorators for "NavigableSet" interface.
o [COLLECTIONS-464] * [COLLECTIONS-464]
+COLLECTIONS-442]: Added new class "FluentIterable" to support a fluent API for manipulating +COLLECTIONS-442]: Added new class "FluentIterable" to support a fluent API for manipulating
Iterable instances. Additionally various supporting methods have been Iterable instances. Additionally various supporting methods have been
added to "IterableUtils" and "IteratorUtils". added to "IterableUtils" and "IteratorUtils".
o [COLLECTIONS-464]: Added new "ZippingIterator" and factory methods "IteratorUtils#zippingIterator(...)". * [COLLECTIONS-464]: Added new "ZippingIterator" and factory methods "IteratorUtils#zippingIterator(...)".
o [COLLECTIONS-464]: Added new decorator "SkippingIterator" and factory methods "IteratorUtils#skippingIterator(...)". * [COLLECTIONS-464]: Added new decorator "SkippingIterator" and factory methods "IteratorUtils#skippingIterator(...)".
o [COLLECTIONS-556]: Added method "SetUtils#newIdentityHashSet()" which returns a new identity HashSet * [COLLECTIONS-556]: Added method "SetUtils#newIdentityHashSet()" which returns a new identity HashSet
using reference-equality instead of object-equality. using reference-equality instead of object-equality.
o [COLLECTIONS-395]: Added method "LRUMap#get(Object, boolean)" that allows to query the map * [COLLECTIONS-395]: Added method "LRUMap#get(Object, boolean)" that allows to query the map
without affecting the least recently used order. Thanks to David Hawthorne. without affecting the least recently used order. Thanks to David Hawthorne.
o [COLLECTIONS-427]: Added "toString(...)" methods to newly created "IterableUtils" and existing "IteratorUtils" * [COLLECTIONS-427]: Added "toString(...)" methods to newly created "IterableUtils" and existing "IteratorUtils"
to get a string representation of an Iterable/Iterator instance similar to "Arrays#toString(...)". to get a string representation of an Iterable/Iterator instance similar to "Arrays#toString(...)".
Thanks to Gonçalo Marques. Thanks to Gonçalo Marques.
o [COLLECTIONS-539]: Changed scope of "CircularFifoQueue#isAtFullCapacity()" to public. Thanks to Guram Savinov. * [COLLECTIONS-539]: Changed scope of "CircularFifoQueue#isAtFullCapacity()" to public. Thanks to Guram Savinov.
o [COLLECTIONS-511]: Added new methods "IterableUtils#partition(...)" to partition an input collection * [COLLECTIONS-511]: Added new methods "IterableUtils#partition(...)" to partition an input collection
into separate output collections based on evaluation of one or more predicates. into separate output collections based on evaluation of one or more predicates.
Thanks to Nathan Blomquist, Brent Worden. Thanks to Nathan Blomquist, Brent Worden.
o [COLLECTIONS-529]: Added methods "removeAll(...)" and "retainAll(...)" to "CollectionUtils" that perform * [COLLECTIONS-529]: Added methods "removeAll(...)" and "retainAll(...)" to "CollectionUtils" that perform
equality checks using the provided "Equator" object instead of "Object#equals()". equality checks using the provided "Equator" object instead of "Object#equals()".
Thanks to Alexander Muthmann, Dipanjan Laha. Thanks to Alexander Muthmann, Dipanjan Laha.
o [COLLECTIONS-503]: Added new transformer "IfTransformer" and factory methods "TransformerUtils#ifTransformer(...)" * [COLLECTIONS-503]: Added new transformer "IfTransformer" and factory methods "TransformerUtils#ifTransformer(...)"
which replace "TransformerUtils#switchTransformer(Predicate, Transformer, Transformer)". which replace "TransformerUtils#switchTransformer(Predicate, Transformer, Transformer)".
Thanks to Josh Cain. Thanks to Josh Cain.
o [COLLECTIONS-471]: Added new decorator "BoundedIterator" and factory methods "IteratorUtils#boundedIterator(...)". * [COLLECTIONS-471]: Added new decorator "BoundedIterator" and factory methods "IteratorUtils#boundedIterator(...)".
Thanks to Radford Tam. Thanks to Radford Tam.
Fixed Bugs Fixed Bugs
---------- ----------
o [COLLECTIONS-580]: Added validation when de-serializing a "MultiValueMap#ReflectionFactory": * [COLLECTIONS-580]: Added validation when de-serializing a "MultiValueMap#ReflectionFactory":
only Collection classes are allowed, otherwise an UnsupportedOperationException only Collection classes are allowed, otherwise an UnsupportedOperationException
will be thrown during de-serialization. will be thrown during de-serialization.
o [COLLECTIONS-576]: Subclasses of MultiKey did not re-calculate their hashcode after de-serialization. * [COLLECTIONS-576]: Subclasses of MultiKey did not re-calculate their hashcode after de-serialization.
Thanks to Stephan Roch. Thanks to Stephan Roch.
o [COLLECTIONS-566]: "IteratorUtils#collate(...)" methods did not use natural ordering when a * [COLLECTIONS-566]: "IteratorUtils#collate(...)" methods did not use natural ordering when a
null comparator was provided. null comparator was provided.
o [COLLECTIONS-558]: Changed return type of "ListOrderedSet#remove(int)" from Object to the generic * [COLLECTIONS-558]: Changed return type of "ListOrderedSet#remove(int)" from Object to the generic
type parameter. Thanks to Felix Rabe. type parameter. Thanks to Felix Rabe.
o [COLLECTIONS-555]: Added clarification to javadoc of "TreeBag#add(Object)" wrt null arguments. * [COLLECTIONS-555]: Added clarification to javadoc of "TreeBag#add(Object)" wrt null arguments.
Thanks to M Kim. Thanks to M Kim.
o [COLLECTIONS-427]: Reverted performance improvement for "SetUniqueList#retainAll(Collection)" * [COLLECTIONS-427]: Reverted performance improvement for "SetUniqueList#retainAll(Collection)"
introduced in 4.0. Added clarifying javadoc wrt runtime complexity instead. introduced in 4.0. Added clarifying javadoc wrt runtime complexity instead.
o [COLLECTIONS-426]: Reverted performance improvement for "ListOrderedSet#retainAll(Collection)" * [COLLECTIONS-426]: Reverted performance improvement for "ListOrderedSet#retainAll(Collection)"
introduced in 4.0. Added clarifying javadoc wrt runtime complexity instead. introduced in 4.0. Added clarifying javadoc wrt runtime complexity instead.
o [COLLECTIONS-530]: Added a Builder for "PredicatedCollection". Elements added to the builder * [COLLECTIONS-530]: Added a Builder for "PredicatedCollection". Elements added to the builder
that fail the predicate will not throw an IllegalArgumentException. The builder that fail the predicate will not throw an IllegalArgumentException. The builder
supports creating predicated lists, bags, sets and queues. Thanks to Erik. supports creating predicated lists, bags, sets and queues. Thanks to Erik.
o [COLLECTIONS-545]: Documented runtime complexity of "CollectionUtils#removeAll(Collection, Collection). * [COLLECTIONS-545]: Documented runtime complexity of "CollectionUtils#removeAll(Collection, Collection).
Thanks to Oswaldo Olivo. Thanks to Oswaldo Olivo.
o [COLLECTIONS-543]: "AbstractCollectionDecorator" doesn't forward equals and hashCode anymore. * [COLLECTIONS-543]: "AbstractCollectionDecorator" doesn't forward equals and hashCode anymore.
o [COLLECTIONS-544]: Documented runtime complexity of "CollectionUtils#retainAll(Collection, Collection). * [COLLECTIONS-544]: Documented runtime complexity of "CollectionUtils#retainAll(Collection, Collection).
Thanks to Oswaldo Olivo. Thanks to Oswaldo Olivo.
o [COLLECTIONS-542]: "AbstractHashedMap" still inherits from "AbstractMap", contrary to what * [COLLECTIONS-542]: "AbstractHashedMap" still inherits from "AbstractMap", contrary to what
the class javadoc stated. The inheritance will now be removed in v5.0. the class javadoc stated. The inheritance will now be removed in v5.0.
o [COLLECTIONS-525]: The map returned by "PatriciaTrie#prefixMap()" did not contain all keys * [COLLECTIONS-525]: The map returned by "PatriciaTrie#prefixMap()" did not contain all keys
that are prefixed by the given search key in some rare cases. Thanks to Zigler Zhang. that are prefixed by the given search key in some rare cases. Thanks to Zigler Zhang.
o [COLLECTIONS-537]: Harmonized signature of factory methods for functor-related classes which take * [COLLECTIONS-537]: Harmonized signature of factory methods for functor-related classes which take
a collection as input with their array counterparts. Thanks to Frank Jakop. a collection as input with their array counterparts. Thanks to Frank Jakop.
o [COLLECTIONS-540]: Added overloaded method "CollectionUtils#get(Enumeration, int)" and simplified * [COLLECTIONS-540]: Added overloaded method "CollectionUtils#get(Enumeration, int)" and simplified
code for "CollectionUtils#get(Object, int)". Thanks to Daniel Stewart, Issam El Atif. code for "CollectionUtils#get(Object, int)". Thanks to Daniel Stewart, Issam El Atif.
o [COLLECTIONS-536]: Improved check for null input in "MapUtils#putAll(Map, Object[])". Thanks to Tagir Valeev. * [COLLECTIONS-536]: Improved check for null input in "MapUtils#putAll(Map, Object[])". Thanks to Tagir Valeev.
o [COLLECTIONS-534]: Added clarifying javadoc wrt runtime complexity of "CollectionBag#retainAll". * [COLLECTIONS-534]: Added clarifying javadoc wrt runtime complexity of "CollectionBag#retainAll".
Thanks to Oswaldo Olivo. Thanks to Oswaldo Olivo.
o [COLLECTIONS-531]: Use correct type bounds in * [COLLECTIONS-531]: Use correct type bounds in
"CollectionUtils#isEqualCollection(Collection, Collection, Equator)" to "CollectionUtils#isEqualCollection(Collection, Collection, Equator)" to
prevent a "ClassCastException" at runtime for invalid inputs. Thanks to Dipanjan Laha. prevent a "ClassCastException" at runtime for invalid inputs. Thanks to Dipanjan Laha.
o [COLLECTIONS-523]: Removed unneeded private method in "PassiveExpiringMap". Thanks to Thiago Andrade. * [COLLECTIONS-523]: Removed unneeded private method in "PassiveExpiringMap". Thanks to Thiago Andrade.
o [COLLECTIONS-516]: Added clarification to the javadoc of "MapUtils#toProperties(Map)" in case * [COLLECTIONS-516]: Added clarification to the javadoc of "MapUtils#toProperties(Map)" in case
of null keys/values. Thanks to Cyrille Artho. of null keys/values. Thanks to Cyrille Artho.
o [COLLECTIONS-524]: "ListOrderedSet#listOrderedSet(List)" did not remove duplicates from the * [COLLECTIONS-524]: "ListOrderedSet#listOrderedSet(List)" did not remove duplicates from the
input list as advertised in the javadoc. Thanks to J Goodfellow. input list as advertised in the javadoc. Thanks to J Goodfellow.
o [COLLECTIONS-521]: "MultiKeyMap" was throwing a "NullPointerException" for various operations * [COLLECTIONS-521]: "MultiKeyMap" was throwing a "NullPointerException" for various operations
if two key arguments have been used and the second was "null". Thanks to Maxime Nay. if two key arguments have been used and the second was "null". Thanks to Maxime Nay.
o [COLLECTIONS-522]: Updated code example for "PredicatedList". Thanks to Erik. * [COLLECTIONS-522]: Updated code example for "PredicatedList". Thanks to Erik.
o [COLLECTIONS-512]: "TransformingComparator" and "FixedOrderComparator" did not comply with * [COLLECTIONS-512]: "TransformingComparator" and "FixedOrderComparator" did not comply with
the contract of "Object#equals". Thanks to Cyrille Artho. the contract of "Object#equals". Thanks to Cyrille Artho.
o [COLLECTIONS-510]: Fix compilation errors when using source level 1.8 and a recent java 8 compiler. * [COLLECTIONS-510]: Fix compilation errors when using source level 1.8 and a recent java 8 compiler.
Thanks to Hollis Waite. Thanks to Hollis Waite.
o [COLLECTIONS-509]: Clarified javadoc of "CollectionBag" wrt changes from the original Bag interface. * [COLLECTIONS-509]: Clarified javadoc of "CollectionBag" wrt changes from the original Bag interface.
o [COLLECTIONS-507]: Removed wrong type bounds for "ComparatorUtils#chainedComparator(...)". Thanks to Gerson. * [COLLECTIONS-507]: Removed wrong type bounds for "ComparatorUtils#chainedComparator(...)". Thanks to Gerson.
o [COLLECTIONS-506]: Added javadoc clarification to class "CollectionUtils" that input objects which * [COLLECTIONS-506]: Added javadoc clarification to class "CollectionUtils" that input objects which
override "Object#equals(Object)" must also maintain the general contract of override "Object#equals(Object)" must also maintain the general contract of
"Object#hashCode()" as various utility methods take advantage of sets/maps/bags. "Object#hashCode()" as various utility methods take advantage of sets/maps/bags.
Thanks to Anthony Communier. Thanks to Anthony Communier.
@ -275,14 +451,13 @@ patches, or suggestions for improvement, see the Apache Commons Collections webs
https://commons.apache.org/proper/commons-collections/ https://commons.apache.org/proper/commons-collections/
=============================================================================== -----------------------------------------------------------------------------
Apache Commons Collections Apache Commons Collections 3.2.2 RELEASE NOTES
Version 3.2.2 ----------------------------------------------
RELEASE NOTES
Introduction
INTRODUCTION: ------------
Commons collections is a project to develop and maintain collection classes Commons collections is a project to develop and maintain collection classes
based on and inspired by the JDK collection framework. based on and inspired by the JDK collection framework.
@ -300,10 +475,10 @@ All users are strongly encouraged to update to this release.
Changes in this version include: Changes in this version include:
CHANGES Changes
======= -------
o COLLECTIONS-580: Serialization support for unsafe classes in the functor package is * COLLECTIONS-580: Serialization support for unsafe classes in the functor package is
disabled by default as this can be exploited for remote code execution disabled by default as this can be exploited for remote code execution
attacks. To re-enable the feature the system property attacks. To re-enable the feature the system property
"org.apache.commons.collections.enableUnsafeSerialization" needs to be "org.apache.commons.collections.enableUnsafeSerialization" needs to be
@ -312,35 +487,35 @@ o COLLECTIONS-580: Serialization support for unsafe classes in the functor pack
InstantiateFactory, InstantiateTransformer, InvokerTransformer, InstantiateFactory, InstantiateTransformer, InvokerTransformer,
PrototypeCloneFactory, PrototypeSerializationFactory, WhileClosure. PrototypeCloneFactory, PrototypeSerializationFactory, WhileClosure.
BUGFIXES Fixed Bugs
======== ----------
o COLLECTIONS-538: "ExtendedProperties" will now use a privileged action to access the * COLLECTIONS-538: "ExtendedProperties" will now use a privileged action to access the
"file.separator" system property. In case the class does not have "file.separator" system property. In case the class does not have
permission to read system properties, the "File#separator" field will permission to read system properties, the "File#separator" field will
be used instead. Thanks to Trejkaz. be used instead. Thanks to Trejkaz.
o COLLECTIONS-447: Tree traversal with a TreeListIterator will not be affected anymore by * COLLECTIONS-447: Tree traversal with a TreeListIterator will not be affected anymore by
the removal of an element directly after a call to previous(). Thanks to Jeffrey Barnes. the removal of an element directly after a call to previous(). Thanks to Jeffrey Barnes.
o COLLECTIONS-444: SetUniqueList.set(int, Object) now works correctly if the object to be inserted * COLLECTIONS-444: SetUniqueList.set(int, Object) now works correctly if the object to be inserted
is already placed at the given position. Thanks to Thomas Vahrst, John Vasileff. is already placed at the given position. Thanks to Thomas Vahrst, John Vasileff.
o COLLECTIONS-350: Removed debug output in "MapUtils#getNumber(Map)". Thanks to Michael Akerman. * COLLECTIONS-350: Removed debug output in "MapUtils#getNumber(Map)". Thanks to Michael Akerman.
o COLLECTIONS-335: Fixed cache assignment for "TreeBidiMap#entrySet". Thanks to sebb. * COLLECTIONS-335: Fixed cache assignment for "TreeBidiMap#entrySet". Thanks to sebb.
o COLLECTIONS-334: Synchronized access to lock in "StaticBucketMap#size()". Thanks to sebb. * COLLECTIONS-334: Synchronized access to lock in "StaticBucketMap#size()". Thanks to sebb.
o COLLECTIONS-307: "SetUniqueList#subList()#contains(Object)" will now correctly check the subList * COLLECTIONS-307: "SetUniqueList#subList()#contains(Object)" will now correctly check the subList
rather than the parent list. Thanks to Christian Semrau. rather than the parent list. Thanks to Christian Semrau.
o COLLECTIONS-304: "SetUniqueList#set(int, Object)" will now correctly enforce the uniqueness constraint. * COLLECTIONS-304: "SetUniqueList#set(int, Object)" will now correctly enforce the uniqueness constraint.
Thanks to Rafa? Figas,Bjorn Townsend. Thanks to Rafa? Figas,Bjorn Townsend.
o COLLECTIONS-294: "CaseInsensitiveMap" will now convert input strings to lower-case in a * COLLECTIONS-294: "CaseInsensitiveMap" will now convert input strings to lower-case in a
locale-independent manner. Thanks to Benjamin Bentmann. locale-independent manner. Thanks to Benjamin Bentmann.
o COLLECTIONS-266: "MultiKey" will now be correctly serialized/de-serialized. Thanks to Joerg Schaible. * COLLECTIONS-266: "MultiKey" will now be correctly serialized/de-serialized. Thanks to Joerg Schaible.
o COLLECTIONS-261: "Flat3Map#remove(Object)" will now return the correct value mapped to the removed key * COLLECTIONS-261: "Flat3Map#remove(Object)" will now return the correct value mapped to the removed key
if the size of the map is less or equal 3. Thanks to ori. if the size of the map is less or equal 3. Thanks to ori.
o COLLECTIONS-249: "SetUniqueList.addAll(int, Collection)" now correctly add the collection at the * COLLECTIONS-249: "SetUniqueList.addAll(int, Collection)" now correctly add the collection at the
provided index. Thanks to Joe Kelly. provided index. Thanks to Joe Kelly.
o COLLECTIONS-228: "MultiValueMap#put(Object, Object)" and "MultiValueMap#putAll(Object, Collection)" * COLLECTIONS-228: "MultiValueMap#put(Object, Object)" and "MultiValueMap#putAll(Object, Collection)"
now correctly return if the map has changed by this operation. now correctly return if the map has changed by this operation.
o COLLECTIONS-219: "CollectionUtils#removeAll" wrongly called "ListUtils#retainAll". Thanks to Tom Leccese. * COLLECTIONS-219: "CollectionUtils#removeAll" wrongly called "ListUtils#retainAll". Thanks to Tom Leccese.
o COLLECTIONS-217: Calling "setValue(Object)" on any Entry returned by a "Flat3Map" will now * COLLECTIONS-217: Calling "setValue(Object)" on any Entry returned by a "Flat3Map" will now
correctly set the value for the current entry. Thanks to Matt Bishop. correctly set the value for the current entry. Thanks to Matt Bishop.
@ -348,3 +523,5 @@ For complete information on Apache Commons Collections, including instructions o
patches, or suggestions for improvement, see the Apache Commons Collections website: patches, or suggestions for improvement, see the Apache Commons Collections website:
https://commons.apache.org/collections/ https://commons.apache.org/collections/
-----------------------------------------------------------------------------

View File

@ -124,7 +124,7 @@
<!-- Current 4.x release series --> <!-- Current 4.x release series -->
<commons.release.version>4.5.0-M1</commons.release.version> <commons.release.version>4.5.0-M1</commons.release.version>
<commons.release.version>4.5.0</commons.release.version> <commons.release.next>4.5.0</commons.release.next>
<commons.release.desc>(Requires Java 8 or above)</commons.release.desc> <commons.release.desc>(Requires Java 8 or above)</commons.release.desc>
<!-- Previous 4.2 release on Java 7 --> <!-- Previous 4.2 release on Java 7 -->

View File

@ -22,7 +22,7 @@
<title>Apache Commons Collections Release Notes</title> <title>Apache Commons Collections Release Notes</title>
</properties> </properties>
<body> <body>
<release version="4.5.0-M1" date="YYYY-MM-DD" description="Maintenance release."> <release version="4.5.0-M1" date="2024-03-31" description="This milestone release requires Java 8 and adds the package `org.apache.commons.collections4.bloomfilter` for review.">
<!-- FIX --> <!-- FIX -->
<action issue="COLLECTIONS-780" dev="kinow" type="fix" due-to="Arturo Bernal"> <action issue="COLLECTIONS-780" dev="kinow" type="fix" due-to="Arturo Bernal">
Use assertThrows V2. Use assertThrows V2.

View File

@ -14,7 +14,8 @@
## KIND, either express or implied. See the License for the ## KIND, either express or implied. See the License for the
## specific language governing permissions and limitations ## specific language governing permissions and limitations
## under the License. ## under the License.
${project.name} ${version} RELEASE NOTES ${project.name} ${version} RELEASE NOTES
----------------------------------------
$introduction.replaceAll("(?<!\015)\012", " $introduction.replaceAll("(?<!\015)\012", "
") ")
@ -32,10 +33,13 @@ $release.description.replaceAll(" ", "
#if ($release.getActions().size() == 0) #if ($release.getActions().size() == 0)
No changes defined in this version. No changes defined in this version.
#else #else
Changes in this version include: Changes in this version
-----------------------
#if ($release.getActions('add').size() !=0) #if ($release.getActions('add').size() !=0)
New features: New features
------------
#foreach($actionItem in $release.getActions('add')) #foreach($actionItem in $release.getActions('add'))
## Use replaceAll to fix up LF-only line ends on Windows. ## Use replaceAll to fix up LF-only line ends on Windows.
#set($action=$actionItem.getAction().replaceAll("\n"," #set($action=$actionItem.getAction().replaceAll("\n","
@ -51,7 +55,7 @@ New features:
#else #else
#set($dueto="") #set($dueto="")
#end #end
o#if($!issue != "") $issue: #end ${action} #if($!dueto != "")Thanks to $dueto. #end *#if($!issue != "") $issue: #end ${action} #if($!dueto != "")Thanks to $dueto. #end
#set($issue="") #set($issue="")
#set($dueto="") #set($dueto="")
@ -59,7 +63,9 @@ o#if($!issue != "") $issue: #end ${action} #if($!dueto != "")Thanks to $dueto. #
#end #end
#if ($release.getActions('fix').size() !=0) #if ($release.getActions('fix').size() !=0)
Fixed Bugs: Fixed Bugs
----------
#foreach($actionItem in $release.getActions('fix')) #foreach($actionItem in $release.getActions('fix'))
## Use replaceAll to fix up LF-only line ends on Windows. ## Use replaceAll to fix up LF-only line ends on Windows.
#set($action=$actionItem.getAction().replaceAll("\n"," #set($action=$actionItem.getAction().replaceAll("\n","
@ -75,7 +81,7 @@ Fixed Bugs:
#else #else
#set($dueto="") #set($dueto="")
#end #end
o#if($!issue != "") $issue: #end ${action} #if($!dueto != "")Thanks to $dueto. #end *#if($!issue != "") $issue: #end ${action} #if($!dueto != "")Thanks to $dueto. #end
#set($issue="") #set($issue="")
#set($dueto="") #set($dueto="")
@ -83,7 +89,9 @@ o#if($!issue != "") $issue: #end ${action} #if($!dueto != "")Thanks to $dueto. #
#end #end
#if ($release.getActions('update').size() !=0) #if ($release.getActions('update').size() !=0)
Changes: Changes
-------
#foreach($actionItem in $release.getActions('update')) #foreach($actionItem in $release.getActions('update'))
## Use replaceAll to fix up LF-only line ends on Windows. ## Use replaceAll to fix up LF-only line ends on Windows.
#set($action=$actionItem.getAction().replaceAll("\n"," #set($action=$actionItem.getAction().replaceAll("\n","
@ -99,7 +107,7 @@ Changes:
#else #else
#set($dueto="") #set($dueto="")
#end #end
o#if($!issue != "") $issue: #end ${action} #if($!dueto != "")Thanks to $dueto. #end *#if($!issue != "") $issue: #end ${action} #if($!dueto != "")Thanks to $dueto. #end
#set($issue="") #set($issue="")
#set($dueto="") #set($dueto="")
@ -107,7 +115,9 @@ o#if($!issue != "") $issue: #end ${action} #if($!dueto != "")Thanks to $dueto. #
#end #end
#if ($release.getActions('remove').size() !=0) #if ($release.getActions('remove').size() !=0)
Removed: Removed
-------
#foreach($actionItem in $release.getActions('remove')) #foreach($actionItem in $release.getActions('remove'))
## Use replaceAll to fix up LF-only line ends on Windows. ## Use replaceAll to fix up LF-only line ends on Windows.
#set($action=$actionItem.getAction().replaceAll("\n"," #set($action=$actionItem.getAction().replaceAll("\n","
@ -123,7 +133,7 @@ Removed:
#else #else
#set($dueto="") #set($dueto="")
#end #end
o#if($!issue != "") $issue. #end ${action} #if($!dueto != "")Thanks to $dueto. #end *#if($!issue != "") $issue. #end ${action} #if($!dueto != "")Thanks to $dueto. #end
#set($issue="") #set($issue="")
#set($dueto="") #set($dueto="")
@ -138,3 +148,6 @@ patches, or suggestions for improvement, see the ${project.name} website:
${project.url} ${project.url}
Download page: ${project.url}download_collections.cgi Download page: ${project.url}download_collections.cgi
-----------------------------------------------------------------------------

View File

@ -66,7 +66,7 @@ limitations under the License.
<subsection name="Using a Mirror"> <subsection name="Using a Mirror">
<p> <p>
We recommend you use a mirror to download our release We recommend you use a mirror to download our release
builds, but you <strong>must</strong> <a href="http://www.apache.org/info/verification.html">verify the integrity</a> of builds, but you <strong>must</strong> <a href="https://www.apache.org/info/verification.html">verify the integrity</a> of
the downloaded files using signatures downloaded from our main the downloaded files using signatures downloaded from our main
distribution directories. Recent releases (48 hours) may not yet distribution directories. Recent releases (48 hours) may not yet
be available from all the mirrors. be available from all the mirrors.
@ -107,54 +107,54 @@ limitations under the License.
failing that using the <code>SHA512</code> hash (<code>*.sha512</code> checksum files). failing that using the <code>SHA512</code> hash (<code>*.sha512</code> checksum files).
</p> </p>
<p> <p>
The <a href="https://www.apache.org/dist/commons/KEYS">KEYS</a> The <a href="https://downloads.apache.org/commons/KEYS">KEYS</a>
file contains the public PGP keys used by Apache Commons developers file contains the public PGP keys used by Apache Commons developers
to sign releases. to sign releases.
</p> </p>
</subsection> </subsection>
</section> </section>
<section name="Apache Commons Collections 4.4 (Requires Java 8 or above)"> <section name="Apache Commons Collections 4.5.0-M1 (Requires Java 8 or above)">
<subsection name="Binaries"> <subsection name="Binaries">
<table> <table>
<tr> <tr>
<td><a href="[preferred]/commons/collections/binaries/commons-collections4-4.4-bin.tar.gz">commons-collections4-4.4-bin.tar.gz</a></td> <td><a href="[preferred]/commons/collections/binaries/commons-collections4-4.5.0-M1-bin.tar.gz">commons-collections4-4.5.0-M1-bin.tar.gz</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/binaries/commons-collections4-4.4-bin.tar.gz.sha512">sha512</a></td> <td><a href="https://downloads.apache.org/commons/collections/binaries/commons-collections4-4.5.0-M1-bin.tar.gz.sha512">sha512</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/binaries/commons-collections4-4.4-bin.tar.gz.asc">pgp</a></td> <td><a href="https://downloads.apache.org/commons/collections/binaries/commons-collections4-4.5.0-M1-bin.tar.gz.asc">pgp</a></td>
</tr> </tr>
<tr> <tr>
<td><a href="[preferred]/commons/collections/binaries/commons-collections4-4.4-bin.zip">commons-collections4-4.4-bin.zip</a></td> <td><a href="[preferred]/commons/collections/binaries/commons-collections4-4.5.0-M1-bin.zip">commons-collections4-4.5.0-M1-bin.zip</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/binaries/commons-collections4-4.4-bin.zip.sha512">sha512</a></td> <td><a href="https://downloads.apache.org/commons/collections/binaries/commons-collections4-4.5.0-M1-bin.zip.sha512">sha512</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/binaries/commons-collections4-4.4-bin.zip.asc">pgp</a></td> <td><a href="https://downloads.apache.org/commons/collections/binaries/commons-collections4-4.5.0-M1-bin.zip.asc">pgp</a></td>
</tr> </tr>
</table> </table>
</subsection> </subsection>
<subsection name="Source"> <subsection name="Source">
<table> <table>
<tr> <tr>
<td><a href="[preferred]/commons/collections/source/commons-collections4-4.4-src.tar.gz">commons-collections4-4.4-src.tar.gz</a></td> <td><a href="[preferred]/commons/collections/source/commons-collections4-4.5.0-M1-src.tar.gz">commons-collections4-4.5.0-M1-src.tar.gz</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/source/commons-collections4-4.4-src.tar.gz.sha512">sha512</a></td> <td><a href="https://downloads.apache.org/commons/collections/source/commons-collections4-4.5.0-M1-src.tar.gz.sha512">sha512</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/source/commons-collections4-4.4-src.tar.gz.asc">pgp</a></td> <td><a href="https://downloads.apache.org/commons/collections/source/commons-collections4-4.5.0-M1-src.tar.gz.asc">pgp</a></td>
</tr> </tr>
<tr> <tr>
<td><a href="[preferred]/commons/collections/source/commons-collections4-4.4-src.zip">commons-collections4-4.4-src.zip</a></td> <td><a href="[preferred]/commons/collections/source/commons-collections4-4.5.0-M1-src.zip">commons-collections4-4.5.0-M1-src.zip</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/source/commons-collections4-4.4-src.zip.sha512">sha512</a></td> <td><a href="https://downloads.apache.org/commons/collections/source/commons-collections4-4.5.0-M1-src.zip.sha512">sha512</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/source/commons-collections4-4.4-src.zip.asc">pgp</a></td> <td><a href="https://downloads.apache.org/commons/collections/source/commons-collections4-4.5.0-M1-src.zip.asc">pgp</a></td>
</tr> </tr>
</table> </table>
</subsection> </subsection>
</section> </section>
<section name="Apache Commons Collections 4.2 (Requires Java 7 or later)"> <section name="Apache Commons Collections 4.2 (Requires Java 7 or above)">
<subsection name="Binaries"> <subsection name="Binaries">
<table> <table>
<tr> <tr>
<td><a href="[preferred]/commons/collections/binaries/commons-collections4-4.2-bin.tar.gz">commons-collections4-4.2-bin.tar.gz</a></td> <td><a href="[preferred]/commons/collections/binaries/commons-collections4-4.2-bin.tar.gz">commons-collections4-4.2-bin.tar.gz</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/binaries/commons-collections4-4.2-bin.tar.gz.sha512">sha512</a></td> <td><a href="https://downloads.apache.org/commons/collections/binaries/commons-collections4-4.2-bin.tar.gz.sha512">sha512</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/binaries/commons-collections4-4.2-bin.tar.gz.asc">pgp</a></td> <td><a href="https://downloads.apache.org/commons/collections/binaries/commons-collections4-4.2-bin.tar.gz.asc">pgp</a></td>
</tr> </tr>
<tr> <tr>
<td><a href="[preferred]/commons/collections/binaries/commons-collections4-4.2-bin.zip">commons-collections4-4.2-bin.zip</a></td> <td><a href="[preferred]/commons/collections/binaries/commons-collections4-4.2-bin.zip">commons-collections4-4.2-bin.zip</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/binaries/commons-collections4-4.2-bin.zip.sha512">sha512</a></td> <td><a href="https://downloads.apache.org/commons/collections/binaries/commons-collections4-4.2-bin.zip.sha512">sha512</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/binaries/commons-collections4-4.2-bin.zip.asc">pgp</a></td> <td><a href="https://downloads.apache.org/commons/collections/binaries/commons-collections4-4.2-bin.zip.asc">pgp</a></td>
</tr> </tr>
</table> </table>
</subsection> </subsection>
@ -162,29 +162,29 @@ limitations under the License.
<table> <table>
<tr> <tr>
<td><a href="[preferred]/commons/collections/source/commons-collections4-4.2-src.tar.gz">commons-collections4-4.2-src.tar.gz</a></td> <td><a href="[preferred]/commons/collections/source/commons-collections4-4.2-src.tar.gz">commons-collections4-4.2-src.tar.gz</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/source/commons-collections4-4.2-src.tar.gz.sha512">sha512</a></td> <td><a href="https://downloads.apache.org/commons/collections/source/commons-collections4-4.2-src.tar.gz.sha512">sha512</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/source/commons-collections4-4.2-src.tar.gz.asc">pgp</a></td> <td><a href="https://downloads.apache.org/commons/collections/source/commons-collections4-4.2-src.tar.gz.asc">pgp</a></td>
</tr> </tr>
<tr> <tr>
<td><a href="[preferred]/commons/collections/source/commons-collections4-4.2-src.zip">commons-collections4-4.2-src.zip</a></td> <td><a href="[preferred]/commons/collections/source/commons-collections4-4.2-src.zip">commons-collections4-4.2-src.zip</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/source/commons-collections4-4.2-src.zip.sha512">sha512</a></td> <td><a href="https://downloads.apache.org/commons/collections/source/commons-collections4-4.2-src.zip.sha512">sha512</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/source/commons-collections4-4.2-src.zip.asc">pgp</a></td> <td><a href="https://downloads.apache.org/commons/collections/source/commons-collections4-4.2-src.zip.asc">pgp</a></td>
</tr> </tr>
</table> </table>
</subsection> </subsection>
</section> </section>
<section name="Apache Commons Collections 4.1 (Requires Java 6 or later)"> <section name="Apache Commons Collections 4.1 (Requires Java 6 or above)">
<subsection name="Binaries"> <subsection name="Binaries">
<table> <table>
<tr> <tr>
<td><a href="[preferred]/commons/collections/binaries/commons-collections4-4.1-bin.tar.gz">commons-collections4-4.1-bin.tar.gz</a></td> <td><a href="[preferred]/commons/collections/binaries/commons-collections4-4.1-bin.tar.gz">commons-collections4-4.1-bin.tar.gz</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/binaries/commons-collections4-4.1-bin.tar.gz.sha512">sha512</a></td> <td><a href="https://downloads.apache.org/commons/collections/binaries/commons-collections4-4.1-bin.tar.gz.sha512">sha512</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/binaries/commons-collections4-4.1-bin.tar.gz.asc">pgp</a></td> <td><a href="https://downloads.apache.org/commons/collections/binaries/commons-collections4-4.1-bin.tar.gz.asc">pgp</a></td>
</tr> </tr>
<tr> <tr>
<td><a href="[preferred]/commons/collections/binaries/commons-collections4-4.1-bin.zip">commons-collections4-4.1-bin.zip</a></td> <td><a href="[preferred]/commons/collections/binaries/commons-collections4-4.1-bin.zip">commons-collections4-4.1-bin.zip</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/binaries/commons-collections4-4.1-bin.zip.sha512">sha512</a></td> <td><a href="https://downloads.apache.org/commons/collections/binaries/commons-collections4-4.1-bin.zip.sha512">sha512</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/binaries/commons-collections4-4.1-bin.zip.asc">pgp</a></td> <td><a href="https://downloads.apache.org/commons/collections/binaries/commons-collections4-4.1-bin.zip.asc">pgp</a></td>
</tr> </tr>
</table> </table>
</subsection> </subsection>
@ -192,29 +192,29 @@ limitations under the License.
<table> <table>
<tr> <tr>
<td><a href="[preferred]/commons/collections/source/commons-collections4-4.1-src.tar.gz">commons-collections4-4.1-src.tar.gz</a></td> <td><a href="[preferred]/commons/collections/source/commons-collections4-4.1-src.tar.gz">commons-collections4-4.1-src.tar.gz</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/source/commons-collections4-4.1-src.tar.gz.sha512">sha512</a></td> <td><a href="https://downloads.apache.org/commons/collections/source/commons-collections4-4.1-src.tar.gz.sha512">sha512</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/source/commons-collections4-4.1-src.tar.gz.asc">pgp</a></td> <td><a href="https://downloads.apache.org/commons/collections/source/commons-collections4-4.1-src.tar.gz.asc">pgp</a></td>
</tr> </tr>
<tr> <tr>
<td><a href="[preferred]/commons/collections/source/commons-collections4-4.1-src.zip">commons-collections4-4.1-src.zip</a></td> <td><a href="[preferred]/commons/collections/source/commons-collections4-4.1-src.zip">commons-collections4-4.1-src.zip</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/source/commons-collections4-4.1-src.zip.sha512">sha512</a></td> <td><a href="https://downloads.apache.org/commons/collections/source/commons-collections4-4.1-src.zip.sha512">sha512</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/source/commons-collections4-4.1-src.zip.asc">pgp</a></td> <td><a href="https://downloads.apache.org/commons/collections/source/commons-collections4-4.1-src.zip.asc">pgp</a></td>
</tr> </tr>
</table> </table>
</subsection> </subsection>
</section> </section>
<section name="Apache Commons Collections 3.2.2 (Requires Java 1.3 or later)"> <section name="Apache Commons Collections 3.2.2 (Requires Java 1.3 or above)">
<subsection name="Binaries"> <subsection name="Binaries">
<table> <table>
<tr> <tr>
<td><a href="[preferred]/commons/collections/binaries/commons-collections-3.2.2-bin.tar.gz">commons-collections-3.2.2-bin.tar.gz</a></td> <td><a href="[preferred]/commons/collections/binaries/commons-collections-3.2.2-bin.tar.gz">commons-collections-3.2.2-bin.tar.gz</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/binaries/commons-collections-3.2.2-bin.tar.gz.sha256">sha256</a></td> <td><a href="https://downloads.apache.org/commons/collections/binaries/commons-collections-3.2.2-bin.tar.gz.sha256">sha256</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/binaries/commons-collections-3.2.2-bin.tar.gz.asc">pgp</a></td> <td><a href="https://downloads.apache.org/commons/collections/binaries/commons-collections-3.2.2-bin.tar.gz.asc">pgp</a></td>
</tr> </tr>
<tr> <tr>
<td><a href="[preferred]/commons/collections/binaries/commons-collections-3.2.2-bin.zip">commons-collections-3.2.2-bin.zip</a></td> <td><a href="[preferred]/commons/collections/binaries/commons-collections-3.2.2-bin.zip">commons-collections-3.2.2-bin.zip</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/binaries/commons-collections-3.2.2-bin.zip.sha256">sha256</a></td> <td><a href="https://downloads.apache.org/commons/collections/binaries/commons-collections-3.2.2-bin.zip.sha256">sha256</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/binaries/commons-collections-3.2.2-bin.zip.asc">pgp</a></td> <td><a href="https://downloads.apache.org/commons/collections/binaries/commons-collections-3.2.2-bin.zip.asc">pgp</a></td>
</tr> </tr>
</table> </table>
</subsection> </subsection>
@ -222,13 +222,13 @@ limitations under the License.
<table> <table>
<tr> <tr>
<td><a href="[preferred]/commons/collections/source/commons-collections-3.2.2-src.tar.gz">commons-collections-3.2.2-src.tar.gz</a></td> <td><a href="[preferred]/commons/collections/source/commons-collections-3.2.2-src.tar.gz">commons-collections-3.2.2-src.tar.gz</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/source/commons-collections-3.2.2-src.tar.gz.sha256">sha256</a></td> <td><a href="https://downloads.apache.org/commons/collections/source/commons-collections-3.2.2-src.tar.gz.sha256">sha256</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/source/commons-collections-3.2.2-src.tar.gz.asc">pgp</a></td> <td><a href="https://downloads.apache.org/commons/collections/source/commons-collections-3.2.2-src.tar.gz.asc">pgp</a></td>
</tr> </tr>
<tr> <tr>
<td><a href="[preferred]/commons/collections/source/commons-collections-3.2.2-src.zip">commons-collections-3.2.2-src.zip</a></td> <td><a href="[preferred]/commons/collections/source/commons-collections-3.2.2-src.zip">commons-collections-3.2.2-src.zip</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/source/commons-collections-3.2.2-src.zip.sha256">sha256</a></td> <td><a href="https://downloads.apache.org/commons/collections/source/commons-collections-3.2.2-src.zip.sha256">sha256</a></td>
<td><a href="https://www.apache.org/dist/commons/collections/source/commons-collections-3.2.2-src.zip.asc">pgp</a></td> <td><a href="https://downloads.apache.org/commons/collections/source/commons-collections-3.2.2-src.zip.asc">pgp</a></td>
</tr> </tr>
</table> </table>
</subsection> </subsection>

View File

@ -57,7 +57,7 @@ limitations under the License.
<p> <p>
To use JIRA you may need to <a href="https://issues.apache.org/jira/secure/Signup!default.jspa">create an account</a> To use JIRA you may need to <a href="https://issues.apache.org/jira/secure/Signup!default.jspa">create an account</a>
(if you have previously created/updated Commons issues using Bugzilla an account will have been automatically (if you have previously created/updated Commons issues using Bugzilla an account will have been automatically
created and you can use the <a href="https://issues.apache.org/jira/secure/ForgotLoginDetails.jspa">Forgot Password</a> created and you can use the <a href="https://issues.apache.org/jira/secure/ForgotPassword!default.jspa">Forgot Password</a>
page to get a new password). page to get a new password).
</p> </p>
@ -85,7 +85,7 @@ limitations under the License.
</p> </p>
<p> <p>
For more information on subversion and creating patches see the For more information on creating patches see the
<a href="https://www.apache.org/dev/contributors.html">Apache Contributors Guide</a>. <a href="https://www.apache.org/dev/contributors.html">Apache Contributors Guide</a>.
</p> </p>

View File

@ -70,8 +70,10 @@ limitations under the License.
to subscribe. to subscribe.
</p> </p>
<p> <p>
<strong>Note:</strong> please don't send patches or attachments to any of the mailing lists. <strong>Note:</strong> please don't send patches or attachments to any of the mailing lists;
most of the lists are set up to drop attachments.
Patches are best handled via the <a href="issue-tracking.html">Issue Tracking</a> system. Patches are best handled via the <a href="issue-tracking.html">Issue Tracking</a> system.
If you have a GitHub account, most components also accept PRs (pull requests).
Otherwise, please upload the file to a public server and include the URL in the mail. Otherwise, please upload the file to a public server and include the URL in the mail.
</p> </p>
</section> </section>
@ -105,10 +107,11 @@ limitations under the License.
<td><a href="mailto:user-subscribe@commons.apache.org">Subscribe</a></td> <td><a href="mailto:user-subscribe@commons.apache.org">Subscribe</a></td>
<td><a href="mailto:user-unsubscribe@commons.apache.org">Unsubscribe</a></td> <td><a href="mailto:user-unsubscribe@commons.apache.org">Unsubscribe</a></td>
<td><a href="mailto:user@commons.apache.org?subject=[collections]">Post</a></td> <td><a href="mailto:user@commons.apache.org?subject=[collections]">Post</a></td>
<td><a href="https://lists.apache.org/list.html?user@commons.apache.org">mail-archives.apache.org</a></td> <td>
<td><a href="https://markmail.org/list/org.apache.commons.users/">markmail.org</a><br /> <a href="https://lists.apache.org/list.html?user@commons.apache.org">lists.apache.org</a>
<a href="https://www.mail-archive.com/user@commons.apache.org/">www.mail-archive.com</a><br /> </td>
<a href="http://news.gmane.org/gmane.comp.jakarta.commons.devel">news.gmane.org</a> <td>
<a href="https://www.mail-archive.com/user@commons.apache.org/">www.mail-archive.com</a>
</td> </td>
</tr> </tr>
@ -123,10 +126,11 @@ limitations under the License.
<td><a href="mailto:dev-subscribe@commons.apache.org">Subscribe</a></td> <td><a href="mailto:dev-subscribe@commons.apache.org">Subscribe</a></td>
<td><a href="mailto:dev-unsubscribe@commons.apache.org">Unsubscribe</a></td> <td><a href="mailto:dev-unsubscribe@commons.apache.org">Unsubscribe</a></td>
<td><a href="mailto:dev@commons.apache.org?subject=[collections]">Post</a></td> <td><a href="mailto:dev@commons.apache.org?subject=[collections]">Post</a></td>
<td><a href="https://lists.apache.org/list.html?dev@commons.apache.org">mail-archives.apache.org</a></td> <td>
<td><a href="https://markmail.org/list/org.apache.commons.dev/">markmail.org</a><br /> <a href="https://lists.apache.org/list.html?dev@commons.apache.org">lists.apache.org</a>
<a href="https://www.mail-archive.com/dev@commons.apache.org/">www.mail-archive.com</a><br /> </td>
<a href="http://news.gmane.org/gmane.comp.jakarta.commons.devel">news.gmane.org</a> <td>
<a href="https://www.mail-archive.com/dev@commons.apache.org/">www.mail-archive.com</a>
</td> </td>
</tr> </tr>
@ -141,8 +145,10 @@ limitations under the License.
<td><a href="mailto:issues-subscribe@commons.apache.org">Subscribe</a></td> <td><a href="mailto:issues-subscribe@commons.apache.org">Subscribe</a></td>
<td><a href="mailto:issues-unsubscribe@commons.apache.org">Unsubscribe</a></td> <td><a href="mailto:issues-unsubscribe@commons.apache.org">Unsubscribe</a></td>
<td><i>read only</i></td> <td><i>read only</i></td>
<td><a href="https://lists.apache.org/list.html?issues@commons.apache.org">mail-archives.apache.org</a></td> <td>
<td><a href="https://markmail.org/list/org.apache.commons.issues/">markmail.org</a><br /> <a href="https://lists.apache.org/list.html?issues@commons.apache.org">lists.apache.org</a>
</td>
<td>
<a href="https://www.mail-archive.com/issues@commons.apache.org/">www.mail-archive.com</a> <a href="https://www.mail-archive.com/issues@commons.apache.org/">www.mail-archive.com</a>
</td> </td>
</tr> </tr>
@ -158,8 +164,10 @@ limitations under the License.
<td><a href="mailto:commits-subscribe@commons.apache.org">Subscribe</a></td> <td><a href="mailto:commits-subscribe@commons.apache.org">Subscribe</a></td>
<td><a href="mailto:commits-unsubscribe@commons.apache.org">Unsubscribe</a></td> <td><a href="mailto:commits-unsubscribe@commons.apache.org">Unsubscribe</a></td>
<td><i>read only</i></td> <td><i>read only</i></td>
<td><a href="https://lists.apache.org/list.html?commits@commons.apache.org">mail-archives.apache.org</a></td> <td>
<td><a href="https://markmail.org/list/org.apache.commons.commits/">markmail.org</a><br /> <a href="https://lists.apache.org/list.html?commits@commons.apache.org">lists.apache.org</a>
</td>
<td>
<a href="https://www.mail-archive.com/commits@commons.apache.org/">www.mail-archive.com</a> <a href="https://www.mail-archive.com/commits@commons.apache.org/">www.mail-archive.com</a>
</td> </td>
</tr> </tr>
@ -191,11 +199,11 @@ limitations under the License.
<td><a class="externalLink" href="mailto:announce-subscribe@apache.org">Subscribe</a></td> <td><a class="externalLink" href="mailto:announce-subscribe@apache.org">Subscribe</a></td>
<td><a class="externalLink" href="mailto:announce-unsubscribe@apache.org">Unsubscribe</a></td> <td><a class="externalLink" href="mailto:announce-unsubscribe@apache.org">Unsubscribe</a></td>
<td><i>read only</i></td> <td><i>read only</i></td>
<td><a class="externalLink" href="https://lists.apache.org/list.html?announce@apache.org">mail-archives.apache.org</a></td> <td>
<td><a class="externalLink" href="https://markmail.org/list/org.apache.announce/">markmail.org</a><br /> <a class="externalLink" href="https://lists.apache.org/list.html?announce@apache.org">lists.apache.org</a>
<a class="externalLink" href="http://old.nabble.com/Apache-News-and-Announce-f109.html">old.nabble.com</a><br /> </td>
<a class="externalLink" href="https://www.mail-archive.com/announce@apache.org/">www.mail-archive.com</a><br /> <td>
<a class="externalLink" href="http://news.gmane.org/gmane.comp.apache.announce">news.gmane.org</a> <a class="externalLink" href="https://www.mail-archive.com/announce@apache.org/">www.mail-archive.com</a>
</td> </td>
</tr> </tr>
</table> </table>