From ddcbd9a62336c63a758585d709e16879683b408b Mon Sep 17 00:00:00 2001 From: Harland Sanders Date: Wed, 19 Nov 2014 23:36:43 +0000 Subject: [PATCH] Added ability for Predicates to get items from the PredicateContext using a TypeRef --- json-path/src/main/java/com/jayway/jsonpath/Predicate.java | 7 +++++++ .../jsonpath/internal/token/PredicateContextImpl.java | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/json-path/src/main/java/com/jayway/jsonpath/Predicate.java b/json-path/src/main/java/com/jayway/jsonpath/Predicate.java index 1d19991e..894350a2 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/Predicate.java +++ b/json-path/src/main/java/com/jayway/jsonpath/Predicate.java @@ -38,6 +38,13 @@ public interface Predicate { */ T item(Class clazz) throws MappingException; + /** + * Returns the current item being evaluated by this predicate. It will be mapped + * to the type of the provided TypeRef + * @return current document + */ + T item(TypeRef typeRef) throws MappingException; + /** * Returns the root document (the complete JSON) * @return root document diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/token/PredicateContextImpl.java b/json-path/src/main/java/com/jayway/jsonpath/internal/token/PredicateContextImpl.java index 3abc68d5..30952bc1 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/internal/token/PredicateContextImpl.java +++ b/json-path/src/main/java/com/jayway/jsonpath/internal/token/PredicateContextImpl.java @@ -16,6 +16,7 @@ package com.jayway.jsonpath.internal.token; import com.jayway.jsonpath.Configuration; import com.jayway.jsonpath.Predicate; +import com.jayway.jsonpath.TypeRef; import com.jayway.jsonpath.internal.Path; import com.jayway.jsonpath.spi.mapper.MappingException; import org.slf4j.Logger; @@ -69,6 +70,11 @@ public class PredicateContextImpl implements Predicate.PredicateContext { return configuration().mappingProvider().map(contextDocument, clazz, configuration); } + @Override + public T item(TypeRef typeRef) throws MappingException { + return configuration().mappingProvider().map(contextDocument, typeRef, configuration); + } + @Override public Object root() { return rootDocument;