From d5f12413879d1495a132c2d70c07796d24e2d2b2 Mon Sep 17 00:00:00 2001 From: sagar-sharma-adobe Date: Wed, 18 Feb 2026 23:25:15 +0530 Subject: [PATCH 1/3] Updating Copyright Year --- .../com/adobe/marketing/mobile/launch/rulesengine/RuleMeta.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/core/src/main/java/com/adobe/marketing/mobile/launch/rulesengine/RuleMeta.kt b/code/core/src/main/java/com/adobe/marketing/mobile/launch/rulesengine/RuleMeta.kt index cc80266a6..65f1cea55 100644 --- a/code/core/src/main/java/com/adobe/marketing/mobile/launch/rulesengine/RuleMeta.kt +++ b/code/core/src/main/java/com/adobe/marketing/mobile/launch/rulesengine/RuleMeta.kt @@ -1,5 +1,5 @@ /* - Copyright 2022 Adobe. All rights reserved. + Copyright 2026 Adobe. All rights reserved. This file is licensed 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 From f79a19d3bddaf472da8efc4c1776f257959ca44f Mon Sep 17 00:00:00 2001 From: sagar-sharma-adobe Date: Thu, 19 Feb 2026 11:41:54 +0530 Subject: [PATCH 2/3] Addressing Review Comments --- .../rulesengine/LaunchRulesConsequence.kt | 32 ++++--------------- .../launch/rulesengine/LaunchRulesEngine.java | 22 ++++++++++--- .../RuleReevaluationInterceptor.kt | 6 ++-- 3 files changed, 27 insertions(+), 33 deletions(-) diff --git a/code/core/src/main/java/com/adobe/marketing/mobile/launch/rulesengine/LaunchRulesConsequence.kt b/code/core/src/main/java/com/adobe/marketing/mobile/launch/rulesengine/LaunchRulesConsequence.kt index fcc0ea13e..2ee2790bd 100644 --- a/code/core/src/main/java/com/adobe/marketing/mobile/launch/rulesengine/LaunchRulesConsequence.kt +++ b/code/core/src/main/java/com/adobe/marketing/mobile/launch/rulesengine/LaunchRulesConsequence.kt @@ -171,35 +171,15 @@ internal class LaunchRulesConsequence( return processedConsequences } - fun getReevaluableRules(rules: MutableList): MutableList { - val revaluableRules: MutableList = java.util.ArrayList() - for (rule in rules) { - if (rule.meta.reEvaluate && rule.hasReevaluableSupportedConsequence) { - revaluableRules.add(rule) - } - } - return revaluableRules - } + fun getReevaluableRules(rules: List): List = + rules.filter { it.meta.reEvaluate && it.hasReevaluableSupportedConsequence } + + fun getRulesToHoldForReevaluation(rules: List): List = + rules.filter { it.hasReevaluableSupportedConsequence } - fun getRulesToHoldForReevaluation(rules: MutableList): MutableList { - val rulesToHold: MutableList = ArrayList() - for (rule in rules) { - if (rule.hasReevaluableSupportedConsequence) { - rulesToHold.add(rule) - } - } - return rulesToHold - } private val LaunchRule.hasReevaluableSupportedConsequence: Boolean - get() { - for (consequence in this.consequenceList) { - if (REEVALUABLE_CONSEQUENCE_TYPES.contains(consequence.type)) { - return true - } - } - return false - } + get() = consequenceList.any { it.type in REEVALUABLE_CONSEQUENCE_TYPES } /** * Replace tokens inside the provided [RuleConsequence] with the right value diff --git a/code/core/src/main/java/com/adobe/marketing/mobile/launch/rulesengine/LaunchRulesEngine.java b/code/core/src/main/java/com/adobe/marketing/mobile/launch/rulesengine/LaunchRulesEngine.java index 9b48f039c..0e9ef66b7 100644 --- a/code/core/src/main/java/com/adobe/marketing/mobile/launch/rulesengine/LaunchRulesEngine.java +++ b/code/core/src/main/java/com/adobe/marketing/mobile/launch/rulesengine/LaunchRulesEngine.java @@ -27,8 +27,6 @@ public class LaunchRulesEngine { - private RuleReevaluationInterceptor reevaluationInterceptor; - @VisibleForTesting static final String RULES_ENGINE_NAME = "name"; private final String name; private final RulesEngine ruleRulesEngine; @@ -36,6 +34,7 @@ public class LaunchRulesEngine { private final LaunchRulesConsequence launchRulesConsequence; private final List cachedEvents = new ArrayList<>(); private boolean initialRulesReceived = false; + private RuleReevaluationInterceptor reevaluationInterceptor; public LaunchRulesEngine(@NonNull final String name, @NonNull final ExtensionApi extensionApi) { this( @@ -162,6 +161,22 @@ private Event processAndIntercept(final Event event) { final ArrayList rulesToProcess = new ArrayList<>(matchedRules); rulesToProcess.removeAll(rulesToHold); Event processedEvent = launchRulesConsequence.process(event, rulesToProcess); + triggerReEvaluation( + processedEvent, + revaluableRules, + rulesToProcess, + reevaluationInterceptor + ); + return processedEvent; + } + + private void triggerReEvaluation( + final Event processedEvent, + final List revaluableRules, + final List processedRules, + final RuleReevaluationInterceptor reevaluationInterceptor + ) { + final LaunchTokenFinder tokenFinder = new LaunchTokenFinder(processedEvent, extensionApi); reevaluationInterceptor.onReevaluationTriggered( processedEvent, revaluableRules, @@ -172,11 +187,10 @@ private Event processAndIntercept(final Event event) { if (success) { final ArrayList newlyMatchedRules = new ArrayList<>(ruleRulesEngine.evaluate(tokenFinder)); - newlyMatchedRules.removeAll(rulesToProcess); + newlyMatchedRules.removeAll(processedRules); launchRulesConsequence.process(processedEvent, newlyMatchedRules); } }); - return processedEvent; } List getRules() { diff --git a/code/core/src/main/java/com/adobe/marketing/mobile/launch/rulesengine/RuleReevaluationInterceptor.kt b/code/core/src/main/java/com/adobe/marketing/mobile/launch/rulesengine/RuleReevaluationInterceptor.kt index 24ca18afc..117d1e989 100644 --- a/code/core/src/main/java/com/adobe/marketing/mobile/launch/rulesengine/RuleReevaluationInterceptor.kt +++ b/code/core/src/main/java/com/adobe/marketing/mobile/launch/rulesengine/RuleReevaluationInterceptor.kt @@ -21,8 +21,8 @@ import com.adobe.marketing.mobile.Event */ interface RuleReevaluationInterceptor { fun onReevaluationTriggered( - event: Event?, - revaluableRules: List?, - callback: AdobeCallback? + event: Event, + revaluableRules: List, + callback: AdobeCallback ) } From adfb1ffddde2c1ca6f3806c3ae708e2a5f4a20c4 Mon Sep 17 00:00:00 2001 From: sagar-sharma-adobe Date: Thu, 19 Feb 2026 11:42:52 +0530 Subject: [PATCH 3/3] SpotlessApply --- .../mobile/launch/rulesengine/LaunchRulesConsequence.kt | 1 - .../mobile/launch/rulesengine/LaunchRulesEngine.java | 9 ++------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/code/core/src/main/java/com/adobe/marketing/mobile/launch/rulesengine/LaunchRulesConsequence.kt b/code/core/src/main/java/com/adobe/marketing/mobile/launch/rulesengine/LaunchRulesConsequence.kt index 2ee2790bd..8bdf6bf61 100644 --- a/code/core/src/main/java/com/adobe/marketing/mobile/launch/rulesengine/LaunchRulesConsequence.kt +++ b/code/core/src/main/java/com/adobe/marketing/mobile/launch/rulesengine/LaunchRulesConsequence.kt @@ -177,7 +177,6 @@ internal class LaunchRulesConsequence( fun getRulesToHoldForReevaluation(rules: List): List = rules.filter { it.hasReevaluableSupportedConsequence } - private val LaunchRule.hasReevaluableSupportedConsequence: Boolean get() = consequenceList.any { it.type in REEVALUABLE_CONSEQUENCE_TYPES } diff --git a/code/core/src/main/java/com/adobe/marketing/mobile/launch/rulesengine/LaunchRulesEngine.java b/code/core/src/main/java/com/adobe/marketing/mobile/launch/rulesengine/LaunchRulesEngine.java index 0e9ef66b7..0d6103422 100644 --- a/code/core/src/main/java/com/adobe/marketing/mobile/launch/rulesengine/LaunchRulesEngine.java +++ b/code/core/src/main/java/com/adobe/marketing/mobile/launch/rulesengine/LaunchRulesEngine.java @@ -162,11 +162,7 @@ private Event processAndIntercept(final Event event) { rulesToProcess.removeAll(rulesToHold); Event processedEvent = launchRulesConsequence.process(event, rulesToProcess); triggerReEvaluation( - processedEvent, - revaluableRules, - rulesToProcess, - reevaluationInterceptor - ); + processedEvent, revaluableRules, rulesToProcess, reevaluationInterceptor); return processedEvent; } @@ -174,8 +170,7 @@ private void triggerReEvaluation( final Event processedEvent, final List revaluableRules, final List processedRules, - final RuleReevaluationInterceptor reevaluationInterceptor - ) { + final RuleReevaluationInterceptor reevaluationInterceptor) { final LaunchTokenFinder tokenFinder = new LaunchTokenFinder(processedEvent, extensionApi); reevaluationInterceptor.onReevaluationTriggered( processedEvent,