Repository: incubator-unomi Updated Branches: refs/heads/master 8df430d33 -> 769129894
UNOMI-163 Make optimization configurable Signed-off-by: Serge Huber <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/76912989 Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/76912989 Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/76912989 Branch: refs/heads/master Commit: 769129894feee8452e95df163c9807e87c606122 Parents: 8df430d Author: Serge Huber <[email protected]> Authored: Tue Feb 20 17:28:41 2018 +0100 Committer: Serge Huber <[email protected]> Committed: Tue Feb 20 17:28:41 2018 +0100 ---------------------------------------------------------------------- .../conditions/PropertyConditionEvaluator.java | 14 ++++++++++---- .../main/resources/OSGI-INF/blueprint/blueprint.xml | 5 ++++- 2 files changed, 14 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/76912989/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/PropertyConditionEvaluator.java ---------------------------------------------------------------------- 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 0b97abf..239c321 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 @@ -38,7 +38,6 @@ import org.slf4j.LoggerFactory; import java.text.SimpleDateFormat; import java.util.*; -import java.util.concurrent.ConcurrentSkipListSet; import java.util.function.LongSupplier; import java.util.regex.Pattern; @@ -53,6 +52,11 @@ public class PropertyConditionEvaluator implements ConditionEvaluator { public static final String NOT_OPTIMIZED_MARKER = "$$$###NOT_OPTIMIZED###$$$"; private Map<String, Map<String, ExpressionAccessor>> expressionCache = new HashMap<>(64); + private boolean usePropertyConditionOptimizations = true; + + public void setUsePropertyConditionOptimizations(boolean usePropertyConditionOptimizations) { + this.usePropertyConditionOptimizations = usePropertyConditionOptimizations; + } private int compare(Object actualValue, String expectedValue, Object expectedValueDate, Object expectedValueInteger, Object expectedValueDateExpr) { if (expectedValue == null && expectedValueDate == null && expectedValueInteger == null && getDate(expectedValueDateExpr) == null) { @@ -246,9 +250,11 @@ public class PropertyConditionEvaluator implements ConditionEvaluator { } protected Object getPropertyValue(Item item, String expression) throws Exception { - Object result = getHardcodedPropertyValue(item, expression); - if (!NOT_OPTIMIZED_MARKER.equals(result)) { - return result; + if (usePropertyConditionOptimizations) { + Object result = getHardcodedPropertyValue(item, expression); + if (!NOT_OPTIMIZED_MARKER.equals(result)) { + return result; + } } return getOGNLPropertyValue(item, expression); } http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/76912989/plugins/baseplugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml ---------------------------------------------------------------------- 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 31e68db..37f7ab1 100644 --- a/plugins/baseplugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml +++ b/plugins/baseplugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml @@ -25,6 +25,7 @@ update-strategy="reload" placeholder-prefix="${base."> <cm:default-properties> <cm:property name="useEventToUpdateProfile" value="false" /> + <cm:property name="usePropertyConditionOptimizations" value="true" /> </cm:default-properties> </cm:property-placeholder> @@ -115,7 +116,9 @@ <service-properties> <entry key="conditionEvaluatorId" value="propertyConditionEvaluator"/> </service-properties> - <bean class="org.apache.unomi.plugins.baseplugin.conditions.PropertyConditionEvaluator"/> + <bean class="org.apache.unomi.plugins.baseplugin.conditions.PropertyConditionEvaluator"> + <property name="usePropertyConditionOptimizations" value="${base.usePropertyConditionOptimizations}" /> + </bean> </service> <service interface="org.apache.unomi.persistence.elasticsearch.conditions.ConditionEvaluator">
