From e3e29444cf30e0cf336ef4004e877fa05274fdc0 Mon Sep 17 00:00:00 2001 From: Kalle Stenflo Date: Sat, 17 Oct 2015 21:27:02 +0200 Subject: [PATCH] Handle invalid options when using functions. --- .../src/main/java/com/jayway/jsonpath/JsonPath.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/json-path/src/main/java/com/jayway/jsonpath/JsonPath.java b/json-path/src/main/java/com/jayway/jsonpath/JsonPath.java index 1ea61c5b..2c1a7905 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/JsonPath.java +++ b/json-path/src/main/java/com/jayway/jsonpath/JsonPath.java @@ -29,6 +29,8 @@ import java.io.IOException; import java.io.InputStream; import java.net.URL; +import static com.jayway.jsonpath.Option.ALWAYS_RETURN_LIST; +import static com.jayway.jsonpath.Option.AS_PATH_LIST; import static com.jayway.jsonpath.internal.Utils.*; /** @@ -167,12 +169,15 @@ public class JsonPath { */ @SuppressWarnings("unchecked") public T read(Object jsonObject, Configuration configuration) { - boolean optAsPathList = configuration.containsOption(Option.AS_PATH_LIST); + boolean optAsPathList = configuration.containsOption(AS_PATH_LIST); boolean optAlwaysReturnList = configuration.containsOption(Option.ALWAYS_RETURN_LIST); boolean optSuppressExceptions = configuration.containsOption(Option.SUPPRESS_EXCEPTIONS); try { if(path.isFunctionPath()){ + if(optAsPathList || optAlwaysReturnList){ + throw new JsonPathException("Options " + AS_PATH_LIST + " and " + ALWAYS_RETURN_LIST + " are not allowed when using path functions!"); + } return path.evaluate(jsonObject, jsonObject, configuration).getValue(true); } if(optAsPathList){ @@ -647,7 +652,7 @@ public class JsonPath { } private T resultByConfiguration(Object jsonObject, Configuration configuration, EvaluationContext evaluationContext) { - if(configuration.containsOption(Option.AS_PATH_LIST)){ + if(configuration.containsOption(AS_PATH_LIST)){ return (T)evaluationContext.getPathList(); } else { return (T) jsonObject;