diff --git a/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ElasticSearchPersistenceServiceImpl.java b/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ElasticSearchPersistenceServiceImpl.java index 624a721ed..8117116d0 100644 --- a/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ElasticSearchPersistenceServiceImpl.java +++ b/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ElasticSearchPersistenceServiceImpl.java @@ -74,8 +74,7 @@ import org.apache.unomi.persistence.spi.aggregate.DateRangeAggregate; import org.apache.unomi.persistence.spi.aggregate.IpRangeAggregate; import org.apache.unomi.persistence.spi.conditions.ConditionContextHelper; -import org.apache.unomi.persistence.spi.conditions.ConditionEvaluator; -import org.apache.unomi.persistence.spi.conditions.ConditionEvaluatorDispatcher; +import org.apache.unomi.persistence.spi.conditions.evaluator.ConditionEvaluatorDispatcher; import org.elasticsearch.client.*; import org.osgi.framework.*; @@ -611,19 +610,6 @@ protected Object execute(Object... args) throws IOException { bundleContext.removeBundleListener(this); } - public void bindConditionEvaluator(ServiceReference conditionEvaluatorServiceReference) { - ConditionEvaluator conditionEvaluator = bundleContext.getService(conditionEvaluatorServiceReference); - conditionEvaluatorDispatcher.addEvaluator(conditionEvaluatorServiceReference.getProperty("conditionEvaluatorId").toString(), - conditionEvaluator); - } - - public void unbindConditionEvaluator(ServiceReference conditionEvaluatorServiceReference) { - if (conditionEvaluatorServiceReference == null) { - return; - } - conditionEvaluatorDispatcher.removeEvaluator(conditionEvaluatorServiceReference.getProperty("conditionEvaluatorId").toString()); - } - public void bindConditionESQueryBuilder(ServiceReference conditionESQueryBuilderServiceReference) { ConditionESQueryBuilder conditionESQueryBuilder = bundleContext.getService(conditionESQueryBuilderServiceReference); conditionESQueryBuilderDispatcher.addQueryBuilder(conditionESQueryBuilderServiceReference.getProperty("queryBuilderId").toString(), diff --git a/persistence-elasticsearch/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/persistence-elasticsearch/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml index e5e9ee0ad..b94416a6a 100644 --- a/persistence-elasticsearch/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml +++ b/persistence-elasticsearch/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml @@ -75,7 +75,8 @@ - + @@ -148,15 +149,6 @@ - - - - - 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 @@ unomi-metrics provided + + org.osgi + org.osgi.service.component.annotations + provided + com.fasterxml.jackson.core jackson-core @@ -121,9 +126,9 @@ true + <_dsannotations>* *;scope=compile|runtime - * 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 @@ 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 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 @@ /** * 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 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 props) { + evaluators.put((String) props.get("conditionEvaluatorId"), evaluator); } - @Override - public void removeEvaluator(String name) { - evaluators.remove(name); + public void unbindEvaluator(ConditionEvaluator evaluator, Map props) { + evaluators.remove((String) props.get("conditionEvaluatorId")); } @Override @@ -83,8 +95,7 @@ public boolean eval(Condition condition, Item item, Map context) final ConditionEvaluatorDispatcher dispatcher = this; try { return new MetricAdapter(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 @@ - - - - - - - - - - - - - - - - - org.apache.unomi.persistence.spi.conditions.ConditionEvaluatorDispatcher - - - - \ No newline at end of file diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/BooleanConditionEvaluator.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/BooleanConditionEvaluator.java index ade280e6d..4d16d4909 100644 --- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/BooleanConditionEvaluator.java +++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/BooleanConditionEvaluator.java @@ -19,8 +19,8 @@ import org.apache.unomi.api.Item; import org.apache.unomi.api.conditions.Condition; -import org.apache.unomi.persistence.spi.conditions.ConditionEvaluator; -import org.apache.unomi.persistence.spi.conditions.ConditionEvaluatorDispatcher; +import org.apache.unomi.persistence.spi.conditions.evaluator.ConditionEvaluator; +import org.apache.unomi.persistence.spi.conditions.evaluator.ConditionEvaluatorDispatcher; import java.util.List; import java.util.Map; diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/GeoLocationByPointSessionConditionEvaluator.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/GeoLocationByPointSessionConditionEvaluator.java index b98ce9150..34e45bc21 100644 --- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/GeoLocationByPointSessionConditionEvaluator.java +++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/GeoLocationByPointSessionConditionEvaluator.java @@ -20,8 +20,8 @@ import org.apache.commons.beanutils.BeanUtils; import org.apache.unomi.api.Item; import org.apache.unomi.api.conditions.Condition; -import org.apache.unomi.persistence.spi.conditions.ConditionEvaluator; -import org.apache.unomi.persistence.spi.conditions.ConditionEvaluatorDispatcher; +import org.apache.unomi.persistence.spi.conditions.evaluator.ConditionEvaluator; +import org.apache.unomi.persistence.spi.conditions.evaluator.ConditionEvaluatorDispatcher; import org.apache.unomi.persistence.spi.conditions.geo.DistanceUnit; import org.apache.unomi.persistence.spi.conditions.geo.GeoDistance; import org.slf4j.Logger; diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/IdsConditionEvaluator.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/IdsConditionEvaluator.java index 32f5b9468..51bb6fd82 100644 --- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/IdsConditionEvaluator.java +++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/IdsConditionEvaluator.java @@ -18,8 +18,8 @@ import org.apache.unomi.api.Item; import org.apache.unomi.api.conditions.Condition; -import org.apache.unomi.persistence.spi.conditions.ConditionEvaluator; -import org.apache.unomi.persistence.spi.conditions.ConditionEvaluatorDispatcher; +import org.apache.unomi.persistence.spi.conditions.evaluator.ConditionEvaluator; +import org.apache.unomi.persistence.spi.conditions.evaluator.ConditionEvaluatorDispatcher; import java.util.Collection; import java.util.Map; diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/MatchAllConditionEvaluator.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/MatchAllConditionEvaluator.java index cab1c35fe..0c9ea43bf 100644 --- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/MatchAllConditionEvaluator.java +++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/MatchAllConditionEvaluator.java @@ -19,8 +19,8 @@ import org.apache.unomi.api.Item; import org.apache.unomi.api.conditions.Condition; -import org.apache.unomi.persistence.spi.conditions.ConditionEvaluator; -import org.apache.unomi.persistence.spi.conditions.ConditionEvaluatorDispatcher; +import org.apache.unomi.persistence.spi.conditions.evaluator.ConditionEvaluator; +import org.apache.unomi.persistence.spi.conditions.evaluator.ConditionEvaluatorDispatcher; import java.util.Map; diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/NestedConditionEvaluator.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/NestedConditionEvaluator.java index 2a6a112b1..154dcc34b 100644 --- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/NestedConditionEvaluator.java +++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/NestedConditionEvaluator.java @@ -22,8 +22,8 @@ import org.apache.unomi.api.Profile; import org.apache.unomi.api.Session; import org.apache.unomi.api.conditions.Condition; -import org.apache.unomi.persistence.spi.conditions.ConditionEvaluator; -import org.apache.unomi.persistence.spi.conditions.ConditionEvaluatorDispatcher; +import org.apache.unomi.persistence.spi.conditions.evaluator.ConditionEvaluator; +import org.apache.unomi.persistence.spi.conditions.evaluator.ConditionEvaluatorDispatcher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/NotConditionEvaluator.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/NotConditionEvaluator.java index 9296214bb..57a305a96 100644 --- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/NotConditionEvaluator.java +++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/NotConditionEvaluator.java @@ -19,8 +19,8 @@ import org.apache.unomi.api.Item; import org.apache.unomi.api.conditions.Condition; -import org.apache.unomi.persistence.spi.conditions.ConditionEvaluator; -import org.apache.unomi.persistence.spi.conditions.ConditionEvaluatorDispatcher; +import org.apache.unomi.persistence.spi.conditions.evaluator.ConditionEvaluator; +import org.apache.unomi.persistence.spi.conditions.evaluator.ConditionEvaluatorDispatcher; import java.util.Map; diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/PastEventConditionEvaluator.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/PastEventConditionEvaluator.java index 6d9ce91e1..74e4cf28f 100644 --- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/PastEventConditionEvaluator.java +++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/PastEventConditionEvaluator.java @@ -23,9 +23,9 @@ import org.apache.unomi.api.conditions.Condition; import org.apache.unomi.api.services.DefinitionsService; import org.apache.unomi.persistence.spi.PersistenceService; -import org.apache.unomi.persistence.spi.conditions.ConditionEvaluator; -import org.apache.unomi.persistence.spi.conditions.ConditionEvaluatorDispatcher; import org.apache.unomi.persistence.spi.conditions.PastEventConditionPersistenceQueryBuilder; +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 java.util.ArrayList; 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 0e1ecadc7..e6c391fdf 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 @@ -25,8 +25,8 @@ import org.apache.unomi.api.conditions.Condition; import org.apache.unomi.persistence.spi.PropertyHelper; import org.apache.unomi.persistence.spi.conditions.ConditionContextHelper; -import org.apache.unomi.persistence.spi.conditions.ConditionEvaluator; -import org.apache.unomi.persistence.spi.conditions.ConditionEvaluatorDispatcher; +import org.apache.unomi.persistence.spi.conditions.evaluator.ConditionEvaluator; +import org.apache.unomi.persistence.spi.conditions.evaluator.ConditionEvaluatorDispatcher; import org.apache.unomi.persistence.spi.conditions.DateUtils; import org.apache.unomi.persistence.spi.conditions.geo.DistanceUnit; import org.apache.unomi.plugins.baseplugin.conditions.accessors.HardcodedPropertyAccessor; 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 5876cb379..f57562cba 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 @@ -22,8 +22,8 @@ import org.apache.unomi.api.conditions.Condition; import org.apache.unomi.api.conditions.ConditionType; import org.apache.unomi.api.services.DefinitionsService; -import org.apache.unomi.persistence.spi.conditions.ConditionEvaluator; -import org.apache.unomi.persistence.spi.conditions.ConditionEvaluatorDispatcher; +import org.apache.unomi.persistence.spi.conditions.evaluator.ConditionEvaluator; +import org.apache.unomi.persistence.spi.conditions.evaluator.ConditionEvaluatorDispatcher; import java.util.ArrayList; import java.util.HashMap; 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 d69f91c78..68adb6d68 100644 --- a/plugins/baseplugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml +++ b/plugins/baseplugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml @@ -53,21 +53,21 @@ - + - + - + @@ -77,27 +77,27 @@ - + - + - + - + @@ -106,7 +106,7 @@ - + @@ -118,7 +118,7 @@ - +