Skip to content

Commit 4202772

Browse files
committed
toBoolean NPE when called with [null] #66
1 parent 807b771 commit 4202772

2 files changed

Lines changed: 12 additions & 1 deletion

File tree

src/main/java/com/dashjoin/jsonata/Functions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1477,7 +1477,7 @@ public static Boolean toBoolean(Object arg) {
14771477
if (arg instanceof List) {
14781478
List l = (List)arg;
14791479
if (l.size() == 1) {
1480-
result = toBoolean(l.get(0));
1480+
result = Boolean.TRUE.equals(toBoolean(l.get(0)));
14811481
} else if (l.size() > 1) {
14821482
long truesLength = l.stream().filter(e -> Jsonata.boolize(e)).count();
14831483
result = truesLength > 0;

src/test/java/com/dashjoin/jsonata/NullSafetyTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.dashjoin.jsonata;
22

33
import static com.dashjoin.jsonata.Jsonata.jsonata;
4+
import java.util.ArrayList;
45
import java.util.Arrays;
6+
import java.util.List;
57
import java.util.Map;
68
import org.junit.jupiter.api.Assertions;
79
import org.junit.jupiter.api.Test;
@@ -49,6 +51,15 @@ public void testNotNull() {
4951
Assertions.assertNull(Jsonata.jsonata("$not($)").evaluate(null));
5052
}
5153

54+
@Test
55+
public void testArrayContainingNull() {
56+
List<String> list = new ArrayList<>();
57+
list.add(null);
58+
Assertions.assertFalse((boolean)jsonata("$ ? true : false").evaluate(list));
59+
list.add("test");
60+
Assertions.assertTrue((boolean)jsonata("$ ? true : false").evaluate(list));
61+
}
62+
5263
@Test
5364
public void testSingleNull() {
5465
var x = Jsonata.jsonata("$single($, function($v, $i, $a){ $v })").evaluate(Arrays.asList(null, 1));

0 commit comments

Comments
 (0)