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());
+ }
+
}