From 9822d066103a0692830e49fe9e68bc05493f2c6a Mon Sep 17 00:00:00 2001 From: WimVelzeboer Date: Thu, 9 Dec 2021 12:10:40 +0000 Subject: [PATCH] Bugfix in triggerhandler --- .../triggerHandler/classes/fflib_TriggerActionConfig.cls | 8 ++++++++ .../main/triggerHandler/classes/fflib_TriggerHandler.cls | 9 ++++++++- .../classes/interfaces/fflib_ITriggerActionConfig.cls | 5 +++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/sfdx-source/apex-extensions/main/triggerHandler/classes/fflib_TriggerActionConfig.cls b/sfdx-source/apex-extensions/main/triggerHandler/classes/fflib_TriggerActionConfig.cls index 118ab85..a97c6d4 100644 --- a/sfdx-source/apex-extensions/main/triggerHandler/classes/fflib_TriggerActionConfig.cls +++ b/sfdx-source/apex-extensions/main/triggerHandler/classes/fflib_TriggerActionConfig.cls @@ -89,6 +89,14 @@ public virtual inherited sharing class fflib_TriggerActionConfig return this.sequence; } + /** + * @return Returns the SObjectType linked to the trigger action + */ + public SObjectType getSObjectType() + { + return this.sObjectType; + } + /** * @return Returns TRUE if the trigger action should be executed in a dedicated Queueable context */ diff --git a/sfdx-source/apex-extensions/main/triggerHandler/classes/fflib_TriggerHandler.cls b/sfdx-source/apex-extensions/main/triggerHandler/classes/fflib_TriggerHandler.cls index da552b5..b448211 100644 --- a/sfdx-source/apex-extensions/main/triggerHandler/classes/fflib_TriggerHandler.cls +++ b/sfdx-source/apex-extensions/main/triggerHandler/classes/fflib_TriggerHandler.cls @@ -107,7 +107,9 @@ public virtual with sharing class fflib_TriggerHandler fflib_UnitOfWork unitOfWork = new fflib_UnitOfWork(); for (fflib_ITriggerActionConfig triggerActionConfig : configs) { - if (isValidExecutionContext(ctx, triggerActionConfig) == false) continue; + if (isValidExecutionContext(ctx, triggerActionConfig) == false + || + isValidSObjectType(triggerActionConfig, ctx) == false) continue; fflib_ITriggerAction triggerAction = getTriggerActionInstance(triggerActionConfig); @@ -130,6 +132,11 @@ public virtual with sharing class fflib_TriggerHandler return config.hasTriggerContext(ctx.getTriggerOperation()); } + private Boolean isValidSObjectType(fflib_ITriggerActionConfig triggerActionConfig, fflib_ITriggerContext ctx) + { + return triggerActionConfig.getSObjectType() == ctx.getRecords().get(0).getSObjectType(); + } + private fflib_ITriggerAction getTriggerActionInstance(fflib_ITriggerActionConfig triggerActionConfig) { if (triggerActionConfig.isStateful() diff --git a/sfdx-source/apex-extensions/main/triggerHandler/classes/interfaces/fflib_ITriggerActionConfig.cls b/sfdx-source/apex-extensions/main/triggerHandler/classes/interfaces/fflib_ITriggerActionConfig.cls index ce09301..28ac30d 100644 --- a/sfdx-source/apex-extensions/main/triggerHandler/classes/interfaces/fflib_ITriggerActionConfig.cls +++ b/sfdx-source/apex-extensions/main/triggerHandler/classes/interfaces/fflib_ITriggerActionConfig.cls @@ -39,6 +39,11 @@ public interface fflib_ITriggerActionConfig */ Integer getSequence(); + /** + * @return Returns the SObjectType linked to the trigger action + */ + Schema.SObjectType getSObjectType(); + /** * @param triggerOperation The Trigger operation to validate the configuration against. *