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 f5337f18c LayerManager.Builder implements Supplier f5337f18c is described below commit f5337f18c9af48058912504f5f7fc68cba4e3d60 Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Sun Aug 25 22:11:50 2024 -0400 LayerManager.Builder implements Supplier --- src/changes/changes.xml | 1 + .../collections4/bloomfilter/LayerManager.java | 12 ++++++---- ...omFilteExtractorFromLayeredBloomFilterTest.java | 2 +- .../collections4/bloomfilter/LayerManagerTest.java | 28 +++++++++++----------- .../bloomfilter/LayeredBloomFilterTest.java | 10 ++++---- 5 files changed, 28 insertions(+), 25 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 45f5e800d..766d6ebbd 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -36,6 +36,7 @@ <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> <!-- ADD --> + <action type="add" dev="ggregory" due-to="Dávid Szigecsán">LayerManager.Builder implements Supplier.</action> <!-- UPDATE --> <action issue="COLLECTIONS-857" type="update" dev="ggregory" due-to="Claude Warren">Update bloom filter documentation #508.</action> <action issue="COLLECTIONS-857" type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump commons-codec:commons-codec from 1.17.0 to 1.17.1 #514.</action> diff --git a/src/main/java/org/apache/commons/collections4/bloomfilter/LayerManager.java b/src/main/java/org/apache/commons/collections4/bloomfilter/LayerManager.java index 353c1f139..110a514d1 100644 --- a/src/main/java/org/apache/commons/collections4/bloomfilter/LayerManager.java +++ b/src/main/java/org/apache/commons/collections4/bloomfilter/LayerManager.java @@ -56,11 +56,12 @@ import java.util.function.Supplier; public class LayerManager<T extends BloomFilter> implements BloomFilterExtractor { /** - * Builder to create Layer Manager. + * Builds new instances of {@link LayerManager}. * * @param <T> the {@link BloomFilter} type. */ - public static class Builder<T extends BloomFilter> { + public static class Builder<T extends BloomFilter> implements Supplier<LayerManager<T>> { + private Predicate<LayerManager<T>> extendCheck; private Supplier<T> supplier; private Consumer<Deque<T>> cleanup; @@ -75,7 +76,8 @@ public class LayerManager<T extends BloomFilter> implements BloomFilterExtractor * * @return a new LayerManager. */ - public LayerManager<T> build() { + @Override + public LayerManager<T> get() { return new LayerManager<>(supplier, extendCheck, cleanup, true); } @@ -97,7 +99,7 @@ public class LayerManager<T extends BloomFilter> implements BloomFilterExtractor * * @param extendCheck The predicate to determine if a new target should be * created. - * @return this for chaining. + * @return {@code this} instance. */ public Builder<T> setExtendCheck(final Predicate<LayerManager<T>> extendCheck) { this.extendCheck = extendCheck; @@ -109,7 +111,7 @@ public class LayerManager<T extends BloomFilter> implements BloomFilterExtractor * the supplier provides the instance of the Bloom filter. * * @param supplier The supplier of new Bloom filter instances. - * @return this for chaining. + * @return {@code this} instance. */ public Builder<T> setSupplier(final Supplier<T> supplier) { this.supplier = supplier; diff --git a/src/test/java/org/apache/commons/collections4/bloomfilter/BloomFilteExtractorFromLayeredBloomFilterTest.java b/src/test/java/org/apache/commons/collections4/bloomfilter/BloomFilteExtractorFromLayeredBloomFilterTest.java index f66522d29..8f4abaa4b 100644 --- a/src/test/java/org/apache/commons/collections4/bloomfilter/BloomFilteExtractorFromLayeredBloomFilterTest.java +++ b/src/test/java/org/apache/commons/collections4/bloomfilter/BloomFilteExtractorFromLayeredBloomFilterTest.java @@ -22,7 +22,7 @@ public class BloomFilteExtractorFromLayeredBloomFilterTest extends AbstractBloom protected BloomFilterExtractor createUnderTest(final BloomFilter... filters) { final Shape shape = filters[0].getShape(); final LayerManager layerManager = LayerManager.builder().setSupplier(() -> new SimpleBloomFilter(shape)) - .setExtendCheck(LayerManager.ExtendCheck.advanceOnPopulated()).setCleanup(LayerManager.Cleanup.noCleanup()).build(); + .setExtendCheck(LayerManager.ExtendCheck.advanceOnPopulated()).setCleanup(LayerManager.Cleanup.noCleanup()).get(); final LayeredBloomFilter underTest = new LayeredBloomFilter(shape, layerManager); for (final BloomFilter bf : filters) { underTest.merge(bf); diff --git a/src/test/java/org/apache/commons/collections4/bloomfilter/LayerManagerTest.java b/src/test/java/org/apache/commons/collections4/bloomfilter/LayerManagerTest.java index 5f03770c6..9aa60ae1c 100644 --- a/src/test/java/org/apache/commons/collections4/bloomfilter/LayerManagerTest.java +++ b/src/test/java/org/apache/commons/collections4/bloomfilter/LayerManagerTest.java @@ -46,7 +46,7 @@ public class LayerManagerTest { @ValueSource(ints = {4, 10, 2, 1}) public void testAdvanceOnCount(final int breakAt) { final Predicate<LayerManager<BloomFilter>> underTest = LayerManager.ExtendCheck.advanceOnCount(breakAt); - final LayerManager<BloomFilter> layerManager = testingBuilder().build(); + final LayerManager<BloomFilter> layerManager = testingBuilder().get(); for (int i = 0; i < breakAt - 1; i++) { assertFalse(underTest.test(layerManager), "at " + i); layerManager.getTarget().merge(TestingHashers.FROM1); @@ -63,7 +63,7 @@ public class LayerManagerTest { @Test public void testAdvanceOnPopulated() { final Predicate<LayerManager<BloomFilter>> underTest = LayerManager.ExtendCheck.advanceOnPopulated(); - final LayerManager<BloomFilter> layerManager = testingBuilder().build(); + final LayerManager<BloomFilter> layerManager = testingBuilder().get(); assertFalse(underTest.test(layerManager)); layerManager.getTarget().merge(TestingHashers.FROM1); assertTrue(underTest.test(layerManager)); @@ -74,7 +74,7 @@ public class LayerManagerTest { final double maxN = shape.estimateMaxN(); int hashStart = 0; final Predicate<LayerManager<BloomFilter>> underTest = LayerManager.ExtendCheck.advanceOnSaturation(maxN); - final LayerManager<BloomFilter> layerManager = testingBuilder().build(); + final LayerManager<BloomFilter> layerManager = testingBuilder().get(); while (layerManager.getTarget().getShape().estimateN(layerManager.getTarget().cardinality()) < maxN) { assertFalse(underTest.test(layerManager)); layerManager.getTarget().merge(new IncrementingHasher(hashStart, shape.getNumberOfHashFunctions())); @@ -88,24 +88,24 @@ public class LayerManagerTest { @Test public void testBuilder() { final LayerManager.Builder<BloomFilter> underTest = LayerManager.builder(); - NullPointerException npe = assertThrows(NullPointerException.class, underTest::build); + NullPointerException npe = assertThrows(NullPointerException.class, underTest::get); assertTrue(npe.getMessage().contains("filterSupplier")); underTest.setSupplier(() -> null).setCleanup(null); - npe = assertThrows(NullPointerException.class, underTest::build); + npe = assertThrows(NullPointerException.class, underTest::get); assertTrue(npe.getMessage().contains("filterCleanup")); underTest.setCleanup(x -> { }).setExtendCheck(null); - npe = assertThrows(NullPointerException.class, underTest::build); + npe = assertThrows(NullPointerException.class, underTest::get); assertTrue(npe.getMessage().contains("extendCheck")); - npe = assertThrows(NullPointerException.class, () -> LayerManager.builder().setSupplier(() -> null).build()); + npe = assertThrows(NullPointerException.class, () -> LayerManager.builder().setSupplier(() -> null).get()); assertTrue(npe.getMessage().contains("filterSupplier.get() returned null.")); } @Test public void testClear() { - final LayerManager<BloomFilter> underTest = LayerManager.builder().setSupplier(() -> new SimpleBloomFilter(shape)).build(); + final LayerManager<BloomFilter> underTest = LayerManager.builder().setSupplier(() -> new SimpleBloomFilter(shape)).get(); underTest.getTarget().merge(TestingHashers.randomHasher()); underTest.next(); underTest.getTarget().merge(TestingHashers.randomHasher()); @@ -119,7 +119,7 @@ public class LayerManagerTest { @Test public void testCopy() { - final LayerManager<BloomFilter> underTest = LayerManager.builder().setSupplier(() -> new SimpleBloomFilter(shape)).build(); + final LayerManager<BloomFilter> underTest = LayerManager.builder().setSupplier(() -> new SimpleBloomFilter(shape)).get(); underTest.getTarget().merge(TestingHashers.randomHasher()); underTest.next(); underTest.getTarget().merge(TestingHashers.randomHasher()); @@ -140,7 +140,7 @@ public class LayerManagerTest { @Test public void testForEachBloomFilter() { final LayerManager<BloomFilter> underTest = LayerManager.builder().setSupplier(() -> new SimpleBloomFilter(shape)) - .setExtendCheck(LayerManager.ExtendCheck.advanceOnPopulated()).build(); + .setExtendCheck(LayerManager.ExtendCheck.advanceOnPopulated()).get(); final List<BloomFilter> lst = new ArrayList<>(); for (int i = 0; i < 10; i++) { @@ -161,7 +161,7 @@ public class LayerManagerTest { @Test public void testGet() { final SimpleBloomFilter f = new SimpleBloomFilter(shape); - final LayerManager<BloomFilter> underTest = LayerManager.builder().setSupplier(() -> f).build(); + final LayerManager<BloomFilter> underTest = LayerManager.builder().setSupplier(() -> f).get(); assertEquals(1, underTest.getDepth()); assertSame(f, underTest.get(0)); assertThrows(NoSuchElementException.class, () -> underTest.get(-1)); @@ -175,7 +175,7 @@ public class LayerManagerTest { @Test public void testNeverAdvance() { final Predicate<LayerManager<BloomFilter>> underTest = LayerManager.ExtendCheck.neverAdvance(); - final LayerManager<BloomFilter> layerManager = testingBuilder().build(); + final LayerManager<BloomFilter> layerManager = testingBuilder().get(); assertFalse(underTest.test(layerManager)); for (int i = 0; i < 10; i++) { layerManager.getTarget().merge(TestingHashers.randomHasher()); @@ -185,7 +185,7 @@ public class LayerManagerTest { @Test public void testNextAndGetDepth() { - final LayerManager<BloomFilter> underTest = LayerManager.builder().setSupplier(() -> new SimpleBloomFilter(shape)).build(); + final LayerManager<BloomFilter> underTest = LayerManager.builder().setSupplier(() -> new SimpleBloomFilter(shape)).get(); assertEquals(1, underTest.getDepth()); underTest.getTarget().merge(TestingHashers.randomHasher()); assertEquals(1, underTest.getDepth()); @@ -281,7 +281,7 @@ public class LayerManagerTest { return true; }).setCleanup(ll -> { cleanupCalled[0] = true; - }).build(); + }).get(); assertFalse(extendCheckCalled[0]); assertFalse(cleanupCalled[0]); assertEquals(1, supplierCount[0]); diff --git a/src/test/java/org/apache/commons/collections4/bloomfilter/LayeredBloomFilterTest.java b/src/test/java/org/apache/commons/collections4/bloomfilter/LayeredBloomFilterTest.java index ac698bba0..3610a4317 100644 --- a/src/test/java/org/apache/commons/collections4/bloomfilter/LayeredBloomFilterTest.java +++ b/src/test/java/org/apache/commons/collections4/bloomfilter/LayeredBloomFilterTest.java @@ -143,7 +143,7 @@ public class LayeredBloomFilterTest extends AbstractBloomFilterTest<LayeredBloom .setCleanup(cleanup) .setExtendCheck(new AdvanceOnTimeQuanta(quanta) .or(LayerManager.ExtendCheck.advanceOnSaturation(shape.estimateMaxN()))) - .build(); + .get(); return new LayeredBloomFilter<>(shape, layerManager); } @@ -174,7 +174,7 @@ public class LayeredBloomFilterTest extends AbstractBloomFilterTest<LayeredBloom final LayerManager.Builder<T> builder = LayerManager.builder(); builder.setExtendCheck(LayerManager.ExtendCheck.advanceOnPopulated()) .setCleanup(LayerManager.Cleanup.onMaxSize(maxDepth)).setSupplier(supplier); - return new LayeredBloomFilter<>(shape, builder.build()); + return new LayeredBloomFilter<>(shape, builder.get()); } // instrumentation to record timestamps in dbgInstrument list @@ -221,7 +221,7 @@ public class LayeredBloomFilterTest extends AbstractBloomFilterTest<LayeredBloom @Test public void testCardinalityAndIsEmpty() { final LayerManager<BloomFilter> layerManager = LayerManager.builder().setExtendCheck(ExtendCheck.neverAdvance()) - .setSupplier(() -> new SimpleBloomFilter(getTestShape())).build(); + .setSupplier(() -> new SimpleBloomFilter(getTestShape())).get(); testCardinalityAndIsEmpty(new LayeredBloomFilter<>(getTestShape(), layerManager)); } @@ -233,7 +233,7 @@ public class LayeredBloomFilterTest extends AbstractBloomFilterTest<LayeredBloom final LayerManager layerManager = LayerManager.builder() .setSupplier(() -> new NumberedBloomFilter(getTestShape(), 3, sequence[0]++)) .setExtendCheck(ExtendCheck.neverAdvance()) - .setCleanup(ll -> ll.removeIf( f -> (((NumberedBloomFilter) f).value-- == 0))).build(); + .setCleanup(ll -> ll.removeIf( f -> (((NumberedBloomFilter) f).value-- == 0))).get(); final LayeredBloomFilter underTest = new LayeredBloomFilter(getTestShape(), layerManager ); assertEquals(1, underTest.getDepth()); underTest.merge(TestingHashers.randomHasher()); @@ -385,7 +385,7 @@ public class LayeredBloomFilterTest extends AbstractBloomFilterTest<LayeredBloom @Test public final void testNext() { final LayerManager<BloomFilter> layerManager = LayerManager.builder().setSupplier(() -> new SimpleBloomFilter(getTestShape())) - .build(); + .get(); final LayeredBloomFilter<BloomFilter> filter = new LayeredBloomFilter<>(getTestShape(), layerManager); filter.merge(TestingHashers.FROM1);