Skip to content

Commit

Permalink
Update string type conversions in lists
Browse files Browse the repository at this point in the history
  • Loading branch information
SasinduDilshara committed Mar 27, 2024
1 parent 4f3b6d5 commit b4cce5c
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 4 deletions.
78 changes: 78 additions & 0 deletions ballerina/tests/jsonpath_complex_tests.bal
Original file line number Diff line number Diff line change
Expand Up @@ -725,6 +725,84 @@ function testListOperations() returns error? {

result = check read(j4, `$.a2[1][?(@.a1 in ['string', 'string2'])]`);
test:assertEquals(result, <json[]>[]);

result = check read(j4, `$.a1[0][?(@.a1 in [${d1}, 3.21])]`);
test:assertEquals(result, <json[]>[decimalJson]);

result = check read(j4, `$.a1[0][?(@.a2 in [${d1}, 3.21])]`);
test:assertEquals(result, <json[]>[]);

result = check read(j4, `$.a1[0][?(@.a1 nin [${d1}, 3.21])]`);
test:assertEquals(result, <json[]>[]);

result = check read(j4, `$.a1[0][?(@.a2 nin [${d1}, 3.21])]`);
test:assertEquals(result, <json[]>[decimalJson]);

result = check read(j4, `$.a1[1][?(@.a1 in [${i1}, 3.21])]`);
test:assertEquals(result, <json[]>[intJson]);

result = check read(j4, `$.a1[1][?(@.a2 in [${i1}, 3.21])]`);
test:assertEquals(result, <json[]>[]);

result = check read(j4, `$.a1[1][?(@.a1 nin [${i1}, 3.21])]`);
test:assertEquals(result, <json[]>[]);

result = check read(j4, `$.a1[1][?(@.a2 nin [${i1}, 3.21])]`);
test:assertEquals(result, <json[]>[intJson]);

result = check read(j4, `$.a1[2][?(@.a1 in [${f1}, 3.21])]`);
test:assertEquals(result, <json[]>[floatJson]);

result = check read(j4, `$.a1[2][?(@.a2 in [${f1}, 3.21])]`);
test:assertEquals(result, <json[]>[]);

result = check read(j4, `$.a1[2][?(@.a1 nin [${f1}, 3.21])]`);
test:assertEquals(result, <json[]>[]);

result = check read(j4, `$.a1[2][?(@.a2 nin [${f1}, 3.21])]`);
test:assertEquals(result, <json[]>[floatJson]);

result = check read(j4, `$.a2[0][?(@.a1 in [1.12, null])]`);
test:assertEquals(result, <json[]>[nilJson]);

result = check read(j4, `$.a2[0][?(@.a4 in [12.25, null, 3.21])]`);
test:assertEquals(result, <json[]>[]);

result = check read(j4, `$.a2[0][?(@.a1 nin [3.21, null])]`);
test:assertEquals(result, <json[]>[]);

result = check read(j4, `$.a2[0][?(@.a2 nin [1.2, 3.21])]`);
test:assertEquals(result, <json[]>[nilJson]);

result = check read(j4, `$.a2[0][?(@.a2 nin [])]`);
test:assertEquals(result, <json[]>[nilJson]);

result = check read(j4, `$.a2[0][?(@.a2 nin [])]`);
test:assertEquals(result, <json[]>[nilJson]);

result = check read(j4, `$.a2[1][?(@.a1 in [1.12, '${s1}'])]`);
test:assertEquals(result, <json[]>[stringJson]);

result = check read(j4, `$.a2[1][?(@.a2 in [12.25, ${s1}, 3.21])]`);
test:assertEquals(result, <json[]>[]);

result = check read(j4, `$.a2[1][?(@.a1 nin [3.21, '${s1}'])]`);
test:assertEquals(result, <json[]>[]);

result = check read(j4, `$.a2[1][?(@.a2 nin ['${s1}', 3.21])]`);
test:assertEquals(result, <json[]>[stringJson]);

result = check read(j4, `$.a2[2][?(@.a1 in [1.12, ${b1}])]`);
test:assertEquals(result, <json[]>[booleanJson]);

result = check read(j4, `$.a2[2][?(@.a2 in [12.25, ${b1}, 3.21])]`);
test:assertEquals(result, <json[]>[]);

result = check read(j4, `$.a2[2][?(@.a1 nin [3.21, ${b1}])]`);
test:assertEquals(result, <json[]>[]);

result = check read(j4, `$.a2[2][?(@.a2 nin [${b1}, 3.21])]`);
test:assertEquals(result, <json[]>[booleanJson]);
}

@test:Config {}
Expand Down
2 changes: 1 addition & 1 deletion build-config/resources/Ballerina.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ authors = ["Ballerina"]
keywords = ["json", "json path", "json-transform", "json transform", "json to json", "json-convert", "json convert"]
repository = "https://github.com/ballerina-platform/module-ballerina-data.jsondata"
license = ["Apache-2.0"]
distribution = "2201.8.4"
distribution = "2201.9.0-20240326-110600-aca0cc0c"
export = ["data.jsondata"]

[platform.java17]
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
org.gradle.caching=true
group=io.ballerina.stdlib
version=0.1.0-SNAPSHOT
ballerinaLangVersion=2201.8.4
ballerinaLangVersion=2201.9.0-20240326-110600-aca0cc0c

checkstyleToolVersion=10.12.0
puppycrawlCheckstyleVersion=10.12.0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,6 @@ public Object unwrap(Object obj) {
} else if (isArray(obj)) {
targetType = PredefinedTypes.TYPE_JSON_ARRAY;
} else if (obj instanceof BString) {
obj = StringUtils.getStringValue(obj);
targetType = PredefinedTypes.TYPE_STRING;
} else if (obj instanceof BDecimal) {
targetType = PredefinedTypes.TYPE_FLOAT;
Expand All @@ -235,7 +234,13 @@ public Object unwrap(Object obj) {
} else {
targetType = PredefinedTypes.TYPE_ANY;

Check warning on line 235 in native/src/main/java/io/ballerina/lib/data/jsonpath/BJsonProvider.java

View check run for this annotation

Codecov / codecov/patch

native/src/main/java/io/ballerina/lib/data/jsonpath/BJsonProvider.java#L235

Added line #L235 was not covered by tests
}
return JsonUtils.convertJSON(obj, targetType);
Object jsonValue = JsonUtils.convertJSON(obj, targetType);
if (jsonValue instanceof BString) {
return StringUtils.getStringValue(jsonValue);
} else if (jsonValue instanceof BDecimal) {
return ((BDecimal) jsonValue).decimalValue();

Check warning on line 241 in native/src/main/java/io/ballerina/lib/data/jsonpath/BJsonProvider.java

View check run for this annotation

Codecov / codecov/patch

native/src/main/java/io/ballerina/lib/data/jsonpath/BJsonProvider.java#L241

Added line #L241 was not covered by tests
}
return jsonValue;
}

private boolean isJsonPrimitive(Object obj) {
Expand Down

0 comments on commit b4cce5c

Please sign in to comment.