From dc3af0c8673a096ed4e49b3800fe8460bfa5998c Mon Sep 17 00:00:00 2001 From: xurror Date: Sat, 16 May 2020 10:05:11 +0100 Subject: [PATCH] FINERACT-964 bump json-path from 0.9.1 to 2.4.0 --- fineract-provider/build.gradle | 2 +- .../batch/service/ResolutionHelper.java | 29 ++++++++++--------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/fineract-provider/build.gradle b/fineract-provider/build.gradle index a59c8522d..5689df08f 100644 --- a/fineract-provider/build.gradle +++ b/fineract-provider/build.gradle @@ -99,7 +99,7 @@ dependencyManagement { dependency 'com.amazonaws:aws-java-sdk-s3:1.11.779' dependency 'net.sf.ehcache:ehcache:+' dependency 'com.github.spullara.mustache.java:compiler:0.8.12' - dependency 'com.jayway.jsonpath:json-path:0.9.1' + dependency 'com.jayway.jsonpath:json-path:2.4.0' dependency 'org.apache.tika:tika-core:1.24.1' dependency 'org.apache.httpcomponents:httpclient:+' dependency 'io.swagger:swagger-jersey-jaxrs:1.6.1' diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/service/ResolutionHelper.java b/fineract-provider/src/main/java/org/apache/fineract/batch/service/ResolutionHelper.java index 13e41d7e6..0ed763bf7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/service/ResolutionHelper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/service/ResolutionHelper.java @@ -21,7 +21,8 @@ package org.apache.fineract.batch.service; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; -import com.jayway.jsonpath.JsonModel; +import com.jayway.jsonpath.JsonPath; +import com.jayway.jsonpath.ReadContext; import java.util.ArrayList; import java.util.List; import java.util.Map.Entry; @@ -134,7 +135,7 @@ public class ResolutionHelper { // Create a duplicate request final BatchRequest br = request; - final JsonModel responseJsonModel = JsonModel.model(parentResponse.getBody()); + final ReadContext responseCtx = JsonPath.parse(parentResponse.getBody()); // Gets the body from current Request as a JsonObject final JsonObject jsonRequestBody = this.fromJsonHelper.parse(request.getBody()).getAsJsonObject(); @@ -145,7 +146,7 @@ public class ResolutionHelper { // parameter for (Entry element : jsonRequestBody.entrySet()) { final String key = element.getKey(); - final JsonElement value = resolveDependentVariables(element, responseJsonModel); + final JsonElement value = resolveDependentVariables(element, responseCtx); jsonResultBody.add(key, value); } @@ -167,7 +168,7 @@ public class ResolutionHelper { for (String parameter : parameters) { if (parameter.contains("$.")) { - final String resParamValue = responseJsonModel.get(parameter).toString(); + final String resParamValue = responseCtx.read(parameter).toString(); relativeUrl = relativeUrl.replace(parameter, resParamValue); br.setRelativeUrl(relativeUrl+queryParams); } @@ -177,53 +178,53 @@ public class ResolutionHelper { return br; } - private JsonElement resolveDependentVariables(final Entry entryElement, final JsonModel responseJsonModel) { + private JsonElement resolveDependentVariables(final Entry entryElement, final ReadContext responseCtx) { JsonElement value = null; final JsonElement element = entryElement.getValue(); if (element.isJsonObject()) { final JsonObject jsObject = element.getAsJsonObject(); - value = processJsonObject(jsObject, responseJsonModel); + value = processJsonObject(jsObject, responseCtx); } else if (element.isJsonArray()) { final JsonArray jsElementArray = element.getAsJsonArray(); - value = processJsonArray(jsElementArray, responseJsonModel); + value = processJsonArray(jsElementArray, responseCtx); } else { - value = resolveDependentVariable(element, responseJsonModel); + value = resolveDependentVariable(element, responseCtx); } return value; } - private JsonElement processJsonObject(final JsonObject jsObject, final JsonModel responseJsonModel) { + private JsonElement processJsonObject(final JsonObject jsObject, final ReadContext responseCtx) { JsonObject valueObj = new JsonObject(); for (Entry element : jsObject.entrySet()) { final String key = element.getKey(); - final JsonElement value = resolveDependentVariable(element.getValue(), responseJsonModel); + final JsonElement value = resolveDependentVariable(element.getValue(), responseCtx); valueObj.add(key, value); } return valueObj; } - private JsonArray processJsonArray(final JsonArray elementArray, final JsonModel responseJsonModel) { + private JsonArray processJsonArray(final JsonArray elementArray, final ReadContext responseCtx) { JsonArray valueArr = new JsonArray(); for (JsonElement element : elementArray) { if (element.isJsonObject()) { final JsonObject jsObject = element.getAsJsonObject(); - valueArr.add(processJsonObject(jsObject, responseJsonModel)); + valueArr.add(processJsonObject(jsObject, responseCtx)); } } return valueArr; } - private JsonElement resolveDependentVariable(final JsonElement element, final JsonModel responseJsonModel) { + private JsonElement resolveDependentVariable(final JsonElement element, final ReadContext responseCtx) { JsonElement value = element; String paramVal = element.getAsString(); if (paramVal.contains("$.")) { // Get the value of the parameter from parent response - final String resParamValue = responseJsonModel.get(paramVal).toString(); + final String resParamValue = responseCtx.read(paramVal).toString(); value = this.fromJsonHelper.parse(resParamValue); } return value;