This is an automated email from the ASF dual-hosted git repository. jkevan pushed a commit to branch handleEventInSourceEventEvaluator in repository https://gitbox.apache.org/repos/asf/unomi.git
commit c53d8cb3be5ccce2d4b887e67d040aca16c7c64b Author: Kevan <[email protected]> AuthorDate: Thu Oct 7 16:34:50 2021 +0200 UNOMI-515: allow event to be evaluated by the sourceEventPropertyConditionEvaluator --- .../SourceEventPropertyConditionEvaluator.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/SourceEventPropertyConditionEvaluator.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/SourceEventPropertyConditionEvaluator.java index 98669dd..19bbca7 100644 --- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/SourceEventPropertyConditionEvaluator.java +++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/SourceEventPropertyConditionEvaluator.java @@ -17,6 +17,7 @@ package org.apache.unomi.plugins.baseplugin.conditions; +import org.apache.unomi.api.Event; import org.apache.unomi.api.Item; import org.apache.unomi.api.conditions.Condition; import org.apache.unomi.api.conditions.ConditionType; @@ -54,6 +55,11 @@ public class SourceEventPropertyConditionEvaluator implements ConditionEvaluator @Override public boolean eval(Condition condition, Item item, Map<String, Object> context, ConditionEvaluatorDispatcher dispatcher) { + // in case the evaluated item is an event, we switch to his source internal object for further evaluations + if (item instanceof Event) { + item = ((Event) item).getSource(); + } + Condition andCondition = new Condition(definitionsService.getConditionType("booleanCondition")); andCondition.setParameter("operator", "and"); ArrayList<Condition> conditions = new ArrayList<Condition>(); @@ -63,9 +69,15 @@ public class SourceEventPropertyConditionEvaluator implements ConditionEvaluator } if(conditions.size() > 0){ - andCondition.setParameter("subConditions", conditions); - return dispatcher.eval(andCondition, item); + if (item != null) { + andCondition.setParameter("subConditions", conditions); + return dispatcher.eval(andCondition, item); + } else { + // item is null but there is conditions: it's not a match + return false; + } } else { + // no conditions: it's always a match return true; } }
