diff --git a/cs-json/pom.xml b/cs-json/pom.xml
index 194b03b41c..baff780ccd 100644
--- a/cs-json/pom.xml
+++ b/cs-json/pom.xml
@@ -21,7 +21,7 @@
io.cloudslang.content
cs-json
- 0.0.19-SNAPSHOT
+ 0.0.20-SNAPSHOT
jar
${project.groupId}:${project.artifactId}
@@ -111,8 +111,17 @@
com.fasterxml.jackson.core
jackson-databind
+
+ net.minidev
+ json-smart
+
+
+ net.minidev
+ json-smart
+ 2.4.7
+
com.google.code.gson
diff --git a/cs-json/src/main/java/io/cloudslang/content/json/actions/JsonPathQuery.java b/cs-json/src/main/java/io/cloudslang/content/json/actions/JsonPathQuery.java
index b402940433..6e7e16f8a1 100644
--- a/cs-json/src/main/java/io/cloudslang/content/json/actions/JsonPathQuery.java
+++ b/cs-json/src/main/java/io/cloudslang/content/json/actions/JsonPathQuery.java
@@ -16,7 +16,6 @@
package io.cloudslang.content.json.actions;
-import com.fasterxml.jackson.databind.JsonNode;
import com.hp.oo.sdk.content.annotations.Action;
import com.hp.oo.sdk.content.annotations.Output;
import com.hp.oo.sdk.content.annotations.Param;
@@ -28,6 +27,7 @@
import io.cloudslang.content.constants.ReturnCodes;
import io.cloudslang.content.json.services.JsonService;
import io.cloudslang.content.json.utils.Constants;
+import io.cloudslang.content.json.utils.StringUtils;
import io.cloudslang.content.utils.OutputUtilities;
import java.util.Map;
@@ -61,8 +61,8 @@ public Map execute(
@Param(value = Constants.InputNames.JSON_OBJECT, required = true) String jsonObject,
@Param(value = Constants.InputNames.JSON_PATH, required = true) String jsonPath) {
try {
- final JsonNode jsonNode = JsonService.evaluateJsonPathQuery(jsonObject, jsonPath);
- if (!jsonNode.isNull()) {
+ final Object jsonNode = JsonService.evaluateJsonPathQuery(jsonObject, jsonPath);
+ if (!StringUtils.isEmpty(jsonNode)) {
return OutputUtilities.getSuccessResultsMap(jsonNode.toString());
}
return OutputUtilities.getSuccessResultsMap(NULL_STRING);
diff --git a/cs-json/src/main/java/io/cloudslang/content/json/services/JsonService.java b/cs-json/src/main/java/io/cloudslang/content/json/services/JsonService.java
index 15e4efde57..30ad30c750 100644
--- a/cs-json/src/main/java/io/cloudslang/content/json/services/JsonService.java
+++ b/cs-json/src/main/java/io/cloudslang/content/json/services/JsonService.java
@@ -17,10 +17,6 @@
package io.cloudslang.content.json.services;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
import com.google.gson.JsonSyntaxException;
import com.jayway.jsonpath.Configuration;
import com.jayway.jsonpath.InvalidJsonException;
@@ -41,7 +37,10 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import java.util.*;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Set;
import static io.cloudslang.content.json.utils.Constants.InputNames.EMPTY_STRING;
@@ -51,7 +50,7 @@
public class JsonService {
@NotNull
- public static JsonNode evaluateJsonPathQuery(@Nullable final String jsonObject, @Nullable final String jsonPath) {
+ public static Object evaluateJsonPathQuery(@Nullable final String jsonObject, @Nullable final String jsonPath) {
final JsonContext jsonContext = JsonUtils.getValidJsonContext(jsonObject);
final JsonPath path = JsonUtils.getValidJsonPath(jsonPath);
return jsonContext.read(path);
diff --git a/cs-json/src/main/java/io/cloudslang/content/json/utils/JsonUtils.java b/cs-json/src/main/java/io/cloudslang/content/json/utils/JsonUtils.java
index 281cc8ca63..2d1cb2514a 100644
--- a/cs-json/src/main/java/io/cloudslang/content/json/utils/JsonUtils.java
+++ b/cs-json/src/main/java/io/cloudslang/content/json/utils/JsonUtils.java
@@ -128,8 +128,11 @@ public static JsonContext getValidJsonContext(final String jsonObject) {
final AbstractJsonProvider provider = new JacksonJsonNodeJsonProvider(objectMapper);
final Configuration configuration = Configuration.defaultConfiguration()
.jsonProvider(provider);
- final JsonContext jsonContext = new JsonContext(configuration);
- jsonContext.parse(jsonObject);
+
+
+ final JsonContext jsonContext = (JsonContext) JsonPath
+ .using(configuration)
+ .parse(jsonObject);
return jsonContext;
} catch (IllegalArgumentException iae) {
throw hammerIllegalArgumentExceptionWithMessage(INVALID_JSONOBJECT, iae);
diff --git a/cs-json/src/test/java/io/cloudslang/content/json/services/JsonServiceTest.java b/cs-json/src/test/java/io/cloudslang/content/json/services/JsonServiceTest.java
index 5334ff943c..52f5a01ae1 100644
--- a/cs-json/src/test/java/io/cloudslang/content/json/services/JsonServiceTest.java
+++ b/cs-json/src/test/java/io/cloudslang/content/json/services/JsonServiceTest.java
@@ -202,13 +202,13 @@ public void givenJsonWithEmptyElementsThenReturnEmptyJsonString() throws RemoveE
@Test
public void evaluateSimpleJsonPathQuery() throws Exception {
- JsonNode jsonNode = JsonService.evaluateJsonPathQuery("{'key1': 'value1','key2': 'value2', 'key3': { 'key31': 'value31'}}", "$.key3.key31");
+ Object jsonNode = JsonService.evaluateJsonPathQuery("{'key1': 'value1','key2': 'value2', 'key3': { 'key31': 'value31'}}", "$.key3.key31");
assertEquals(jsonNode.toString(), "\"value31\"");
}
@Test
public void evaluateComplexJsonPathQuery() throws Exception {
- JsonNode jsonNode = JsonService.evaluateJsonPathQuery("{ \"store\": {\n" +
+ Object jsonNode = JsonService.evaluateJsonPathQuery("{ \"store\": {\n" +
" \"book\": [ \n" +
" { \"category\": \"reference\",\n" +
" \"author\": \"Nigel Rees\",\n" +