This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-collections.git
The following commit(s) were added to refs/heads/master by this push: new caa771abc BloomFilterExtractor.flatten() should throw an exception instead of returning null caa771abc is described below commit caa771abcd5e0e6b4278c8c606747866a1c76b05 Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Sat Oct 5 15:41:43 2024 -0400 BloomFilterExtractor.flatten() should throw an exception instead of returning null --- src/changes/changes.xml | 1 + .../collections4/bloomfilter/BloomFilterExtractor.java | 14 ++++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 06d3b2ef8..4fa56010a 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -35,6 +35,7 @@ <action type="fix" dev="ggregory" due-to="Gary Gregory">[Functional] FunctorUtils.validate(Transformer...) is now FunctorUtils.validate(Function...).</action> <action type="fix" dev="ggregory" due-to="Dávid Szigecsán. Gary Gregory">Increase test coverage for ListUtils #517.</action> <action type="fix" dev="ggregory" due-to="Dávid Szigecsán">Use the Junit (Jupiter) API #518.</action> + <action type="fix" dev="ggregory" due-to="Gary Gregory, Alex Herbert">BloomFilterExtractor.flatten() should throw an exception instead of returning null.</action> <!-- ADD --> <action type="add" dev="ggregory" due-to="Gary Gregory">LayerManager.Builder implements Supplier.</action> <action type="add" dev="ggregory" due-to="Gary Gregory, hemanth0525">Add CollectionUtils.duplicateList(Collection).</action> diff --git a/src/main/java/org/apache/commons/collections4/bloomfilter/BloomFilterExtractor.java b/src/main/java/org/apache/commons/collections4/bloomfilter/BloomFilterExtractor.java index aa11c8584..004c2e38f 100644 --- a/src/main/java/org/apache/commons/collections4/bloomfilter/BloomFilterExtractor.java +++ b/src/main/java/org/apache/commons/collections4/bloomfilter/BloomFilterExtractor.java @@ -19,6 +19,7 @@ package org.apache.commons.collections4.bloomfilter; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.concurrent.atomic.AtomicReference; import java.util.function.BiPredicate; import java.util.function.Predicate; @@ -97,17 +98,18 @@ public interface BloomFilterExtractor { * Create a standard (non-layered) Bloom filter by merging all of the layers. If * the filter is empty this method will return an empty Bloom filter. * - * @return the merged bloom filter. + * @return the merged bloom filter, never null. + * @throws NullPointerException if this call did not process any filters. */ default BloomFilter flatten() { - final BloomFilter[] bf = { null }; + final AtomicReference<BloomFilter> ref = new AtomicReference<>(); processBloomFilters(x -> { - if (bf[0] == null) { - bf[0] = new SimpleBloomFilter(x.getShape()); + if (ref.get() == null) { + ref.set(new SimpleBloomFilter(x.getShape())); } - return bf[0].merge(x); + return ref.get().merge(x); }); - return bf[0]; + return Objects.requireNonNull(ref.get(), "No filters."); } /**