You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@unomi.apache.org by sh...@apache.org on 2021/09/07 12:46:04 UTC

[unomi] branch master updated: fix conditionEvaluator inconsistent with elastic for condition when property is not exist and op is "notIn" (#301)

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

shuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/unomi.git


The following commit(s) were added to refs/heads/master by this push:
     new d850dc2  fix conditionEvaluator inconsistent with elastic for condition when property  is not exist and op is "notIn" (#301)
d850dc2 is described below

commit d850dc27e4e8703d2da375fdb973e8e0945ae75d
Author: giladw <gw...@yotpo.com>
AuthorDate: Tue Sep 7 15:45:59 2021 +0300

    fix conditionEvaluator inconsistent with elastic for condition when property  is not exist and op is "notIn" (#301)
---
 itests/src/test/java/org/apache/unomi/itests/ConditionEvaluatorIT.java | 3 +++
 .../plugins/baseplugin/conditions/PropertyConditionEvaluator.java      | 2 +-
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/itests/src/test/java/org/apache/unomi/itests/ConditionEvaluatorIT.java b/itests/src/test/java/org/apache/unomi/itests/ConditionEvaluatorIT.java
index a1f93a6..427f45f 100644
--- a/itests/src/test/java/org/apache/unomi/itests/ConditionEvaluatorIT.java
+++ b/itests/src/test/java/org/apache/unomi/itests/ConditionEvaluatorIT.java
@@ -140,6 +140,9 @@ public class ConditionEvaluatorIT extends BaseIT {
         assertTrue(eval(builder.profileProperty("properties.age").in(31, 30).build()));
         assertTrue(eval(builder.profileProperty("properties.age").notIn(25, 26).build()));
         assertFalse(eval(builder.profileProperty("properties.age").notIn(25, 30).build()));
+
+        assertTrue(eval(builder.profileProperty("properties.fieldNotExists").notIn(25, 30).build()));
+        assertTrue(eval(builder.profileProperty("properties.fieldNotExists").notEqualTo(1).build()));
     }
 
     @Test
diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/PropertyConditionEvaluator.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/PropertyConditionEvaluator.java
index 422778e..d5d0d20 100644
--- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/PropertyConditionEvaluator.java
+++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/PropertyConditionEvaluator.java
@@ -206,7 +206,7 @@ public class PropertyConditionEvaluator implements ConditionEvaluator {
         if (op == null) {
             return false;
         } else if (actualValue == null) {
-            return op.equals("missing");
+            return op.equals("missing")|| op.equals("notIn") || op.equals("notEquals");
         } else if (op.equals("exists")) {
             if (actualValue instanceof List) {
                 return ((List) actualValue).size() > 0;