From 50d1773f77f490748acd162630b28db8bfc4003f Mon Sep 17 00:00:00 2001 From: Gio Gutierrez Date: Fri, 31 May 2024 21:35:05 -0500 Subject: [PATCH] feat: Fix multiple nested calls --- .../com/jayway/jsonpath/internal/path/PathCompiler.java | 6 +----- .../jsonpath/internal/function/NestedFunctionTest.java | 8 ++++++++ 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/path/PathCompiler.java b/json-path/src/main/java/com/jayway/jsonpath/internal/path/PathCompiler.java index 27b6e063..40e75c28 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/internal/path/PathCompiler.java +++ b/json-path/src/main/java/com/jayway/jsonpath/internal/path/PathCompiler.java @@ -349,15 +349,11 @@ public class PathCompiler { // we've encountered a COMMA do the same case CLOSE_PARENTHESIS: groupParen--; - //CS304 Issue link: https://github.com/json-path/JsonPath/issues/620 - if (0 > groupParen || priorChar == '(') { - parameter.append(c); - } case COMMA: // In this state we've reach the end of a function parameter and we can pass along the parameter string // to the parser if ((0 == groupQuote && 0 == groupBrace && 0 == groupBracket - && ((0 == groupParen && CLOSE_PARENTHESIS == c) || 1 == groupParen))) { + && ((0 == groupParen && CLOSE_PARENTHESIS == c) || (1 == groupParen && c == COMMA)))) { endOfStream = (0 == groupParen); if (null != type) { diff --git a/json-path/src/test/java/com/jayway/jsonpath/internal/function/NestedFunctionTest.java b/json-path/src/test/java/com/jayway/jsonpath/internal/function/NestedFunctionTest.java index 36faf656..0b7695bc 100644 --- a/json-path/src/test/java/com/jayway/jsonpath/internal/function/NestedFunctionTest.java +++ b/json-path/src/test/java/com/jayway/jsonpath/internal/function/NestedFunctionTest.java @@ -73,6 +73,14 @@ public class NestedFunctionTest extends BaseFunctionTest { } + @ParameterizedTest + @MethodSource("configurations") + public void testMultipleCall(Configuration conf) { + verifyTextFunction(conf, "$.concat($.text[0], $.concat( $.concat($.text[3], \"-1\"), $.concat($.text[4], \"-1\")))", "ad-1e-1"); + } + + + @ParameterizedTest @MethodSource("configurations") public void testStringAndNumberConcat(Configuration conf) {