From 3338b067ffd9282d13e6bc4f090de24c76e91027 Mon Sep 17 00:00:00 2001 From: Andreas Eberhart Date: Sat, 18 Oct 2025 10:38:36 +0200 Subject: [PATCH] fix #67 avoid tupleBindings to be empty --- src/main/java/com/dashjoin/jsonata/Jsonata.java | 2 +- src/main/java/com/dashjoin/jsonata/Utils.java | 12 +++++++++++- src/test/java/com/dashjoin/jsonata/ArrayTest.java | 1 - 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/dashjoin/jsonata/Jsonata.java b/src/main/java/com/dashjoin/jsonata/Jsonata.java index 8c05661..9a7201a 100644 --- a/src/main/java/com/dashjoin/jsonata/Jsonata.java +++ b/src/main/java/com/dashjoin/jsonata/Jsonata.java @@ -432,7 +432,7 @@ Frame createFrameFromTuple(Frame environment, Map tuple) { ((JList)result).tupleStream = true; var stepEnv = environment; if(tupleBindings == null) { - tupleBindings = (List) input.stream().filter(item -> item!=null).map(item -> Map.of("@", item)).collect(Collectors.toList()); + tupleBindings = (List) input.stream().map(item -> Utils.mapOf("@", item)).collect(Collectors.toList()); } for(var ee = 0; ee < tupleBindings.size(); ee++) { diff --git a/src/main/java/com/dashjoin/jsonata/Utils.java b/src/main/java/com/dashjoin/jsonata/Utils.java index 60bd81c..5443290 100644 --- a/src/main/java/com/dashjoin/jsonata/Utils.java +++ b/src/main/java/com/dashjoin/jsonata/Utils.java @@ -20,6 +20,7 @@ import java.util.AbstractList; import java.util.ArrayList; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -268,5 +269,14 @@ public static void quote(String string, StringBuilder w) { } } } - } + } + + /** + * version of Map.of(key, value) that allows value to be null + */ + static Map mapOf(String key, Object value) { + Map map = new HashMap<>(); + map.put(key, value); + return map; + } } diff --git a/src/test/java/com/dashjoin/jsonata/ArrayTest.java b/src/test/java/com/dashjoin/jsonata/ArrayTest.java index 2df319b..59877e3 100644 --- a/src/test/java/com/dashjoin/jsonata/ArrayTest.java +++ b/src/test/java/com/dashjoin/jsonata/ArrayTest.java @@ -29,7 +29,6 @@ public void filterTest() { Assertions.assertNotNull(expr.evaluate(Map.of("variable", Map.of("field", "1")))); } - @Disabled @Test public void testIndex() { Jsonata expr = jsonata("($x:=['a','b']; $x#$i.$i)");