This is an automated email from the ASF dual-hosted git repository. sergehuber pushed a commit to branch UNOMI-875-advanced-conditions in repository https://gitbox.apache.org/repos/asf/unomi.git
commit bb825e00c4b5fdcedff8d82ab109ba5adb095959 Author: Serge Huber <[email protected]> AuthorDate: Tue Jun 16 22:47:06 2026 +0200 UNOMI-875: Move past-event evaluators to advanced-conditions plugin Replace the stub past-event module with plugins/advanced-conditions, relocating PastEvent and SourceEventProperty evaluators from baseplugin and wiring the new Karaf feature into distribution builds. --- 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>
