From bda35e7056386e0fae726b49699184bbae691fb8 Mon Sep 17 00:00:00 2001 From: Jochen Berger Date: Mon, 13 May 2013 11:16:50 +0200 Subject: [PATCH] add filter evaluation on collections --- .../main/java/com/jayway/jsonpath/Criteria.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/json-path/src/main/java/com/jayway/jsonpath/Criteria.java b/json-path/src/main/java/com/jayway/jsonpath/Criteria.java index 405b0c01..15414585 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/Criteria.java +++ b/json-path/src/main/java/com/jayway/jsonpath/Criteria.java @@ -103,6 +103,19 @@ public class Criteria { } } + private static boolean objectOrAnyCollectionItemMatches(final Object singleObjectOrCollection, + final Predicate predicate){ + if (singleObjectOrCollection instanceof Collection) { + Iterator it = ((Collection) singleObjectOrCollection).iterator(); + while (it.hasNext()) { + if (predicate.accept((T) it.next())) { + return true; + } + } + return false; + } + return predicate.accept((T) singleObjectOrCollection); + } boolean singleObjectApply(Map map) { @@ -514,5 +527,9 @@ public class Criteria { return this; } + + private interface Predicate { + boolean accept(T value); + } }