You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by bb...@apache.org on 2020/08/12 15:27:46 UTC

[nifi] branch main updated: NIFI-7732: When encountering the end of an Expression Language Expression in the ELAwareParameterParser, ensure that we reset 'oddDollarCount' variable back to false

This is an automated email from the ASF dual-hosted git repository.

bbende pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/main by this push:
     new 9e1e17d  NIFI-7732: When encountering the end of an Expression Language Expression in the ELAwareParameterParser, ensure that we reset 'oddDollarCount' variable back to false
9e1e17d is described below

commit 9e1e17d3f372cdb2ed3bc100a2e960faa179f159
Author: Mark Payne <ma...@hotmail.com>
AuthorDate: Wed Aug 12 10:36:14 2020 -0400

    NIFI-7732: When encountering the end of an Expression Language Expression in the ELAwareParameterParser, ensure that we reset 'oddDollarCount' variable back to false
---
 .../ExpressionLanguageAwareParameterParser.java    |  2 +-
 ...tExpressionLanguageAgnosticParameterParser.java | 31 ++++++++++++++++++++++
 ...TestExpressionLanguageAwareParameterParser.java | 15 +++++++++++
 3 files changed, 47 insertions(+), 1 deletion(-)

diff --git a/nifi-commons/nifi-parameter/src/main/java/org/apache/nifi/parameter/ExpressionLanguageAwareParameterParser.java b/nifi-commons/nifi-parameter/src/main/java/org/apache/nifi/parameter/ExpressionLanguageAwareParameterParser.java
index 9857628..b5d22ab 100644
--- a/nifi-commons/nifi-parameter/src/main/java/org/apache/nifi/parameter/ExpressionLanguageAwareParameterParser.java
+++ b/nifi-commons/nifi-parameter/src/main/java/org/apache/nifi/parameter/ExpressionLanguageAwareParameterParser.java
@@ -69,7 +69,6 @@ public class ExpressionLanguageAwareParameterParser extends AbstractParameterPar
                         continue;
                     }
 
-
                     if (sequentialStartTags > 0) {
                         final ParameterToken token = parseParameterToken(input, i, sequentialStartTags, tokens);
 
@@ -87,6 +86,7 @@ public class ExpressionLanguageAwareParameterParser extends AbstractParameterPar
 
                     if (--embeddedElCount == 0) {
                         expressionStart = -1;
+                        oddDollarCount = false;
                     }
                     break;
                 case DOLLAR_SIGN:
diff --git a/nifi-commons/nifi-parameter/src/test/java/org/apache/nifi/parameter/TestExpressionLanguageAgnosticParameterParser.java b/nifi-commons/nifi-parameter/src/test/java/org/apache/nifi/parameter/TestExpressionLanguageAgnosticParameterParser.java
index f129c5a..c0c7213 100644
--- a/nifi-commons/nifi-parameter/src/test/java/org/apache/nifi/parameter/TestExpressionLanguageAgnosticParameterParser.java
+++ b/nifi-commons/nifi-parameter/src/test/java/org/apache/nifi/parameter/TestExpressionLanguageAgnosticParameterParser.java
@@ -187,4 +187,35 @@ public class TestExpressionLanguageAgnosticParameterParser {
             assertEquals("hello", ((ParameterReference) token).getParameterName());
         }
     }
+
+    @Test
+    public void testMultipleReferencesDifferentExpressions() {
+        final ParameterParser parameterParser = new ExpressionLanguageAgnosticParameterParser();
+        final List<ParameterToken> tokens = parameterParser.parseTokens("${#{hello}}${#{there}}").toList();
+        assertEquals(2, tokens.size());
+
+        final ParameterToken firstToken = tokens.get(0);
+        assertTrue(firstToken.isParameterReference());
+        assertEquals("hello", ((ParameterReference) firstToken).getParameterName());
+
+        final ParameterToken secondToken = tokens.get(1);
+        assertTrue(secondToken.isParameterReference());
+        assertEquals("there", ((ParameterReference) secondToken).getParameterName());
+    }
+
+    @Test
+    public void testMultipleReferencesSameExpression() {
+        final ParameterParser parameterParser = new ExpressionLanguageAgnosticParameterParser();
+        final List<ParameterToken> tokens = parameterParser.parseTokens("${#{hello}:append(#{there})}").toList();
+        assertEquals(2, tokens.size());
+
+        final ParameterToken firstToken = tokens.get(0);
+        assertTrue(firstToken.isParameterReference());
+        assertEquals("hello", ((ParameterReference) firstToken).getParameterName());
+
+        final ParameterToken secondToken = tokens.get(1);
+        assertTrue(secondToken.isParameterReference());
+        assertEquals("there", ((ParameterReference) secondToken).getParameterName());
+    }
+
 }
diff --git a/nifi-commons/nifi-parameter/src/test/java/org/apache/nifi/parameter/TestExpressionLanguageAwareParameterParser.java b/nifi-commons/nifi-parameter/src/test/java/org/apache/nifi/parameter/TestExpressionLanguageAwareParameterParser.java
index d4cf058..c91f38a 100644
--- a/nifi-commons/nifi-parameter/src/test/java/org/apache/nifi/parameter/TestExpressionLanguageAwareParameterParser.java
+++ b/nifi-commons/nifi-parameter/src/test/java/org/apache/nifi/parameter/TestExpressionLanguageAwareParameterParser.java
@@ -198,4 +198,19 @@ public class TestExpressionLanguageAwareParameterParser {
             assertEquals("hello", ((ParameterReference) token).getParameterName());
         }
     }
+
+    @Test
+    public void testMultipleReferencesDifferentExpressions() {
+        final ParameterParser parameterParser = new ExpressionLanguageAwareParameterParser();
+        final List<ParameterToken> tokens = parameterParser.parseTokens("${#{hello}}${#{there}}").toList();
+        assertEquals(0, tokens.size());
+    }
+
+    @Test
+    public void testMultipleReferencesSameExpression() {
+        final ParameterParser parameterParser = new ExpressionLanguageAwareParameterParser();
+        final List<ParameterToken> tokens = parameterParser.parseTokens("${#{hello}:append(#{there})}").toList();
+        assertEquals(0, tokens.size());
+    }
+
 }