diff --git a/arex-compare-core/pom.xml b/arex-compare-core/pom.xml
index 96d5519..e375092 100644
--- a/arex-compare-core/pom.xml
+++ b/arex-compare-core/pom.xml
@@ -5,7 +5,7 @@
arex-compare-parent
com.arextest
- 0.2.18
+ 0.2.19
4.0.0
diff --git a/arex-compare-core/src/main/java/com/arextest/diff/handler/parse/JSONParse.java b/arex-compare-core/src/main/java/com/arextest/diff/handler/parse/JSONParse.java
index 17e985b..6dbc8c3 100644
--- a/arex-compare-core/src/main/java/com/arextest/diff/handler/parse/JSONParse.java
+++ b/arex-compare-core/src/main/java/com/arextest/diff/handler/parse/JSONParse.java
@@ -34,7 +34,7 @@ public Map, String> getJSONParseResult(Object obj, RulesConfig
stringAndCompressParse.setNameToLower(rulesConfig.isNameToLower());
stringAndCompressParse.setPluginJarUrl(rulesConfig.getPluginJarUrl());
stringAndCompressParse.setTransFormConfigMap(rulesConfig.getTransformConfigMap());
- stringAndCompressParse.getJSONParse(obj, obj);
+ stringAndCompressParse.getJSONParse(obj, obj, null);
// Convert field names in JSONObject to lowercase
if (rulesConfig.isNameToLower()) {
NameConvertUtil.nameConvert(obj);
diff --git a/arex-compare-core/src/main/java/com/arextest/diff/handler/parse/StringAndCompressParse.java b/arex-compare-core/src/main/java/com/arextest/diff/handler/parse/StringAndCompressParse.java
index de63f1d..46d555b 100644
--- a/arex-compare-core/src/main/java/com/arextest/diff/handler/parse/StringAndCompressParse.java
+++ b/arex-compare-core/src/main/java/com/arextest/diff/handler/parse/StringAndCompressParse.java
@@ -51,7 +51,7 @@ public void setPluginJarUrl(String pluginJarUrl) {
this.pluginJarUrl = pluginJarUrl;
}
- public void getJSONParse(Object obj, Object preObj) {
+ public void getJSONParse(Object obj, Object preObj, String currentName) {
if (obj == null || obj instanceof NullNode) {
return;
}
@@ -62,7 +62,7 @@ public void getJSONParse(Object obj, Object preObj) {
for (String fieldName : names) {
currentNode.add(new NodeEntity(nameToLower ? fieldName.toLowerCase() : fieldName, 0));
Object objFieldValue = jsonObject.get(fieldName);
- getJSONParse(objFieldValue, obj);
+ getJSONParse(objFieldValue, obj, fieldName);
ListUti.removeLast(currentNode);
}
} else if (obj instanceof ArrayNode) {
@@ -70,7 +70,7 @@ public void getJSONParse(Object obj, Object preObj) {
for (int i = 0; i < objArray.size(); i++) {
currentNode.add(new NodeEntity(null, i));
Object element = objArray.get(i);
- getJSONParse(element, obj);
+ getJSONParse(element, obj, String.valueOf(i));
ListUti.removeLast(currentNode);
}
@@ -96,10 +96,9 @@ public void getJSONParse(Object obj, Object preObj) {
return;
}
if (Objects.equals(objectBooleanPair.getValue(), Boolean.TRUE)) {
- getJSONParse(objectBooleanPair.getKey(), preObj);
+ getJSONParse(objectBooleanPair.getKey(), preObj, null);
}
- String currentName = getCurrentName(currentNode);
if (preObj instanceof ObjectNode) {
((ObjectNode) preObj).set(currentName, objectBooleanPair.getKey());
original.put(new ArrayList<>(currentNode), value);
diff --git a/arex-compare-core/src/main/java/com/arextest/diff/utils/ListUti.java b/arex-compare-core/src/main/java/com/arextest/diff/utils/ListUti.java
index 4ebea02..cef959c 100644
--- a/arex-compare-core/src/main/java/com/arextest/diff/utils/ListUti.java
+++ b/arex-compare-core/src/main/java/com/arextest/diff/utils/ListUti.java
@@ -56,13 +56,21 @@ public static boolean stringListEqualsOnWildcard(List listA, List convertToStringList(List list) {
+ return convertToStringList(list,false);
+ }
+
+ public static List convertToStringList(List list, boolean ignoreCase) {
if (list == null || list.size() == 0) {
return Collections.emptyList();
}
List nodes = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getNodeName() != null) {
- nodes.add(list.get(i).getNodeName());
+ if (ignoreCase) {
+ nodes.add(list.get(i).getNodeName().toLowerCase());
+ } else {
+ nodes.add(list.get(i).getNodeName());
+ }
}
}
return nodes;
diff --git a/arex-compare-core/src/test/java/com/arextest/diff/sdk/CompareSDKTest.java b/arex-compare-core/src/test/java/com/arextest/diff/sdk/CompareSDKTest.java
index 3011302..9df6d42 100644
--- a/arex-compare-core/src/test/java/com/arextest/diff/sdk/CompareSDKTest.java
+++ b/arex-compare-core/src/test/java/com/arextest/diff/sdk/CompareSDKTest.java
@@ -9,6 +9,8 @@
import com.arextest.diff.model.script.ScriptCompareConfig;
import com.arextest.diff.model.script.ScriptCompareConfig.ScriptMethod;
import com.arextest.diff.model.script.ScriptContentInfo;
+import java.nio.file.Files;
+import java.nio.file.Paths;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
@@ -1025,7 +1027,8 @@ public void testScriptCompare3() {
CompareOptions compareOptions = new CompareOptions();
compareOptions.putScriptCompareConfig(
- new ScriptCompareConfig(Arrays.asList("score"), new ScriptMethod("func_67356dbc7ac2aa763be9f8af", ""))
+ new ScriptCompareConfig(Arrays.asList("score"),
+ new ScriptMethod("func_67356dbc7ac2aa763be9f8af", ""))
);
String baseMsg = "{\n"
@@ -1097,4 +1100,45 @@ public void testScriptValueMissing() {
Assertions.assertEquals(2, compare.getLogs().size());
}
+ @Test
+ public void testScriptCompare4() throws Exception {
+ CompareSDK compareSDK = new CompareSDK();
+ compareSDK.getGlobalOptions()
+ .putNameToLower(true)
+ .putNullEqualsEmpty(true)
+ .putPluginJarUrl("./lib/arex-compare-sdk-plugin-0.1.0-jar-with-dependencies.jar");
+
+ String baseMsg = "{\"UPPERCASE\":\"{\\\"customerCurrency\\\":\\\"CNY\\\"}\",\"otherNode\":\"otherNode1\"}";
+ String testMsg = "{\"UPPERCASE\":\"{\\\"customerCurrency\\\":\\\"USD\\\"}\",\"otherNode\":\"otherNode2\"}";
+
+ CompareOptions options = new CompareOptions();
+
+ CompareResult result = compareSDK.compare(baseMsg, testMsg, options);
+ Assertions.assertEquals(2, result.getLogs().size());
+ Assertions.assertEquals(2, result.getLogs().get(0).getPathPair().getLeftUnmatchedPath().size());
+ Assertions.assertEquals(2,
+ result.getLogs().get(0).getPathPair().getRightUnmatchedPath().size());
+ Assertions.assertEquals("CNY", result.getLogs().get(0).getBaseValue());
+ Assertions.assertEquals("USD", result.getLogs().get(0).getTestValue());
+ }
+
+
+ @Test
+ public void testScriptCompare5() throws Exception {
+ CompareSDK compareSDK = new CompareSDK();
+ compareSDK.getGlobalOptions()
+ .putNameToLower(true)
+ .putNullEqualsEmpty(true)
+ .putPluginJarUrl("./lib/arex-compare-sdk-plugin-0.1.0-jar-with-dependencies.jar");
+
+ String baseMsg = "{\"root\":{\"UPPERCASE\":\"{\\\"customerCurrency\\\":\\\"CNY\\\"}\",\"otherNode\":\"otherNode1\"}}";
+ String testMsg = "{\"root\":{\"UPPERCASE\":\"{\\\"customerCurrency\\\":\\\"USD\\\"}\",\"otherNode\":\"otherNode2\"}}";
+
+ CompareOptions options = new CompareOptions();
+
+ CompareResult result = compareSDK.compare(baseMsg, testMsg, options);
+ Assertions.assertEquals(2, result.getParseNodePaths().get("root.uppercase").size());
+ Assertions.assertEquals("{\"customerCurrency\":\"CNY\"}", result.getParseNodePaths().get("root.uppercase").get(0));
+ }
+
}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 6db61ed..3a7b27e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
com.arextest
arex-compare-parent
pom
- 0.2.18
+ 0.2.19
arex-compare-extension
arex-compare-core