You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by jo...@apache.org on 2019/04/03 20:12:22 UTC
[nifi] 04/17: NIFI-6127: Fixed NPE in match() and find() EL
functions when attribute doesn't exist
This is an automated email from the ASF dual-hosted git repository.
joewitt pushed a commit to branch NIFI-6169-RC2
in repository https://gitbox.apache.org/repos/asf/nifi.git
commit 5231bf3a72b8c46e5091f40ed4b6727c360dddf6
Author: Matthew Burgess <ma...@apache.org>
AuthorDate: Tue Mar 19 14:03:57 2019 -0400
NIFI-6127: Fixed NPE in match() and find() EL functions when attribute doesn't exist
This closes #3378.
Signed-off-by: Koji Kawamura <ij...@apache.org>
---
.../expression/language/evaluation/functions/FindEvaluator.java | 6 +++++-
.../expression/language/evaluation/functions/MatchesEvaluator.java | 6 +++++-
.../org/apache/nifi/attribute/expression/language/TestQuery.java | 6 ++++++
3 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/FindEvaluator.java b/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/FindEvaluator.java
index 2a3f1ae..fa2aaf5 100644
--- a/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/FindEvaluator.java
+++ b/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/FindEvaluator.java
@@ -53,7 +53,11 @@ public class FindEvaluator extends BooleanEvaluator {
}
final Pattern pattern;
if (compiledPattern == null) {
- pattern = Pattern.compile(search.evaluate(attributes).getValue());
+ String expression = search.evaluate(attributes).getValue();
+ if (expression == null) {
+ return new BooleanQueryResult(false);
+ }
+ pattern = Pattern.compile(expression);
} else {
pattern = compiledPattern;
}
diff --git a/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/MatchesEvaluator.java b/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/MatchesEvaluator.java
index 6f017ea..d238938 100644
--- a/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/MatchesEvaluator.java
+++ b/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/MatchesEvaluator.java
@@ -53,7 +53,11 @@ public class MatchesEvaluator extends BooleanEvaluator {
}
final Pattern pattern;
if (compiledPattern == null) {
- pattern = Pattern.compile(search.evaluate(attributes).getValue());
+ String expression = search.evaluate(attributes).getValue();
+ if (expression == null) {
+ return new BooleanQueryResult(false);
+ }
+ pattern = Pattern.compile(expression);
} else {
pattern = compiledPattern;
}
diff --git a/nifi-commons/nifi-expression-language/src/test/java/org/apache/nifi/attribute/expression/language/TestQuery.java b/nifi-commons/nifi-expression-language/src/test/java/org/apache/nifi/attribute/expression/language/TestQuery.java
index 67e5b51..1c679a4 100644
--- a/nifi-commons/nifi-expression-language/src/test/java/org/apache/nifi/attribute/expression/language/TestQuery.java
+++ b/nifi-commons/nifi-expression-language/src/test/java/org/apache/nifi/attribute/expression/language/TestQuery.java
@@ -1324,6 +1324,9 @@ public class TestQuery {
assertEquals("false", secondEvaluation);
verifyEquals("${dotted:matches('abc\\.xyz')}", attributes, true);
+
+ // Test for matches(null)
+ assertEquals("false", Query.evaluateExpressions("${abc:matches(${not.here})}", attributes, null));
}
@Test
@@ -1344,6 +1347,9 @@ public class TestQuery {
assertEquals("false", secondEvaluation);
verifyEquals("${dotted:find('\\.')}", attributes, true);
+
+ // Test for find(null)
+ assertEquals("false", Query.evaluateExpressions("${abc:find(${not.here})}", attributes, null));
}
@Test