From a9fd55bd1d4f0decb3bcf37d5c4fa88152ad7fcf Mon Sep 17 00:00:00 2001 From: Alejandro Jimenez Martinez Date: Fri, 16 Mar 2018 11:25:52 -0700 Subject: [PATCH 1/3] Allow the cache to be configurable in different contexts, and as well as which Functions are available on the library --- .gitignore | 3 + .../com/jayway/jsonpath/Configuration.java | 94 +++++++++++++++++-- .../jayway/jsonpath/internal/JsonContext.java | 2 +- .../function/PathFunctionFactory.java | 18 ++-- .../internal/path/FunctionPathToken.java | 2 +- .../jsonpath/ConfigurableFunctionTest.java | 50 ++++++++++ 6 files changed, 155 insertions(+), 14 deletions(-) create mode 100644 json-path/src/test/java/com/jayway/jsonpath/ConfigurableFunctionTest.java diff --git a/.gitignore b/.gitignore index 7fd04a4c5..ec1c81db1 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,6 @@ TODO gradle.properties build bin/ +json-path-assert/out +json-path-web-test/out +json-path/out diff --git a/json-path/src/main/java/com/jayway/jsonpath/Configuration.java b/json-path/src/main/java/com/jayway/jsonpath/Configuration.java index 1a591ea8d..9b3f3326e 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/Configuration.java +++ b/json-path/src/main/java/com/jayway/jsonpath/Configuration.java @@ -15,6 +15,9 @@ package com.jayway.jsonpath; import com.jayway.jsonpath.internal.DefaultsImpl; +import com.jayway.jsonpath.internal.function.PathFunction; +import com.jayway.jsonpath.spi.cache.Cache; +import com.jayway.jsonpath.spi.cache.CacheProvider; import com.jayway.jsonpath.spi.json.JsonProvider; import com.jayway.jsonpath.spi.mapper.MappingProvider; @@ -23,9 +26,12 @@ import java.util.Collection; import java.util.Collections; import java.util.EnumSet; +import java.util.HashMap; +import java.util.Map; import java.util.Set; import static com.jayway.jsonpath.internal.Utils.notNull; +import static com.jayway.jsonpath.internal.function.PathFunctionFactory.FUNCTIONS; import static java.util.Arrays.asList; /** @@ -54,17 +60,28 @@ private static Defaults getEffectiveDefaults(){ private final JsonProvider jsonProvider; private final MappingProvider mappingProvider; private final Set