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); + } }