diff --git a/json-path/pom.xml b/json-path/pom.xml
index ede1decd..4d9d20b7 100644
--- a/json-path/pom.xml
+++ b/json-path/pom.xml
@@ -35,6 +35,12 @@
jackson-databind
true
+
+ com.google.code.gson
+ gson
+ true
+
+
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 f998d912..93becbae 100644
--- a/json-path/src/main/java/com/jayway/jsonpath/Criteria.java
+++ b/json-path/src/main/java/com/jayway/jsonpath/Criteria.java
@@ -290,6 +290,7 @@ public class Criteria implements Predicate {
} else {
try {
final Object actual = path.evaluate(ctx.target(), ctx.configuration()).getValue();
+
return criteriaType.eval(expected, actual, ctx.configuration());
} catch (CompareException e) {
return false;
diff --git a/json-path/src/main/java/com/jayway/jsonpath/ReadContext.java b/json-path/src/main/java/com/jayway/jsonpath/ReadContext.java
index 9fb8c6a3..71812a67 100644
--- a/json-path/src/main/java/com/jayway/jsonpath/ReadContext.java
+++ b/json-path/src/main/java/com/jayway/jsonpath/ReadContext.java
@@ -16,6 +16,13 @@ package com.jayway.jsonpath;
public interface ReadContext {
+ /**
+ * Returns the configuration used for reading
+ *
+ * @return an immutable configuration
+ */
+ Configuration configuration();
+
/**
* Returns the JSON model that this context is reading
*
diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/JsonReader.java b/json-path/src/main/java/com/jayway/jsonpath/internal/JsonReader.java
index 526e12c6..394fcfd5 100644
--- a/json-path/src/main/java/com/jayway/jsonpath/internal/JsonReader.java
+++ b/json-path/src/main/java/com/jayway/jsonpath/internal/JsonReader.java
@@ -77,6 +77,11 @@ public class JsonReader implements ParseContext, ReadContext {
return parse(is);
}
+ @Override
+ public Configuration configuration() {
+ return configuration;
+ }
+
//------------------------------------------------
//
// ReadContext impl
diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/compiler/EvaluationContextImpl.java b/json-path/src/main/java/com/jayway/jsonpath/internal/compiler/EvaluationContextImpl.java
index f1a36f7b..6de8b956 100644
--- a/json-path/src/main/java/com/jayway/jsonpath/internal/compiler/EvaluationContextImpl.java
+++ b/json-path/src/main/java/com/jayway/jsonpath/internal/compiler/EvaluationContextImpl.java
@@ -60,9 +60,9 @@ public class EvaluationContextImpl implements EvaluationContext {
if(resultIndex == 0){
throw new PathNotFoundException("No results for path: " + path.toString());
}
- return (T) jsonProvider().getArrayIndex(valueResult, 0);
+ return (T) jsonProvider().unwrap(jsonProvider().getArrayIndex(valueResult, 0));
}
- return (T) valueResult;
+ return (T) jsonProvider().unwrap(valueResult);
}
@SuppressWarnings("unchecked")
@@ -78,7 +78,7 @@ public class EvaluationContextImpl implements EvaluationContext {
public List getPathList() {
List res = new ArrayList();
if(resultIndex > 0){
- Iterable