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 <[email protected]>
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);