From d3d328feb6ca433c85a453d01f9955ccaa95bae9 Mon Sep 17 00:00:00 2001 From: Mike Buchanan Date: Mon, 4 Nov 2013 18:30:15 -0500 Subject: [PATCH] Add JSON value wrapper interface to support expression evaluations on types not currently supported --- .../internal/filter/eval/ExpressionEvaluator.java | 9 ++++++++- .../java/com/jayway/jsonpath/spi/JsonValueWrapper.java | 10 ++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 json-path/src/main/java/com/jayway/jsonpath/spi/JsonValueWrapper.java diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/filter/eval/ExpressionEvaluator.java b/json-path/src/main/java/com/jayway/jsonpath/internal/filter/eval/ExpressionEvaluator.java index 6e1097b5..6f68a777 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/internal/filter/eval/ExpressionEvaluator.java +++ b/json-path/src/main/java/com/jayway/jsonpath/internal/filter/eval/ExpressionEvaluator.java @@ -14,6 +14,8 @@ */ package com.jayway.jsonpath.internal.filter.eval; +import com.jayway.jsonpath.spi.JsonValueWrapper; + import java.math.BigDecimal; import java.math.BigInteger; import java.util.Collections; @@ -58,7 +60,12 @@ public class ExpressionEvaluator { } - public static boolean eval(T actual, String comparator, String expected) { + public static boolean eval(T actualObject, String comparator, String expected) { + + Object actual = actualObject; + if(actualObject != null && actualObject instanceof JsonValueWrapper) { + actual = ((JsonValueWrapper)actualObject).getValue(); + } Operator operator = operatorsByRepresentation.get(comparator); if (operator == null) { diff --git a/json-path/src/main/java/com/jayway/jsonpath/spi/JsonValueWrapper.java b/json-path/src/main/java/com/jayway/jsonpath/spi/JsonValueWrapper.java new file mode 100644 index 00000000..0f349b47 --- /dev/null +++ b/json-path/src/main/java/com/jayway/jsonpath/spi/JsonValueWrapper.java @@ -0,0 +1,10 @@ +package com.jayway.jsonpath.spi; + +/** + * Interface to allow wrapping a JSON value to maintain metadata associated with the value + * + * @author Mike Buchanan + */ +public interface JsonValueWrapper { + public T getValue(); +}