This is an automated email from the ASF dual-hosted git repository.
jsinovassinnaik 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 0b988ef9b try to fix reference issue on stop
0b988ef9b is described below
commit 0b988ef9bb2951d4fd522168f1cdb4aaf9b4c2a2
Author: jsinovassin <[email protected]>
AuthorDate: Mon Sep 15 18:50:11 2025 +0200
try to fix reference issue on stop
---
persistence-spi/pom.xml | 7 +++-
.../{ => evaluator}/ConditionEvaluator.java | 2 +-
.../ConditionEvaluatorDispatcher.java | 6 +---
.../impl}/ConditionEvaluatorDispatcherImpl.java | 37 ++++++++++++-------
.../resources/OSGI-INF/blueprint/blueprint.xml | 41 ----------------------
5 files changed, 32 insertions(+), 61 deletions(-)
diff --git a/persistence-spi/pom.xml b/persistence-spi/pom.xml
index f33e06665..7ec747761 100644
--- a/persistence-spi/pom.xml
+++ b/persistence-spi/pom.xml
@@ -57,6 +57,11 @@
<artifactId>unomi-metrics</artifactId>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.service.component.annotations</artifactId>
+ <scope>provided</scope>
+ </dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
@@ -121,9 +126,9 @@
<extensions>true</extensions>
<configuration>
<instructions>
+ <_dsannotations>*</_dsannotations>
<Embed-Dependency>*;scope=compile|runtime</Embed-Dependency>
<Import-Package>
-
*
</Import-Package>
</instructions>
diff --git
a/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/ConditionEvaluator.java
b/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/evaluator/ConditionEvaluator.java
similarity index 94%
rename from
persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/ConditionEvaluator.java
rename to
persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/evaluator/ConditionEvaluator.java
index 97af4ed97..fe2cf0451 100644
---
a/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/ConditionEvaluator.java
+++
b/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/evaluator/ConditionEvaluator.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.unomi.persistence.spi.conditions;
+package org.apache.unomi.persistence.spi.conditions.evaluator;
import org.apache.unomi.api.Item;
import org.apache.unomi.api.conditions.Condition;
diff --git
a/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/ConditionEvaluatorDispatcher.java
b/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/evaluator/ConditionEvaluatorDispatcher.java
similarity index 87%
rename from
persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/ConditionEvaluatorDispatcher.java
rename to
persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/evaluator/ConditionEvaluatorDispatcher.java
index 0c6f438b4..458a06c96 100644
---
a/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/ConditionEvaluatorDispatcher.java
+++
b/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/evaluator/ConditionEvaluatorDispatcher.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.unomi.persistence.spi.conditions;
+package org.apache.unomi.persistence.spi.conditions.evaluator;
import org.apache.unomi.api.Item;
import org.apache.unomi.api.conditions.Condition;
@@ -23,10 +23,6 @@ import java.util.Map;
public interface ConditionEvaluatorDispatcher {
- void addEvaluator(String name, ConditionEvaluator evaluator);
-
- void removeEvaluator(String name);
-
boolean eval(Condition condition, Item item);
boolean eval(Condition condition, Item item, Map<String, Object> context);
diff --git
a/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/ConditionEvaluatorDispatcherImpl.java
b/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/evaluator/impl/ConditionEvaluatorDispatcherImpl.java
similarity index 71%
rename from
persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/ConditionEvaluatorDispatcherImpl.java
rename to
persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/evaluator/impl/ConditionEvaluatorDispatcherImpl.java
index 5a7f4cfc3..caacbac67 100644
---
a/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/ConditionEvaluatorDispatcherImpl.java
+++
b/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/conditions/evaluator/impl/ConditionEvaluatorDispatcherImpl.java
@@ -15,13 +15,21 @@
* limitations under the License.
*/
-package org.apache.unomi.persistence.spi.conditions;
+package org.apache.unomi.persistence.spi.conditions.evaluator.impl;
import org.apache.unomi.api.Item;
import org.apache.unomi.api.conditions.Condition;
import org.apache.unomi.metrics.MetricAdapter;
import org.apache.unomi.metrics.MetricsService;
+import org.apache.unomi.persistence.spi.conditions.ConditionContextHelper;
+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.annotation.bundle.Requirement;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.ReferencePolicy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -32,33 +40,37 @@ import java.util.concurrent.ConcurrentHashMap;
/**
* Entry point for condition evaluation. Will dispatch to all evaluators.
*/
-//TODO change to delarative services remove blueprint
-public class ConditionEvaluatorDispatcherImpl implements
ConditionEvaluatorDispatcher {
- private static final Logger LOGGER =
LoggerFactory.getLogger(ConditionEvaluatorDispatcher.class.getName());
+
+@Component(service = ConditionEvaluatorDispatcher.class)
+public class ConditionEvaluatorDispatcherImpl
+ implements ConditionEvaluatorDispatcher {
+ private static final Logger LOGGER =
LoggerFactory.getLogger(ConditionEvaluatorDispatcherImpl.class.getName());
private Map<String, ConditionEvaluator> evaluators = new
ConcurrentHashMap<>();
private MetricsService metricsService;
private ScriptExecutor scriptExecutor;
- public ConditionEvaluatorDispatcherImpl() {}
+ public ConditionEvaluatorDispatcherImpl() {
+ }
+ @Reference
public void setMetricsService(MetricsService metricsService) {
this.metricsService = metricsService;
}
+ @Reference
public void setScriptExecutor(ScriptExecutor scriptExecutor) {
this.scriptExecutor = scriptExecutor;
}
- @Override
- public void addEvaluator(String name, ConditionEvaluator evaluator) {
- evaluators.put(name, evaluator);
+ @Reference(service = ConditionEvaluator.class, cardinality =
ReferenceCardinality.MULTIPLE, policy = ReferencePolicy.DYNAMIC)
+ public void bindEvaluator(ConditionEvaluator evaluator, Map<String,
Object> props) {
+ evaluators.put((String) props.get("conditionEvaluatorId"), evaluator);
}
- @Override
- public void removeEvaluator(String name) {
- evaluators.remove(name);
+ public void unbindEvaluator(ConditionEvaluator evaluator, Map<String,
Object> props) {
+ evaluators.remove((String) props.get("conditionEvaluatorId"));
}
@Override
@@ -83,8 +95,7 @@ public class ConditionEvaluatorDispatcherImpl implements
ConditionEvaluatorDispa
final ConditionEvaluatorDispatcher dispatcher = this;
try {
return new MetricAdapter<Boolean>(metricsService,
this.getClass().getName() + ".conditions." + conditionEvaluatorKey) {
- @Override
- public Boolean execute(Object... args) throws Exception {
+ @Override public Boolean execute(Object... args) throws
Exception {
Condition contextualCondition =
ConditionContextHelper.getContextualCondition(condition, context,
scriptExecutor);
if (contextualCondition != null) {
return evaluator.eval(contextualCondition, item,
context, dispatcher);
diff --git
a/persistence-spi/src/main/resources/OSGI-INF/blueprint/blueprint.xml
b/persistence-spi/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644
index 7da5a271f..000000000
--- a/persistence-spi/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ /dev/null
@@ -1,41 +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:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
- xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
- xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
- http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0
http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.1.0.xsd">
-
-
- <reference id="metricsService"
interface="org.apache.unomi.metrics.MetricsService" />
- <reference id="scriptExecutor"
interface="org.apache.unomi.scripting.ScriptExecutor" />
-
- <bean id="conditionEvaluatorDispatcherImpl"
-
class="org.apache.unomi.persistence.spi.conditions.ConditionEvaluatorDispatcherImpl">
- <property name="metricsService" ref="metricsService" />
- <property name="scriptExecutor" ref="scriptExecutor" />
- </bean>
-
- <service id="conditionEvaluatorDispatcherService"
ref="conditionEvaluatorDispatcherImpl">
- <interfaces>
-
<value>org.apache.unomi.persistence.spi.conditions.ConditionEvaluatorDispatcher</value>
- </interfaces>
- </service>
-
-</blueprint>
\ No newline at end of file