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

sergehuber 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 493ad95ab UNOMI-875: Move past-event evaluators to advanced-conditions 
plugin (#774)
493ad95ab is described below

commit 493ad95ab2def1972c3eb43dcb1ab20afdd5bea3
Author: Serge Huber <[email protected]>
AuthorDate: Wed Jun 17 07:15:49 2026 +0200

    UNOMI-875: Move past-event evaluators to advanced-conditions plugin (#774)
---
 distribution/src/main/feature/feature.xml          |  4 ++++
 kar/src/main/feature/feature.xml                   |  6 +++++
 .../PastEventConditionPersistenceQueryBuilder.java |  4 ++--
 .../evaluator/ConditionEvaluatorDispatcher.java    |  2 +-
 .../{past-event => advanced-conditions}/pom.xml    | 12 +++++++++-
 .../conditions/PastEventConditionEvaluator.java    |  9 +++++++-
 .../SourceEventPropertyConditionEvaluator.java     | 12 +++++-----
 .../conditions/sourceEventPropertyCondition.json   |  2 +-
 .../src/main/resources/messages_en.properties      |  0
 .../resources/OSGI-INF/blueprint/blueprint.xml     | 23 -------------------
 .../resources/OSGI-INF/blueprint/blueprint.xml     | 26 ----------------------
 pom.xml                                            |  2 +-
 12 files changed, 40 insertions(+), 62 deletions(-)

diff --git a/distribution/src/main/feature/feature.xml 
b/distribution/src/main/feature/feature.xml
index 1285be9d4..390ab3fd4 100644
--- a/distribution/src/main/feature/feature.xml
+++ b/distribution/src/main/feature/feature.xml
@@ -34,6 +34,7 @@
         <feature dependency="true" 
version="${project.version}">unomi-cxs-geonames-extension</feature>
         <feature dependency="true" 
version="${project.version}">unomi-cxs-privacy-extension</feature>
         <feature dependency="true" 
version="${project.version}">unomi-elasticsearch-conditions</feature>
+        <feature dependency="true" 
version="${project.version}">unomi-plugins-advanced-conditions</feature>
         <feature dependency="true" 
version="${project.version}">unomi-plugins-base</feature>
         <feature dependency="true" 
version="${project.version}">unomi-plugins-request</feature>
         <feature dependency="true" 
version="${project.version}">unomi-plugins-mail</feature>
@@ -59,6 +60,7 @@
         <feature dependency="true" 
version="${project.version}">unomi-cxs-geonames-extension</feature>
         <feature dependency="true" 
version="${project.version}">unomi-cxs-privacy-extension</feature>
         <feature dependency="true" 
version="${project.version}">unomi-elasticsearch-conditions</feature>
+        <feature dependency="true" 
version="${project.version}">unomi-plugins-advanced-conditions</feature>
         <feature dependency="true" 
version="${project.version}">unomi-plugins-base</feature>
         <feature dependency="true" 
version="${project.version}">unomi-plugins-request</feature>
         <feature dependency="true" 
version="${project.version}">unomi-plugins-mail</feature>
@@ -85,6 +87,7 @@
         <feature dependency="true" 
version="${project.version}">unomi-cxs-geonames-extension</feature>
         <feature dependency="true" 
version="${project.version}">unomi-cxs-privacy-extension</feature>
         <feature dependency="true" 
version="${project.version}">unomi-opensearch-conditions</feature>
+        <feature dependency="true" 
version="${project.version}">unomi-plugins-advanced-conditions</feature>
         <feature dependency="true" 
version="${project.version}">unomi-plugins-base</feature>
         <feature dependency="true" 
version="${project.version}">unomi-plugins-request</feature>
         <feature dependency="true" 
version="${project.version}">unomi-plugins-mail</feature>
@@ -110,6 +113,7 @@
         <feature dependency="true" 
version="${project.version}">unomi-cxs-geonames-extension</feature>
         <feature dependency="true" 
version="${project.version}">unomi-cxs-privacy-extension</feature>
         <feature dependency="true" 
version="${project.version}">unomi-opensearch-conditions</feature>
+        <feature dependency="true" 
version="${project.version}">unomi-plugins-advanced-conditions</feature>
         <feature dependency="true" 
version="${project.version}">unomi-plugins-base</feature>
         <feature dependency="true" 
version="${project.version}">unomi-plugins-request</feature>
         <feature dependency="true" 
version="${project.version}">unomi-plugins-mail</feature>
diff --git a/kar/src/main/feature/feature.xml b/kar/src/main/feature/feature.xml
index 3cbe47b6b..2a764410f 100644
--- a/kar/src/main/feature/feature.xml
+++ b/kar/src/main/feature/feature.xml
@@ -177,6 +177,12 @@
         <bundle 
start="false">mvn:org.apache.unomi/unomi-plugins-base/${project.version}</bundle>
     </feature>
 
+    <feature name="unomi-plugins-advanced-conditions" description="Apache 
Unomi :: Plugins :: Advanced Conditions" version="${project.version}">
+        <feature>unomi-plugins-base</feature>
+        <requirement>unomi.persistence.conditions</requirement>
+        <bundle 
start="false">mvn:org.apache.unomi/unomi-plugins-advanced-conditions/${project.version}</bundle>
+    </feature>
+
     <feature name="unomi-plugins-request" description="Apache Unomi :: Plugins 
:: Request" version="${project.version}">
         <feature>unomi-services</feature>
         <configfile 
finalname="/etc/org.apache.unomi.plugins.request.cfg">mvn:org.apache.unomi/unomi-plugins-request/${project.version}/cfg/requestcfg</configfile>
diff --git 
a/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/PastEventConditionPersistenceQueryBuilder.java
 
b/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/PastEventConditionPersistenceQueryBuilder.java
index c3ca0eb4d..3adffc589 100644
--- 
a/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/PastEventConditionPersistenceQueryBuilder.java
+++ 
b/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/PastEventConditionPersistenceQueryBuilder.java
@@ -38,7 +38,7 @@ import java.util.Map;
  * <ul>
  *   <li>Implementations are provided by persistence modules and injected 
where needed.</li>
  *   <li>
- *     In {@code 
org.apache.unomi.plugins.baseplugin.conditions.PastEventConditionEvaluator}, 
evaluation follows two paths:
+ *     In {@code 
org.apache.unomi.plugins.advancedconditions.conditions.PastEventConditionEvaluator},
 evaluation follows two paths:
  *     <ol>
  *       <li>If the condition has a {@code generatedPropertyKey}, the 
evaluator reads a precomputed count from the
  *       {@link org.apache.unomi.api.Profile} system properties (no 
persistence query).</li>
@@ -51,7 +51,7 @@ import java.util.Map;
  *   the result means "events occurred within bounds" or "no events 
occurred".</li>
  * </ul>
  *
- * @see 
org.apache.unomi.plugins.baseplugin.conditions.PastEventConditionEvaluator
+ * @see 
org.apache.unomi.plugins.advancedconditions.conditions.PastEventConditionEvaluator
  */
 public interface PastEventConditionPersistenceQueryBuilder {
 
diff --git 
a/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/evaluator/ConditionEvaluatorDispatcher.java
 
b/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/evaluator/ConditionEvaluatorDispatcher.java
index 950d766bd..8259311cb 100644
--- 
a/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/evaluator/ConditionEvaluatorDispatcher.java
+++ 
b/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/evaluator/ConditionEvaluatorDispatcher.java
@@ -42,7 +42,7 @@ import java.util.Map;
  * {@code PastEventConditionEvaluator} for a typical evaluator.
  *
  * @see 
org.apache.unomi.persistence.spi.conditions.evaluator.impl.ConditionEvaluatorDispatcherImpl
- * @see 
org.apache.unomi.plugins.baseplugin.conditions.PastEventConditionEvaluator
+ * @see 
org.apache.unomi.plugins.advancedconditions.conditions.PastEventConditionEvaluator
  */
 public interface ConditionEvaluatorDispatcher {
 
diff --git a/plugins/past-event/pom.xml b/plugins/advanced-conditions/pom.xml
similarity index 87%
rename from plugins/past-event/pom.xml
rename to plugins/advanced-conditions/pom.xml
index 14d73e115..f236c08a0 100644
--- a/plugins/past-event/pom.xml
+++ b/plugins/advanced-conditions/pom.xml
@@ -43,7 +43,7 @@
     <dependencies>
         <dependency>
             <groupId>org.apache.unomi</groupId>
-            <artifactId>unomi-persistence-elasticsearch-core</artifactId>
+            <artifactId>unomi-api</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
@@ -51,6 +51,16 @@
             <artifactId>unomi-persistence-spi</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.unomi</groupId>
+            <artifactId>unomi-scripting</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.component.annotations</artifactId>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>
 
     <build>
diff --git 
a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/PastEventConditionEvaluator.java
 
b/plugins/advanced-conditions/src/main/java/org/apache/unomi/plugins/advancedconditions/conditions/PastEventConditionEvaluator.java
similarity index 93%
rename from 
plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/PastEventConditionEvaluator.java
rename to 
plugins/advanced-conditions/src/main/java/org/apache/unomi/plugins/advancedconditions/conditions/PastEventConditionEvaluator.java
index 9566d1bee..f9aa27449 100644
--- 
a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/PastEventConditionEvaluator.java
+++ 
b/plugins/advanced-conditions/src/main/java/org/apache/unomi/plugins/advancedconditions/conditions/PastEventConditionEvaluator.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.unomi.plugins.baseplugin.conditions;
+package org.apache.unomi.plugins.advancedconditions.conditions;
 
 import org.apache.unomi.api.Event;
 import org.apache.unomi.api.Item;
@@ -28,11 +28,14 @@ import 
org.apache.unomi.persistence.spi.conditions.PastEventConditionPersistence
 import 
org.apache.unomi.persistence.spi.conditions.evaluator.ConditionEvaluator;
 import 
org.apache.unomi.persistence.spi.conditions.evaluator.ConditionEvaluatorDispatcher;
 import org.apache.unomi.scripting.ScriptExecutor;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
+@Component(service = ConditionEvaluator.class, property = 
{"conditionEvaluatorId=pastEventConditionEvaluator"})
 public class PastEventConditionEvaluator implements ConditionEvaluator {
 
     private PersistenceService persistenceService;
@@ -40,18 +43,22 @@ public class PastEventConditionEvaluator implements 
ConditionEvaluator {
     private ScriptExecutor scriptExecutor;
     private PastEventConditionPersistenceQueryBuilder 
pastEventConditionPersistenceQueryBuilder;
 
+    @Reference
     public void setPersistenceService(PersistenceService persistenceService) {
         this.persistenceService = persistenceService;
     }
 
+    @Reference
     public void setDefinitionsService(DefinitionsService definitionsService) {
         this.definitionsService = definitionsService;
     }
 
+    @Reference
     public void 
setPastEventConditionPersistenceQueryBuilder(PastEventConditionPersistenceQueryBuilder
 pastEventConditionPersistenceQueryBuilder) {
         this.pastEventConditionPersistenceQueryBuilder = 
pastEventConditionPersistenceQueryBuilder;
     }
 
+    @Reference
     public void setScriptExecutor(ScriptExecutor scriptExecutor) {
         this.scriptExecutor = scriptExecutor;
     }
diff --git 
a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/SourceEventPropertyConditionEvaluator.java
 
b/plugins/advanced-conditions/src/main/java/org/apache/unomi/plugins/advancedconditions/conditions/SourceEventPropertyConditionEvaluator.java
similarity index 92%
rename from 
plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/SourceEventPropertyConditionEvaluator.java
rename to 
plugins/advanced-conditions/src/main/java/org/apache/unomi/plugins/advancedconditions/conditions/SourceEventPropertyConditionEvaluator.java
index aeeebb78c..56618dc89 100644
--- 
a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/SourceEventPropertyConditionEvaluator.java
+++ 
b/plugins/advanced-conditions/src/main/java/org/apache/unomi/plugins/advancedconditions/conditions/SourceEventPropertyConditionEvaluator.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.unomi.plugins.baseplugin.conditions;
+package org.apache.unomi.plugins.advancedconditions.conditions;
 
 import org.apache.unomi.api.Event;
 import org.apache.unomi.api.Item;
@@ -24,12 +24,15 @@ import org.apache.unomi.api.conditions.ConditionType;
 import org.apache.unomi.api.services.DefinitionsService;
 import 
org.apache.unomi.persistence.spi.conditions.evaluator.ConditionEvaluator;
 import 
org.apache.unomi.persistence.spi.conditions.evaluator.ConditionEvaluatorDispatcher;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+@Component(service = ConditionEvaluator.class, property = 
{"conditionEvaluatorId=sourceEventPropertyConditionEvaluator"})
 public class SourceEventPropertyConditionEvaluator implements 
ConditionEvaluator {
     private static final Map<String,String> MAPPED_PROPERTIES;
     static {
@@ -82,11 +85,8 @@ public class SourceEventPropertyConditionEvaluator 
implements ConditionEvaluator
         }
     }
 
-    public DefinitionsService getDefinitionsService() {
-        return definitionsService;
-    }
-
+    @Reference
     public void setDefinitionsService(DefinitionsService definitionsService) {
         this.definitionsService = definitionsService;
     }
-}
+}
\ No newline at end of file
diff --git 
a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sourceEventPropertyCondition.json
 
b/plugins/advanced-conditions/src/main/resources/META-INF/cxs/conditions/sourceEventPropertyCondition.json
similarity index 99%
rename from 
plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sourceEventPropertyCondition.json
rename to 
plugins/advanced-conditions/src/main/resources/META-INF/cxs/conditions/sourceEventPropertyCondition.json
index ed52b8e77..2924e974a 100644
--- 
a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sourceEventPropertyCondition.json
+++ 
b/plugins/advanced-conditions/src/main/resources/META-INF/cxs/conditions/sourceEventPropertyCondition.json
@@ -34,4 +34,4 @@
       "multivalued": false
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/plugins/past-event/src/main/resources/messages_en.properties 
b/plugins/advanced-conditions/src/main/resources/messages_en.properties
similarity index 100%
rename from plugins/past-event/src/main/resources/messages_en.properties
rename to plugins/advanced-conditions/src/main/resources/messages_en.properties
diff --git 
a/plugins/baseplugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml 
b/plugins/baseplugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index c843ca1aa..189131ff2 100644
--- a/plugins/baseplugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/plugins/baseplugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -50,8 +50,6 @@
     <reference id="configSharingService" 
interface="org.apache.unomi.api.services.ConfigSharingService"/>
     <reference id="scriptExecutor" 
interface="org.apache.unomi.scripting.ScriptExecutor"/>
     <reference id="topicService" 
interface="org.apache.unomi.api.services.TopicService"/>
-    <reference id="pastEventConditionPersistenceQueryBuilder" 
interface="org.apache.unomi.persistence.spi.conditions.PastEventConditionPersistenceQueryBuilder"/>
-
     <reference id="executionContextManager" 
interface="org.apache.unomi.api.services.ExecutionContextManager">
         <reference-listener ref="mergeProfilesOnPropertyAction" 
bind-method="bindExecutionContextManager" 
unbind-method="unbindExecutionContextManager" />
     </reference>
@@ -104,27 +102,6 @@
         <bean 
class="org.apache.unomi.plugins.baseplugin.conditions.GeoLocationByPointSessionConditionEvaluator"/>
     </service>
 
-    <service 
interface="org.apache.unomi.persistence.spi.conditions.evaluator.ConditionEvaluator">
-        <service-properties>
-            <entry key="conditionEvaluatorId" 
value="sourceEventPropertyConditionEvaluator"/>
-        </service-properties>
-        <bean 
class="org.apache.unomi.plugins.baseplugin.conditions.SourceEventPropertyConditionEvaluator">
-            <property name="definitionsService" ref="definitionsService"/>
-        </bean>
-    </service>
-
-    <service 
interface="org.apache.unomi.persistence.spi.conditions.evaluator.ConditionEvaluator">
-        <service-properties>
-            <entry key="conditionEvaluatorId" 
value="pastEventConditionEvaluator"/>
-        </service-properties>
-        <bean 
class="org.apache.unomi.plugins.baseplugin.conditions.PastEventConditionEvaluator">
-            <property name="definitionsService" ref="definitionsService"/>
-            <property name="persistenceService" ref="persistenceService"/>
-            <property name="pastEventConditionPersistenceQueryBuilder" 
ref="pastEventConditionPersistenceQueryBuilder"/>
-            <property name="scriptExecutor" ref="scriptExecutor"/>
-        </bean>
-    </service>
-
     <service 
interface="org.apache.unomi.persistence.spi.conditions.evaluator.ConditionEvaluator">
         <service-properties>
             <entry key="conditionEvaluatorId" 
value="nestedConditionEvaluator"/>
diff --git 
a/plugins/past-event/src/main/resources/OSGI-INF/blueprint/blueprint.xml 
b/plugins/past-event/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644
index e5142bb33..000000000
--- a/plugins/past-event/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ 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.
-  -->
-
-<blueprint xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
-           xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 
https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd";>
-
-  <reference id="definitionsService" 
interface="org.apache.unomi.api.services.DefinitionsService"/>
-  <reference id="persistenceService" interface="PersistenceService"/>
-
-
-</blueprint>
diff --git a/pom.xml b/pom.xml
index 3a27ae309..d8261f819 100644
--- a/pom.xml
+++ b/pom.xml
@@ -414,7 +414,7 @@
         <module>plugins</module>
         <module>plugins/baseplugin</module>
         <module>plugins/hover-event</module>
-        <module>plugins/past-event</module>
+        <module>plugins/advanced-conditions</module>
         <module>plugins/tracked-event</module>
         <module>plugins/kafka-injector</module>
         <module>plugins/mail</module>

Reply via email to