This is an automated email from the ASF dual-hosted git repository.

daim pushed a commit to branch OAK-11523
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git

commit 1a4d9dcce8031a25768df8f4e3332571de0dbf2d
Author: Rishabh Kumar <[email protected]>
AuthorDate: Mon Feb 24 20:21:00 2025 +0530

    OAK-11523 : added util method for replceing Guava's Iterables.filter in 
oak-commons module
---
 .../oak/commons/collections/IterableUtils.java     | 13 ++++++
 .../oak/commons/collections/IterableUtilsTest.java | 52 ++++++++++++++++++++++
 2 files changed, 65 insertions(+)

diff --git 
a/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/collections/IterableUtils.java
 
b/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/collections/IterableUtils.java
index bea321d4b0..a9292f5fb3 100644
--- 
a/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/collections/IterableUtils.java
+++ 
b/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/collections/IterableUtils.java
@@ -260,4 +260,17 @@ public class IterableUtils {
             }
         };
     }
+
+    /**
+     * Filters an Iterable based on a given predicate.
+     *
+     * @param <E> the type of elements in the iterable
+     * @param itr the iterable to filter, may not be null
+     * @param predicate the predicate to apply to elements, may not be null
+     * @return an iterable containing only the elements that match the 
predicate
+     * @throws NullPointerException if the iterable or predicate is null
+     */
+    public static <E> Iterable<E> filter(final Iterable<E> itr, final 
Predicate<? super E> predicate) {
+        return 
org.apache.commons.collections4.IterableUtils.filteredIterable(itr, predicate);
+    }
 }
diff --git 
a/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/collections/IterableUtilsTest.java
 
b/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/collections/IterableUtilsTest.java
index 1f30edca6b..5541b5b7cf 100644
--- 
a/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/collections/IterableUtilsTest.java
+++ 
b/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/collections/IterableUtilsTest.java
@@ -393,4 +393,56 @@ public class IterableUtilsTest {
         Assert.assertFalse(iterator.hasNext());
         Assert.assertThrows(NoSuchElementException.class, iterator::next);
     }
+
+    @Test
+    public void testFilterWithNonEmptyIterable() {
+        Iterable<Integer> iterable = Arrays.asList(1, 2, 3, 4, 5);
+        Predicate<Integer> predicate = x -> x % 2 == 0;
+        Iterable<Integer> filtered = IterableUtils.filter(iterable, predicate);
+        List<Integer> result = ListUtils.toList(filtered.iterator());
+        Assert.assertEquals(Arrays.asList(2, 4), result);
+    }
+
+    @Test
+    public void testFilterWithEmptyIterable() {
+        Iterable<Integer> iterable = Collections.emptyList();
+        Predicate<Integer> predicate = x -> x % 2 == 0;
+        Iterable<Integer> filtered = IterableUtils.filter(iterable, predicate);
+        List<Integer> result = ListUtils.toList(filtered.iterator());
+        Assert.assertTrue(result.isEmpty());
+    }
+
+    @Test
+    public void testFilterWithAllMatchingElements() {
+        Iterable<Integer> iterable = Arrays.asList(2, 4, 6);
+        Predicate<Integer> predicate = x -> x % 2 == 0;
+        Iterable<Integer> filtered = IterableUtils.filter(iterable, predicate);
+        List<Integer> result = ListUtils.toList(filtered.iterator());
+        Assert.assertEquals(Arrays.asList(2, 4, 6), result);
+    }
+
+    @Test
+    public void testFilterWithNoMatchingElements() {
+        Iterable<Integer> iterable = Arrays.asList(1, 3, 5);
+        Predicate<Integer> predicate = x -> x % 2 == 0;
+        Iterable<Integer> filtered = IterableUtils.filter(iterable, predicate);
+        List<Integer> result = ListUtils.toList(filtered.iterator());
+        Assert.assertTrue(result.isEmpty());
+    }
+
+    @Test
+    public void testFilterWithNullIterable() {
+        Predicate<Integer> predicate = x -> x % 2 == 0;
+        Assert.assertThrows(NullPointerException.class, () -> {
+            IterableUtils.filter(null, predicate);
+        });
+    }
+
+    @Test
+    public void testFilterWithNullPredicate() {
+        Iterable<Integer> iterable = Arrays.asList(1, 2, 3);
+        Assert.assertThrows(NullPointerException.class, () -> {
+            IterableUtils.filter(iterable, null);
+        });
+    }
 }

Reply via email to