From 62b3d54f0cefa3fa254fecdae269f5002683231e Mon Sep 17 00:00:00 2001 From: Advaitva Gupta <43316329+Advaitva@users.noreply.github.com> Date: Tue, 21 Oct 2025 15:29:19 +0530 Subject: [PATCH 1/2] Fix index increment in Signature validation Due to the fixed index (index = 0), always the first capturing group is selected. This was creating a problem when the signature had different types parameters. --- src/main/java/com/dashjoin/jsonata/utils/Signature.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/dashjoin/jsonata/utils/Signature.java b/src/main/java/com/dashjoin/jsonata/utils/Signature.java index 29e50f5..efd286c 100644 --- a/src/main/java/com/dashjoin/jsonata/utils/Signature.java +++ b/src/main/java/com/dashjoin/jsonata/utils/Signature.java @@ -391,6 +391,7 @@ public Object validate(Object _args, Object context) { } } } + index++; } return validatedArgs; } From d7fa65a31ccd4cc408b89359bcec964fbf7e09c5 Mon Sep 17 00:00:00 2001 From: Advaitva Gupta Date: Fri, 24 Oct 2025 17:25:21 +0530 Subject: [PATCH 2/2] Unit test proving signature calculation issue --- .../java/com/dashjoin/jsonata/SignatureTest.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/test/java/com/dashjoin/jsonata/SignatureTest.java b/src/test/java/com/dashjoin/jsonata/SignatureTest.java index a872508..12454a6 100644 --- a/src/test/java/com/dashjoin/jsonata/SignatureTest.java +++ b/src/test/java/com/dashjoin/jsonata/SignatureTest.java @@ -55,4 +55,17 @@ public Object call(Object input, List args) throws Throwable { }, "")); Assertions.assertEquals(6, expression.evaluate(null)); } + + @Test + public void testVarArgMany(){ + Jsonata expr = jsonata("$customArgs('test',[1,2,3,4],3)"); + expr.registerFunction("customArgs", new JFunction(new JFunctionCallable() { + + @Override + public Object call(Object input, @SuppressWarnings("rawtypes") List args) throws Throwable { + return args.toString(); + } + }, "n:s>")); + Assertions.assertEquals("[test, [1, 2, 3, 4], 3]", expr.evaluate(null)); + } }