You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apex.apache.org by ch...@apache.org on 2016/09/08 10:55:31 UTC
[1/2] apex-malhar git commit: APEXMALHAR-2176 expressionFunctions for
FilterOperator
Repository: apex-malhar
Updated Branches:
refs/heads/master a5ffae6fb -> 99f89731b
APEXMALHAR-2176 expressionFunctions for FilterOperator
1. added setExpressionFunctionsItem method
2. incorporating review comments.
Project: http://git-wip-us.apache.org/repos/asf/apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/apex-malhar/commit/54c847a8
Tree: http://git-wip-us.apache.org/repos/asf/apex-malhar/tree/54c847a8
Diff: http://git-wip-us.apache.org/repos/asf/apex-malhar/diff/54c847a8
Branch: refs/heads/master
Commit: 54c847a84b792fb8f48e778ce625882fc19300a5
Parents: 2e47b4c
Author: yogidevendra <yo...@apache.org>
Authored: Thu Aug 4 20:01:11 2016 +0530
Committer: yogidevendra <yo...@apache.org>
Committed: Wed Aug 31 17:03:39 2016 +0530
----------------------------------------------------------------------
.../datatorrent/lib/filter/FilterOperator.java | 50 +++++++++++++++-----
.../com/datatorrent/lib/filter/FilterTest.java | 27 +++++++++--
2 files changed, 60 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/54c847a8/library/src/main/java/com/datatorrent/lib/filter/FilterOperator.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/filter/FilterOperator.java b/library/src/main/java/com/datatorrent/lib/filter/FilterOperator.java
index 8d61d00..3bf637c 100644
--- a/library/src/main/java/com/datatorrent/lib/filter/FilterOperator.java
+++ b/library/src/main/java/com/datatorrent/lib/filter/FilterOperator.java
@@ -19,7 +19,8 @@
package com.datatorrent.lib.filter;
-import java.util.LinkedList;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import org.slf4j.Logger;
@@ -27,6 +28,8 @@ import org.slf4j.LoggerFactory;
import org.apache.hadoop.classification.InterfaceStability;
+import com.google.common.annotations.VisibleForTesting;
+
import com.datatorrent.api.AutoMetric;
import com.datatorrent.api.Context;
import com.datatorrent.api.Context.PortContext;
@@ -59,7 +62,8 @@ import com.datatorrent.lib.util.PojoUtils;
public class FilterOperator extends BaseOperator implements Operator.ActivationListener
{
private String condition;
- private List<String> expressionFunctions = new LinkedList<>();
+ private List<String> expressionFunctions;
+ private List<String> additionalExpressionFunctions = new ArrayList<>();
private transient Class<?> inClazz = null;
private transient Expression<Boolean> expr = null;
@@ -81,11 +85,9 @@ public class FilterOperator extends BaseOperator implements Operator.ActivationL
public FilterOperator()
{
- expressionFunctions.add("java.lang.Math.*");
- expressionFunctions.add("org.apache.commons.lang3.StringUtils.*");
- expressionFunctions.add("org.apache.commons.lang3.StringEscapeUtils.*");
- expressionFunctions.add("org.apache.commons.lang3.time.DurationFormatUtils.*");
- expressionFunctions.add("org.apache.commons.lang3.time.DateFormatUtils.*");
+ expressionFunctions = new ArrayList<>(Arrays.asList(new String[] {"java.lang.Math.*",
+ "org.apache.commons.lang3.StringUtils.*", "org.apache.commons.lang3.StringEscapeUtils.*",
+ "org.apache.commons.lang3.time.DurationFormatUtils.*", "org.apache.commons.lang3.time.DateFormatUtils.*" }));
}
@InputPortFieldAnnotation(schemaRequired = true)
@@ -127,6 +129,11 @@ public class FilterOperator extends BaseOperator implements Operator.ActivationL
protected void createExpression()
{
logger.info("Creating an expression for condition {}", condition);
+ for (String expression : additionalExpressionFunctions) {
+ if (expression != null) {
+ expressionFunctions.add(expression);
+ }
+ }
expr = PojoUtils.createExpression(inClazz, condition, Boolean.class,
expressionFunctions.toArray(new String[expressionFunctions.size()]));
}
@@ -185,13 +192,14 @@ public class FilterOperator extends BaseOperator implements Operator.ActivationL
/**
* Returns the list of expression function which would be made available to
- * expression to use.
+ * expression to use. This is in addition to default expression functions
+ * added by the operator
*
* @return List of functions available in expression.
*/
- public List<String> getExpressionFunctions()
+ public List<String> getAdditionalExpressionFunctions()
{
- return expressionFunctions;
+ return additionalExpressionFunctions;
}
/**
@@ -199,15 +207,31 @@ public class FilterOperator extends BaseOperator implements Operator.ActivationL
* to expression to use.
* For ex. org.apache.apex.test1.Test would mean that "Test" method will be
* available in the expression to be used directly.
+ * This is in addition to default expression functions added by the operator.
* This is an optional property. See constructor to see defaults that are included.
*
- * @param expressionFunctions List of qualified class/method that needs to be
+ * @param additionalExpressionFunctions List of qualified class/method that needs to be
* imported to expression.
*/
- public void setExpressionFunctions(List<String> expressionFunctions)
+ public void setAdditionalExpressionFunctions(List<String> additionalExpressionFunctions)
{
- this.expressionFunctions = expressionFunctions;
+ this.additionalExpressionFunctions = additionalExpressionFunctions;
}
+ public void setOptionalExpressionFunctionsItem(int index, String value)
+ {
+ final int need = index - additionalExpressionFunctions.size() + 1;
+ for (int i = 0; i < need; i++) {
+ additionalExpressionFunctions.add(null);
+ }
+ additionalExpressionFunctions.set(index, value);
+ }
+
+ @VisibleForTesting
+ List<String> getExpressionFunctions()
+ {
+ return expressionFunctions;
+ }
+
private static final Logger logger = LoggerFactory.getLogger(FilterOperator.class);
}
http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/54c847a8/library/src/test/java/com/datatorrent/lib/filter/FilterTest.java
----------------------------------------------------------------------
diff --git a/library/src/test/java/com/datatorrent/lib/filter/FilterTest.java b/library/src/test/java/com/datatorrent/lib/filter/FilterTest.java
index ba32942..1fe6484 100644
--- a/library/src/test/java/com/datatorrent/lib/filter/FilterTest.java
+++ b/library/src/test/java/com/datatorrent/lib/filter/FilterTest.java
@@ -19,8 +19,10 @@
package com.datatorrent.lib.filter;
+import java.util.Arrays;
+
import org.junit.Assert;
-import org.junit.BeforeClass;
+import org.junit.Before;
import org.junit.Test;
import com.datatorrent.api.Attribute;
@@ -173,9 +175,26 @@ public class FilterTest
clearFilterOperator();
}
-
- @BeforeClass
- public static void setup()
+
+ @Test
+ public void testOptionalExpressionFunctions()
+ {
+ filter.setAdditionalExpressionFunctions(Arrays.asList(new String[] {"org.apache.commons.lang3.BooleanUtils.*"}));
+ prepareFilterOperator(DummyPublicPOJO.class, "({$}.val == 1)");
+ Assert.assertEquals(6, filter.getExpressionFunctions().size());
+ }
+
+ @Test
+ public void testSetOptionalExpressionFunctionsItem()
+ {
+ filter.setOptionalExpressionFunctionsItem(10,"org.apache.commons.lang3.BooleanUtils.*");
+ prepareFilterOperator(DummyPublicPOJO.class, "({$}.val == 1)");
+ Assert.assertEquals(6, filter.getExpressionFunctions().size());
+ }
+
+
+ @Before
+ public void setup()
{
data = new DummyPrivatePOJO();
pdata = new DummyPublicPOJO();
[2/2] apex-malhar git commit: Merge branch
'APEXMALHAR-2176-filter-expressionFunctions' of
https://github.com/yogidevendra/apex-malhar
Posted by ch...@apache.org.
Merge branch 'APEXMALHAR-2176-filter-expressionFunctions' of https://github.com/yogidevendra/apex-malhar
Project: http://git-wip-us.apache.org/repos/asf/apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/apex-malhar/commit/99f89731
Tree: http://git-wip-us.apache.org/repos/asf/apex-malhar/tree/99f89731
Diff: http://git-wip-us.apache.org/repos/asf/apex-malhar/diff/99f89731
Branch: refs/heads/master
Commit: 99f89731b9a40c573dfc4cc607599a5c68b2f5d4
Parents: a5ffae6 54c847a
Author: Chinmay Kolhatkar <ch...@datatorrent.com>
Authored: Thu Sep 8 16:24:12 2016 +0530
Committer: Chinmay Kolhatkar <ch...@datatorrent.com>
Committed: Thu Sep 8 16:24:12 2016 +0530
----------------------------------------------------------------------
.../datatorrent/lib/filter/FilterOperator.java | 50 +++++++++++++++-----
.../com/datatorrent/lib/filter/FilterTest.java | 27 +++++++++--
2 files changed, 60 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/99f89731/library/src/main/java/com/datatorrent/lib/filter/FilterOperator.java
----------------------------------------------------------------------