Repository: incubator-nifi Updated Branches: refs/heads/develop 0f01b3c96 -> c4c98fc4a
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/PlusEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/PlusEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/PlusEvaluator.java index dff693d..7c9278f 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/PlusEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/PlusEvaluator.java @@ -25,10 +25,10 @@ import org.apache.nifi.attribute.expression.language.evaluation.QueryResult; public class PlusEvaluator extends NumberEvaluator { - private final NumberEvaluator subject; - private final NumberEvaluator plusValue; + private final Evaluator<Long> subject; + private final Evaluator<Long> plusValue; - public PlusEvaluator(final NumberEvaluator subject, final NumberEvaluator plusValue) { + public PlusEvaluator(final Evaluator<Long> subject, final Evaluator<Long> plusValue) { this.subject = subject; this.plusValue = plusValue; } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/PrependEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/PrependEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/PrependEvaluator.java index 5b66b8f..1053328 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/PrependEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/PrependEvaluator.java @@ -25,10 +25,10 @@ import org.apache.nifi.attribute.expression.language.evaluation.StringQueryResul public class PrependEvaluator extends StringEvaluator { - private final StringEvaluator subject; - private final StringEvaluator prependEvaluator; + private final Evaluator<String> subject; + private final Evaluator<String> prependEvaluator; - public PrependEvaluator(final StringEvaluator subject, final StringEvaluator prepend) { + public PrependEvaluator(final Evaluator<String> subject, final Evaluator<String> prepend) { this.subject = subject; this.prependEvaluator = prepend; } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ReplaceAllEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ReplaceAllEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ReplaceAllEvaluator.java index 19ed63e..b796233 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ReplaceAllEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ReplaceAllEvaluator.java @@ -25,11 +25,11 @@ import org.apache.nifi.attribute.expression.language.evaluation.StringQueryResul public class ReplaceAllEvaluator extends StringEvaluator { - private final StringEvaluator subject; - private final StringEvaluator search; - private final StringEvaluator replacement; + private final Evaluator<String> subject; + private final Evaluator<String> search; + private final Evaluator<String> replacement; - public ReplaceAllEvaluator(final StringEvaluator subject, final StringEvaluator search, final StringEvaluator replacement) { + public ReplaceAllEvaluator(final Evaluator<String> subject, final Evaluator<String> search, final Evaluator<String> replacement) { this.subject = subject; this.search = search; this.replacement = replacement; http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ReplaceEmptyEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ReplaceEmptyEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ReplaceEmptyEvaluator.java index fe08303..9c2cb6d 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ReplaceEmptyEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ReplaceEmptyEvaluator.java @@ -24,10 +24,10 @@ import org.apache.nifi.attribute.expression.language.evaluation.StringEvaluator; public class ReplaceEmptyEvaluator extends StringEvaluator { - private final StringEvaluator subjectEvaluator; - private final StringEvaluator replacementEvaluator; + private final Evaluator<String> subjectEvaluator; + private final Evaluator<String> replacementEvaluator; - public ReplaceEmptyEvaluator(final StringEvaluator subjectEvaluator, final StringEvaluator replacementEvaluator) { + public ReplaceEmptyEvaluator(final Evaluator<String> subjectEvaluator, final Evaluator<String> replacementEvaluator) { this.subjectEvaluator = subjectEvaluator; this.replacementEvaluator = replacementEvaluator; } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ReplaceEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ReplaceEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ReplaceEvaluator.java index d6a7c5b..e55e963 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ReplaceEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ReplaceEvaluator.java @@ -25,11 +25,11 @@ import org.apache.nifi.attribute.expression.language.evaluation.StringQueryResul public class ReplaceEvaluator extends StringEvaluator { - private final StringEvaluator subject; - private final StringEvaluator search; - private final StringEvaluator replacement; + private final Evaluator<String> subject; + private final Evaluator<String> search; + private final Evaluator<String> replacement; - public ReplaceEvaluator(final StringEvaluator subject, final StringEvaluator search, final StringEvaluator replacement) { + public ReplaceEvaluator(final Evaluator<String> subject, final Evaluator<String> search, final Evaluator<String> replacement) { this.subject = subject; this.search = search; this.replacement = replacement; http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ReplaceNullEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ReplaceNullEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ReplaceNullEvaluator.java index 91333b7..e8487c6 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ReplaceNullEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ReplaceNullEvaluator.java @@ -25,10 +25,10 @@ import org.apache.nifi.attribute.expression.language.evaluation.StringQueryResul public class ReplaceNullEvaluator extends StringEvaluator { - private final StringEvaluator subject; - private final StringEvaluator resultEvaluator; + private final Evaluator<String> subject; + private final Evaluator<String> resultEvaluator; - public ReplaceNullEvaluator(final StringEvaluator subject, final StringEvaluator resultEvaluator) { + public ReplaceNullEvaluator(final Evaluator<String> subject, final Evaluator<String> resultEvaluator) { this.subject = subject; this.resultEvaluator = resultEvaluator; } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/StartsWithEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/StartsWithEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/StartsWithEvaluator.java index c6a7eb7..6a43550 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/StartsWithEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/StartsWithEvaluator.java @@ -22,14 +22,13 @@ import org.apache.nifi.attribute.expression.language.evaluation.BooleanEvaluator import org.apache.nifi.attribute.expression.language.evaluation.BooleanQueryResult; import org.apache.nifi.attribute.expression.language.evaluation.Evaluator; import org.apache.nifi.attribute.expression.language.evaluation.QueryResult; -import org.apache.nifi.attribute.expression.language.evaluation.StringEvaluator; public class StartsWithEvaluator extends BooleanEvaluator { - private final StringEvaluator subject; - private final StringEvaluator search; + private final Evaluator<String> subject; + private final Evaluator<String> search; - public StartsWithEvaluator(final StringEvaluator subject, final StringEvaluator search) { + public StartsWithEvaluator(final Evaluator<String> subject, final Evaluator<String> search) { this.subject = subject; this.search = search; } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/StringToDateEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/StringToDateEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/StringToDateEvaluator.java index 1575d75..590176e 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/StringToDateEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/StringToDateEvaluator.java @@ -26,15 +26,14 @@ import org.apache.nifi.attribute.expression.language.evaluation.DateEvaluator; import org.apache.nifi.attribute.expression.language.evaluation.DateQueryResult; import org.apache.nifi.attribute.expression.language.evaluation.Evaluator; import org.apache.nifi.attribute.expression.language.evaluation.QueryResult; -import org.apache.nifi.attribute.expression.language.evaluation.StringEvaluator; import org.apache.nifi.attribute.expression.language.exception.IllegalAttributeException; public class StringToDateEvaluator extends DateEvaluator { - private final StringEvaluator subject; - private final StringEvaluator format; + private final Evaluator<String> subject; + private final Evaluator<String> format; - public StringToDateEvaluator(final StringEvaluator subject, final StringEvaluator format) { + public StringToDateEvaluator(final Evaluator<String> subject, final Evaluator<String> format) { this.subject = subject; this.format = format; } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/SubstringAfterEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/SubstringAfterEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/SubstringAfterEvaluator.java index a8b7357..6625cb6 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/SubstringAfterEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/SubstringAfterEvaluator.java @@ -25,10 +25,10 @@ import org.apache.nifi.attribute.expression.language.evaluation.StringQueryResul public class SubstringAfterEvaluator extends StringEvaluator { - private final StringEvaluator subject; - private final StringEvaluator afterEvaluator; + private final Evaluator<String> subject; + private final Evaluator<String> afterEvaluator; - public SubstringAfterEvaluator(final StringEvaluator subject, final StringEvaluator afterEvaluator) { + public SubstringAfterEvaluator(final Evaluator<String> subject, final Evaluator<String> afterEvaluator) { this.subject = subject; this.afterEvaluator = afterEvaluator; } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/SubstringAfterLastEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/SubstringAfterLastEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/SubstringAfterLastEvaluator.java index 3dac40e..2cc9c3c 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/SubstringAfterLastEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/SubstringAfterLastEvaluator.java @@ -25,10 +25,10 @@ import org.apache.nifi.attribute.expression.language.evaluation.StringQueryResul public class SubstringAfterLastEvaluator extends StringEvaluator { - private final StringEvaluator subject; - private final StringEvaluator afterEvaluator; + private final Evaluator<String> subject; + private final Evaluator<String> afterEvaluator; - public SubstringAfterLastEvaluator(final StringEvaluator subject, final StringEvaluator afterEvaluator) { + public SubstringAfterLastEvaluator(final Evaluator<String> subject, final Evaluator<String> afterEvaluator) { this.subject = subject; this.afterEvaluator = afterEvaluator; } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/SubstringBeforeEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/SubstringBeforeEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/SubstringBeforeEvaluator.java index 92b136c..4b8c3d0 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/SubstringBeforeEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/SubstringBeforeEvaluator.java @@ -25,10 +25,10 @@ import org.apache.nifi.attribute.expression.language.evaluation.StringQueryResul public class SubstringBeforeEvaluator extends StringEvaluator { - private final StringEvaluator subject; - private final StringEvaluator beforeEvaluator; + private final Evaluator<String> subject; + private final Evaluator<String> beforeEvaluator; - public SubstringBeforeEvaluator(final StringEvaluator subject, final StringEvaluator beforeEvaluator) { + public SubstringBeforeEvaluator(final Evaluator<String> subject, final Evaluator<String> beforeEvaluator) { this.subject = subject; this.beforeEvaluator = beforeEvaluator; } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/SubstringBeforeLastEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/SubstringBeforeLastEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/SubstringBeforeLastEvaluator.java index 818a3dc..14548c1 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/SubstringBeforeLastEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/SubstringBeforeLastEvaluator.java @@ -25,10 +25,10 @@ import org.apache.nifi.attribute.expression.language.evaluation.StringQueryResul public class SubstringBeforeLastEvaluator extends StringEvaluator { - private final StringEvaluator subject; - private final StringEvaluator beforeEvaluator; + private final Evaluator<String> subject; + private final Evaluator<String> beforeEvaluator; - public SubstringBeforeLastEvaluator(final StringEvaluator subject, final StringEvaluator beforeEvaluator) { + public SubstringBeforeLastEvaluator(final Evaluator<String> subject, final Evaluator<String> beforeEvaluator) { this.subject = subject; this.beforeEvaluator = beforeEvaluator; } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/SubstringEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/SubstringEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/SubstringEvaluator.java index da11c45..71b78f1 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/SubstringEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/SubstringEvaluator.java @@ -19,24 +19,23 @@ package org.apache.nifi.attribute.expression.language.evaluation.functions; import java.util.Map; import org.apache.nifi.attribute.expression.language.evaluation.Evaluator; -import org.apache.nifi.attribute.expression.language.evaluation.NumberEvaluator; import org.apache.nifi.attribute.expression.language.evaluation.QueryResult; import org.apache.nifi.attribute.expression.language.evaluation.StringEvaluator; import org.apache.nifi.attribute.expression.language.evaluation.StringQueryResult; public class SubstringEvaluator extends StringEvaluator { - private final StringEvaluator subject; - private final NumberEvaluator startIndex; - private final NumberEvaluator endIndex; + private final Evaluator<String> subject; + private final Evaluator<Long> startIndex; + private final Evaluator<Long> endIndex; - public SubstringEvaluator(final StringEvaluator subject, final NumberEvaluator startIndex, final NumberEvaluator endIndex) { + public SubstringEvaluator(final Evaluator<String> subject, final Evaluator<Long> startIndex, final Evaluator<Long> endIndex) { this.subject = subject; this.startIndex = startIndex; this.endIndex = endIndex; } - public SubstringEvaluator(final StringEvaluator subject, final NumberEvaluator startIndex) { + public SubstringEvaluator(final Evaluator<String> subject, final Evaluator<Long> startIndex) { this.subject = subject; this.startIndex = startIndex; this.endIndex = null; http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ToLowerEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ToLowerEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ToLowerEvaluator.java index 7de01eb..33175f8 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ToLowerEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ToLowerEvaluator.java @@ -25,16 +25,16 @@ import org.apache.nifi.attribute.expression.language.evaluation.StringQueryResul public class ToLowerEvaluator extends StringEvaluator { - private final StringEvaluator subject; + private final Evaluator<String> subject; - public ToLowerEvaluator(final StringEvaluator subject) { + public ToLowerEvaluator(final Evaluator<String> subject) { this.subject = subject; } @Override public QueryResult<String> evaluate(final Map<String, String> attributes) { final String subjectValue = subject.evaluate(attributes).getValue(); - return new StringQueryResult((subjectValue == null) ? null : subjectValue.toLowerCase()); + return new StringQueryResult(subjectValue == null ? null : subjectValue.toLowerCase()); } @Override http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ToNumberEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ToNumberEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ToNumberEvaluator.java index 1d4664a..736f0b9 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ToNumberEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ToNumberEvaluator.java @@ -22,20 +22,19 @@ import org.apache.nifi.attribute.expression.language.evaluation.Evaluator; import org.apache.nifi.attribute.expression.language.evaluation.NumberEvaluator; import org.apache.nifi.attribute.expression.language.evaluation.NumberQueryResult; import org.apache.nifi.attribute.expression.language.evaluation.QueryResult; -import org.apache.nifi.attribute.expression.language.evaluation.StringEvaluator; public class ToNumberEvaluator extends NumberEvaluator { - private final StringEvaluator subject; + private final Evaluator<String> subject; - public ToNumberEvaluator(final StringEvaluator subject) { + public ToNumberEvaluator(final Evaluator<String> subject) { this.subject = subject; } @Override public QueryResult<Long> evaluate(final Map<String, String> attributes) { final String subjectValue = subject.evaluate(attributes).getValue(); - return new NumberQueryResult((subjectValue == null || subjectValue.trim().isEmpty()) ? null : Long.valueOf(subjectValue)); + return new NumberQueryResult(subjectValue == null || subjectValue.trim().isEmpty() ? null : Long.valueOf(subjectValue)); } @Override http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ToRadixEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ToRadixEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ToRadixEvaluator.java index aab094d..1cf7e55 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ToRadixEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ToRadixEvaluator.java @@ -20,22 +20,21 @@ import java.util.Arrays; import java.util.Map; import org.apache.nifi.attribute.expression.language.evaluation.Evaluator; -import org.apache.nifi.attribute.expression.language.evaluation.NumberEvaluator; import org.apache.nifi.attribute.expression.language.evaluation.QueryResult; import org.apache.nifi.attribute.expression.language.evaluation.StringEvaluator; import org.apache.nifi.attribute.expression.language.evaluation.StringQueryResult; public class ToRadixEvaluator extends StringEvaluator { - private final NumberEvaluator numberEvaluator; - private final NumberEvaluator radixEvaluator; - private final NumberEvaluator minimumWidthEvaluator; + private final Evaluator<Long> numberEvaluator; + private final Evaluator<Long> radixEvaluator; + private final Evaluator<Long> minimumWidthEvaluator; - public ToRadixEvaluator(final NumberEvaluator subject, final NumberEvaluator radixEvaluator) { + public ToRadixEvaluator(final Evaluator<Long> subject, final Evaluator<Long> radixEvaluator) { this(subject, radixEvaluator, null); } - public ToRadixEvaluator(final NumberEvaluator subject, final NumberEvaluator radixEvaluator, final NumberEvaluator minimumWidthEvaluator) { + public ToRadixEvaluator(final Evaluator<Long> subject, final Evaluator<Long> radixEvaluator, final Evaluator<Long> minimumWidthEvaluator) { this.numberEvaluator = subject; this.radixEvaluator = radixEvaluator; this.minimumWidthEvaluator = minimumWidthEvaluator; http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ToUpperEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ToUpperEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ToUpperEvaluator.java index 29bc61d..f3174c2 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ToUpperEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/ToUpperEvaluator.java @@ -25,16 +25,16 @@ import org.apache.nifi.attribute.expression.language.evaluation.StringQueryResul public class ToUpperEvaluator extends StringEvaluator { - private final StringEvaluator subject; + private final Evaluator<String> subject; - public ToUpperEvaluator(final StringEvaluator subject) { + public ToUpperEvaluator(final Evaluator<String> subject) { this.subject = subject; } @Override public QueryResult<String> evaluate(final Map<String, String> attributes) { final String subjectValue = subject.evaluate(attributes).getValue(); - return new StringQueryResult((subjectValue == null) ? null : subjectValue.toUpperCase()); + return new StringQueryResult(subjectValue == null ? null : subjectValue.toUpperCase()); } @Override http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/TrimEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/TrimEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/TrimEvaluator.java index b9926d7..e44661f 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/TrimEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/TrimEvaluator.java @@ -25,9 +25,9 @@ import org.apache.nifi.attribute.expression.language.evaluation.StringQueryResul public class TrimEvaluator extends StringEvaluator { - private final StringEvaluator subject; + private final Evaluator<String> subject; - public TrimEvaluator(final StringEvaluator subject) { + public TrimEvaluator(final Evaluator<String> subject) { this.subject = subject; } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/UrlDecodeEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/UrlDecodeEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/UrlDecodeEvaluator.java index 6c3ba14..c61d55d 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/UrlDecodeEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/UrlDecodeEvaluator.java @@ -27,9 +27,9 @@ import org.apache.nifi.attribute.expression.language.evaluation.StringQueryResul public class UrlDecodeEvaluator extends StringEvaluator { - private final StringEvaluator subject; + private final Evaluator<String> subject; - public UrlDecodeEvaluator(final StringEvaluator subject) { + public UrlDecodeEvaluator(final Evaluator<String> subject) { this.subject = subject; } @@ -42,7 +42,7 @@ public class UrlDecodeEvaluator extends StringEvaluator { try { return new StringQueryResult(URLDecoder.decode(subjectValue, "UTF-8")); - } catch (UnsupportedEncodingException e) { + } catch (final UnsupportedEncodingException e) { return null; // won't happen. It's UTF-8 } } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/UrlEncodeEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/UrlEncodeEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/UrlEncodeEvaluator.java index d1e2caa..769f6df 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/UrlEncodeEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/UrlEncodeEvaluator.java @@ -27,9 +27,9 @@ import org.apache.nifi.attribute.expression.language.evaluation.StringQueryResul public class UrlEncodeEvaluator extends StringEvaluator { - private final StringEvaluator subject; + private final Evaluator<String> subject; - public UrlEncodeEvaluator(final StringEvaluator subject) { + public UrlEncodeEvaluator(final Evaluator<String> subject) { this.subject = subject; } @@ -42,7 +42,7 @@ public class UrlEncodeEvaluator extends StringEvaluator { try { return new StringQueryResult(URLEncoder.encode(subjectValue, "UTF-8")); - } catch (UnsupportedEncodingException e) { + } catch (final UnsupportedEncodingException e) { return null; // won't happen. It's UTF-8 } } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/literals/ToLiteralEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/literals/ToLiteralEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/literals/ToLiteralEvaluator.java new file mode 100644 index 0000000..e297eea --- /dev/null +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/literals/ToLiteralEvaluator.java @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.nifi.attribute.expression.language.evaluation.literals; + +import java.util.Map; + +import org.apache.nifi.attribute.expression.language.evaluation.Evaluator; +import org.apache.nifi.attribute.expression.language.evaluation.QueryResult; +import org.apache.nifi.attribute.expression.language.evaluation.StringEvaluator; +import org.apache.nifi.attribute.expression.language.evaluation.StringQueryResult; + +public class ToLiteralEvaluator extends StringEvaluator { + private final Evaluator<?> argEvaluator; + + public ToLiteralEvaluator(final Evaluator<?> argEvaluator) { + this.argEvaluator = argEvaluator; + } + + @Override + public QueryResult<String> evaluate(final Map<String, String> attributes) { + final Object result = argEvaluator.evaluate(attributes); + return new StringQueryResult(result == null ? null : result.toString()); + } + + @Override + public Evaluator<?> getSubjectEvaluator() { + return null; + } +} http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/reduce/JoinEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/reduce/JoinEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/reduce/JoinEvaluator.java index 81c325d..f80924b 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/reduce/JoinEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/reduce/JoinEvaluator.java @@ -25,13 +25,13 @@ import org.apache.nifi.attribute.expression.language.evaluation.StringQueryResul public class JoinEvaluator extends StringEvaluator implements ReduceEvaluator<String> { - private final StringEvaluator subjectEvaluator; - private final StringEvaluator delimiterEvaluator; + private final Evaluator<String> subjectEvaluator; + private final Evaluator<String> delimiterEvaluator; private final StringBuilder sb = new StringBuilder(); private int evalCount = 0; - public JoinEvaluator(final StringEvaluator subject, final StringEvaluator delimiter) { + public JoinEvaluator(final Evaluator<String> subject, final Evaluator<String> delimiter) { this.subjectEvaluator = subject; this.delimiterEvaluator = delimiter; } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/AllAttributesEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/AllAttributesEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/AllAttributesEvaluator.java index d9dd4d3..ccf9d19 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/AllAttributesEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/AllAttributesEvaluator.java @@ -23,7 +23,7 @@ import org.apache.nifi.attribute.expression.language.evaluation.BooleanQueryResu import org.apache.nifi.attribute.expression.language.evaluation.Evaluator; import org.apache.nifi.attribute.expression.language.evaluation.QueryResult; -public class AllAttributesEvaluator extends BooleanEvaluator { +public class AllAttributesEvaluator extends BooleanEvaluator implements IteratingEvaluator<Boolean> { private final BooleanEvaluator booleanEvaluator; private final MultiAttributeEvaluator multiAttributeEvaluator; @@ -65,4 +65,9 @@ public class AllAttributesEvaluator extends BooleanEvaluator { public Evaluator<?> getSubjectEvaluator() { return null; } + + @Override + public Evaluator<?> getLogicEvaluator() { + return booleanEvaluator; + } } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/AnyAttributeEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/AnyAttributeEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/AnyAttributeEvaluator.java index 9192958..6e8d485 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/AnyAttributeEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/AnyAttributeEvaluator.java @@ -23,7 +23,7 @@ import org.apache.nifi.attribute.expression.language.evaluation.BooleanQueryResu import org.apache.nifi.attribute.expression.language.evaluation.Evaluator; import org.apache.nifi.attribute.expression.language.evaluation.QueryResult; -public class AnyAttributeEvaluator extends BooleanEvaluator { +public class AnyAttributeEvaluator extends BooleanEvaluator implements IteratingEvaluator<Boolean> { private final BooleanEvaluator booleanEvaluator; private final MultiAttributeEvaluator multiAttributeEvaluator; @@ -65,4 +65,9 @@ public class AnyAttributeEvaluator extends BooleanEvaluator { public Evaluator<?> getSubjectEvaluator() { return null; } + + @Override + public Evaluator<Boolean> getLogicEvaluator() { + return booleanEvaluator; + } } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/AnyMatchingAttributeEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/AnyMatchingAttributeEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/AnyMatchingAttributeEvaluator.java deleted file mode 100644 index 8c07278..0000000 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/AnyMatchingAttributeEvaluator.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.nifi.attribute.expression.language.evaluation.selection; - -public class AnyMatchingAttributeEvaluator { - -} http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/DelineatedAttributeEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/DelineatedAttributeEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/DelineatedAttributeEvaluator.java index 209c86f..e39d01c 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/DelineatedAttributeEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/DelineatedAttributeEvaluator.java @@ -20,19 +20,18 @@ import java.util.Map; import org.apache.nifi.attribute.expression.language.evaluation.Evaluator; import org.apache.nifi.attribute.expression.language.evaluation.QueryResult; -import org.apache.nifi.attribute.expression.language.evaluation.StringEvaluator; import org.apache.nifi.attribute.expression.language.evaluation.StringQueryResult; public class DelineatedAttributeEvaluator extends MultiAttributeEvaluator { - private final StringEvaluator subjectEvaluator; - private final StringEvaluator delimiterEvaluator; + private final Evaluator<String> subjectEvaluator; + private final Evaluator<String> delimiterEvaluator; private final int evaluationType; private String[] delineatedValues; private int evaluationCount = 0; private int evaluationsLeft = 1; - public DelineatedAttributeEvaluator(final StringEvaluator subjectEvaluator, final StringEvaluator delimiterEvaluator, final int evaluationType) { + public DelineatedAttributeEvaluator(final Evaluator<String> subjectEvaluator, final Evaluator<String> delimiterEvaluator, final int evaluationType) { this.subjectEvaluator = subjectEvaluator; this.delimiterEvaluator = delimiterEvaluator; this.evaluationType = evaluationType; @@ -67,6 +66,11 @@ public class DelineatedAttributeEvaluator extends MultiAttributeEvaluator { } @Override + public Evaluator<?> getLogicEvaluator() { + return subjectEvaluator; + } + + @Override public int getEvaluationsRemaining() { return evaluationsLeft; } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/IteratingEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/IteratingEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/IteratingEvaluator.java new file mode 100644 index 0000000..5156345 --- /dev/null +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/IteratingEvaluator.java @@ -0,0 +1,33 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.nifi.attribute.expression.language.evaluation.selection; + +import org.apache.nifi.attribute.expression.language.evaluation.Evaluator; + +/** + * Interface for an Evaluator that should be evaluated multiple times + * + * @param <T> return type of evaluator + */ +public interface IteratingEvaluator<T> extends Evaluator<T> { + + /** + * @return the evaluator that evaluates some sort of logic against its subject + */ + Evaluator<?> getLogicEvaluator(); + +} http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/MappingEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/MappingEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/MappingEvaluator.java index 2b8c488..e007a56 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/MappingEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/MappingEvaluator.java @@ -24,9 +24,9 @@ import org.apache.nifi.attribute.expression.language.evaluation.reduce.ReduceEva import org.apache.nifi.expression.AttributeExpression.ResultType; public class MappingEvaluator<T> implements Evaluator<T> { - private final ReduceEvaluator<T> mappingEvaluator; private final MultiAttributeEvaluator multiAttributeEvaluator; + private String token; public MappingEvaluator(final ReduceEvaluator<T> mappingEvaluator, final MultiAttributeEvaluator multiAttributeEval) { this.mappingEvaluator = mappingEvaluator; @@ -59,4 +59,13 @@ public class MappingEvaluator<T> implements Evaluator<T> { return null; } + @Override + public String getToken() { + return token; + } + + @Override + public void setToken(final String token) { + this.token = token; + } } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/MultiAttributeEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/MultiAttributeEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/MultiAttributeEvaluator.java index f80ed97..78b5af4 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/MultiAttributeEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/MultiAttributeEvaluator.java @@ -18,7 +18,6 @@ package org.apache.nifi.attribute.expression.language.evaluation.selection; import org.apache.nifi.attribute.expression.language.evaluation.StringEvaluator; -public abstract class MultiAttributeEvaluator extends StringEvaluator { - +public abstract class MultiAttributeEvaluator extends StringEvaluator implements IteratingEvaluator<String> { public abstract int getEvaluationType(); } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/MultiMatchAttributeEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/MultiMatchAttributeEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/MultiMatchAttributeEvaluator.java index 1d0be8b..8292f84 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/MultiMatchAttributeEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/MultiMatchAttributeEvaluator.java @@ -79,4 +79,9 @@ public class MultiMatchAttributeEvaluator extends MultiAttributeEvaluator { public int getEvaluationType() { return evaluationType; } + + @Override + public Evaluator<?> getLogicEvaluator() { + return this; + } } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/MultiNamedAttributeEvaluator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/MultiNamedAttributeEvaluator.java b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/MultiNamedAttributeEvaluator.java index 6dabc0a..509d7dd 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/MultiNamedAttributeEvaluator.java +++ b/nifi/nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/selection/MultiNamedAttributeEvaluator.java @@ -61,4 +61,9 @@ public class MultiNamedAttributeEvaluator extends MultiAttributeEvaluator { public int getEvaluationType() { return evaluationType; } + + @Override + public Evaluator<?> getLogicEvaluator() { + return this; + } } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-commons/nifi-expression-language/src/test/java/org/apache/nifi/attribute/expression/language/TestQuery.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-expression-language/src/test/java/org/apache/nifi/attribute/expression/language/TestQuery.java b/nifi/nifi-commons/nifi-expression-language/src/test/java/org/apache/nifi/attribute/expression/language/TestQuery.java index f343261..131bcde 100644 --- a/nifi/nifi-commons/nifi-expression-language/src/test/java/org/apache/nifi/attribute/expression/language/TestQuery.java +++ b/nifi/nifi-commons/nifi-expression-language/src/test/java/org/apache/nifi/attribute/expression/language/TestQuery.java @@ -17,10 +17,12 @@ package org.apache.nifi.attribute.expression.language; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.text.SimpleDateFormat; import java.util.Calendar; +import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.HashSet; @@ -52,6 +54,8 @@ public class TestQuery { assertValid("${now():format('yyyy/MM/dd')}"); assertInvalid("${attr:times(3)}"); assertValid("${attr:toNumber():multiply(3)}"); + assertValid("${hostname()}"); + assertValid("${literal(3)}"); // left here because it's convenient for looking at the output //System.out.println(Query.compile("").evaluate(null)); } @@ -296,7 +300,7 @@ public class TestQuery { } private String evaluateQueryForEscape(final String queryString, final Map<String, String> attributes) { - FlowFile mockFlowFile = Mockito.mock(FlowFile.class); + final FlowFile mockFlowFile = Mockito.mock(FlowFile.class); Mockito.when(mockFlowFile.getAttributes()).thenReturn(attributes); Mockito.when(mockFlowFile.getId()).thenReturn(1L); Mockito.when(mockFlowFile.getEntryDate()).thenReturn(System.currentTimeMillis()); @@ -429,7 +433,7 @@ public class TestQuery { @Test public void testExtractExpressionTypes() { - List<ResultType> types = Query.extractResultTypes("${hello:equals( ${goodbye} )} or just hi, ${bob}, are you ${bob.age:toNumber()} yet? $$$${bob}"); + final List<ResultType> types = Query.extractResultTypes("${hello:equals( ${goodbye} )} or just hi, ${bob}, are you ${bob.age:toNumber()} yet? $$$${bob}"); assertEquals(3, types.size()); assertEquals(ResultType.BOOLEAN, types.get(0)); assertEquals(ResultType.STRING, types.get(1)); @@ -493,7 +497,7 @@ public class TestQuery { final Map<String, String> attributes = new HashMap<>(); attributes.put("xx", "say 'hi'"); - String query = "${xx:replace( \"'hi'\", '\\\"hello\\\"' )}"; + final String query = "${xx:replace( \"'hi'\", '\\\"hello\\\"' )}"; System.out.println(query); verifyEquals(query, attributes, "say \"hello\""); } @@ -1112,12 +1116,52 @@ public class TestQuery { assertEquals("{ xyz }", Query.evaluateExpressions(query, attributes)); } + @Test + public void testLiteralFunction() { + final Map<String, String> attrs = Collections.<String, String> emptyMap(); + verifyEquals("${literal(2):gt(1)}", attrs, true); + verifyEquals("${literal('hello'):substring(0, 1):equals('h')}", attrs, true); + } + + @Test + public void testFunctionAfterReduce() { + // Cannot call gt(2) after count() because count() is a 'reducing function' + // and must be the last function in an expression. + assertFalse(Query.isValidExpression("${allMatchingAttributes('a.*'):contains('2'):count():gt(2)}")); + + final Map<String, String> attributes = new HashMap<>(); + attributes.put("a.1", "245"); + attributes.put("a.2", "123"); + attributes.put("a.3", "732"); + attributes.put("a.4", "343"); + attributes.put("a.5", "553"); + + final String endsWithCount = "${allMatchingAttributes('a.*'):contains('2'):count()}"; + assertTrue(Query.isValidExpression(endsWithCount)); + verifyEquals(endsWithCount, attributes, 3L); + + // in order to check if value is greater than 2, need to first evaluate the + // 'aggregate' and 'reducing' functions as an inner expression. Then we can + // use the literal() function to make the result of the inner expression the subject + // of the function gt() + final String usingLiteral = "${literal(" + endsWithCount + "):gt(2)}"; + assertTrue(Query.isValidExpression(usingLiteral)); + verifyEquals(usingLiteral, attributes, true); + + attributes.clear(); + attributes.put("a1", "123"); + attributes.put("a2", "321"); + verifyEquals("${allMatchingAttributes('a.*'):contains('2')}", attributes, true); + verifyEquals("${allMatchingAttributes('a.*'):contains('2'):toUpper():equals('TRUE')}", attributes, true); + verifyEquals("${allMatchingAttributes('a.*'):contains('2'):equals('true'):and( ${literal(true)} )}", attributes, true); + } + private void verifyEquals(final String expression, final Map<String, String> attributes, final Object expectedResult) { Query.validateExpression(expression, false); assertEquals(String.valueOf(expectedResult), Query.evaluateExpressions(expression, attributes, null)); - Query query = Query.compile(expression); - QueryResult<?> result = query.evaluate(attributes); + final Query query = Query.compile(expression); + final QueryResult<?> result = query.evaluate(attributes); if (expectedResult instanceof Number) { assertEquals(ResultType.NUMBER, result.getResultType()); http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c4c98fc4/nifi/nifi-docs/src/main/asciidoc/expression-language-guide.adoc ---------------------------------------------------------------------- diff --git a/nifi/nifi-docs/src/main/asciidoc/expression-language-guide.adoc b/nifi/nifi-docs/src/main/asciidoc/expression-language-guide.adoc index 9038809..d8ccdb4 100644 --- a/nifi/nifi-docs/src/main/asciidoc/expression-language-guide.adoc +++ b/nifi/nifi-docs/src/main/asciidoc/expression-language-guide.adoc @@ -1317,9 +1317,9 @@ Expressions will provide the following results: and Midnight GMT on January 1, 2014. The Expression `${time:toDate("yyyy/MM/dd HH:mm:ss.SSS'Z'")}` will result in the number of milliseconds between Midnight GMT on January 1, 1970 and 15:36:03.264 GMT on December 31, 2014. - Often, this function is used in conjunction with the <<format>> function to change the format of a date/time. For example, - if the attribute "date" has the value "12-24-2014" and we want to change the format to "2014/12/24", we can do so by - chaining together the two functions: `${date:toDate('MM-dd-yyyy'):format('yyyy/MM/dd')}`. +Often, this function is used in conjunction with the <<format>> function to change the format of a date/time. For example, +if the attribute "date" has the value "12-24-2014" and we want to change the format to "2014/12/24", we can do so by +chaining together the two functions: `${date:toDate('MM-dd-yyyy'):format('yyyy/MM/dd')}`. @@ -1404,7 +1404,7 @@ an error when validating the function. *Return Type*: [.returnType]#String# -*Examples*: The IP address of the machine can be obtained by using the Expresison `${ip()}`. +*Examples*: The IP address of the machine can be obtained by using the Expression `${ip()}`. @@ -1471,8 +1471,26 @@ an error when validating the function. +[.function] +=== literal + +*Description*: [.description]#Returns its argument as a literal String value. This is useful in order to treat a string or a number + at the beginning of an Expression as an actual value, rather than treating it as an attribute name. Additionally, it + can be used when the argument is an embedded Expression that we would then like to evaluate additional functions against.# + +*Subject Type*: [.subjectless]#No Subject# + +*Arguments*: + + - [.argName]#_value_# : [.argDesc]#The value to be treated as a literal string, number, or boolean value.# + +*Return Type*: [.returnType]#String# +*Examples*: `${literal(2):gt(1)}` returns `true` +`${literal( ${allMatchingAttributes('a.*'):count()} ):gt(3)}` returns true if there are more than 3 attributes whose +names begin with the letter `a`. + [[multi]] == Evaluating Multiple Attributes