From 9a6061a5bbf2db3054252a1bb93c5e1d851d9130 Mon Sep 17 00:00:00 2001 From: Andreas Eberhart Date: Sat, 18 Oct 2025 08:16:55 +0200 Subject: [PATCH] fix wildcard handling JList is initialized with 0 or 1 arguments. The original is this: if (arguments.length === 1) { sequence.push(arguments[0]); } If an argument is passed, it is added. The new code mimics this. The second issue is in the wildard handling. In the list case, arrays need to be flattended. The issue comes from the unnecessary handling of maps. Like scalar types, those simply need to be added to the result --- src/main/java/com/dashjoin/jsonata/Jsonata.java | 3 --- src/main/java/com/dashjoin/jsonata/Utils.java | 6 +----- src/test/java/com/dashjoin/jsonata/ArrayTest.java | 2 -- 3 files changed, 1 insertion(+), 10 deletions(-) diff --git a/src/main/java/com/dashjoin/jsonata/Jsonata.java b/src/main/java/com/dashjoin/jsonata/Jsonata.java index 8c05661..b3c77f0 100644 --- a/src/main/java/com/dashjoin/jsonata/Jsonata.java +++ b/src/main/java/com/dashjoin/jsonata/Jsonata.java @@ -723,9 +723,6 @@ Object evaluateWildcard(Symbol expr, Object input) { if((value instanceof List)) { value = flatten(value, null); results = (List)Functions.append(results, value); - } else if (value instanceof Map) { - // Call recursively do decompose the map - results.addAll((List)evaluateWildcard(expr, value)); } else { results.add(value); } diff --git a/src/main/java/com/dashjoin/jsonata/Utils.java b/src/main/java/com/dashjoin/jsonata/Utils.java index 60bd81c..5818f8d 100644 --- a/src/main/java/com/dashjoin/jsonata/Utils.java +++ b/src/main/java/com/dashjoin/jsonata/Utils.java @@ -79,11 +79,7 @@ public static List createSequence(Object el) { JList sequence = new JList<>(); sequence.sequence = true; if (el!=NONE) { - if (el instanceof List && ((List)el).size()==1) - sequence.add(((List)el).get(0)); - else - // This case does NOT exist in Javascript! Why? - sequence.add(el); + sequence.add(el); } return sequence; } diff --git a/src/test/java/com/dashjoin/jsonata/ArrayTest.java b/src/test/java/com/dashjoin/jsonata/ArrayTest.java index 2df319b..b5c8749 100644 --- a/src/test/java/com/dashjoin/jsonata/ArrayTest.java +++ b/src/test/java/com/dashjoin/jsonata/ArrayTest.java @@ -49,14 +49,12 @@ public void testSortNull() { Assertions.assertEquals(Arrays.asList(Map.of("x", 2), Map.of("x", 1)), expr.evaluate(null)); } - @Disabled @Test public void testWildcard() { Jsonata expr = jsonata("*"); Assertions.assertEquals(Map.of("x", 1), expr.evaluate(List.of(Map.of("x", 1)))); } - @Disabled @Test public void testWildcardFilter() { Object value1 = Map.of("value", Map.of("Name", "Cell1", "Product", "Product1"));