From 1984f03249477089d69c838f2435b0f057cd9677 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Wo=C5=BAniak?= Date: Mon, 15 Nov 2021 12:35:32 +0100 Subject: [PATCH 1/2] Optimize for performance using lazy loading. Optimize for performance using lazy loading to avoid APEX CPU time limit in case of trigger recursion. --- src/classes/TriggerHandler.cls | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/classes/TriggerHandler.cls b/src/classes/TriggerHandler.cls index 7ba6d54..1ce2e13 100644 --- a/src/classes/TriggerHandler.cls +++ b/src/classes/TriggerHandler.cls @@ -11,6 +11,9 @@ public virtual class TriggerHandler { // the current context of the trigger, overridable in tests @TestVisible private Boolean isTriggerExecuting; + + // cache for handler name + private String tempHandlerName; // static initialization static { @@ -159,10 +162,13 @@ public virtual class TriggerHandler { return !TriggerHandler.bypassedHandlers.contains(getHandlerName()); } - @TestVisible - private String getHandlerName() { - return String.valueOf(this).substring(0,String.valueOf(this).indexOf(':')); - } + @TestVisible + private String getHandlerName() { + if(tempHandlerName == null) { + tempHandlerName = String.valueOf(this).substring(0, String.valueOf(this).indexOf(':')); + } + return tempHandlerName; + } /*************************************** * context methods From dc45c6d20e03d3f2791d00b3441676ce925d6c8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Wo=C5=BAniak?= Date: Mon, 15 Nov 2021 12:45:12 +0100 Subject: [PATCH 2/2] Indention corrections Indention corrections --- src/classes/TriggerHandler.cls | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/classes/TriggerHandler.cls b/src/classes/TriggerHandler.cls index 1ce2e13..03e28b8 100644 --- a/src/classes/TriggerHandler.cls +++ b/src/classes/TriggerHandler.cls @@ -162,13 +162,13 @@ public virtual class TriggerHandler { return !TriggerHandler.bypassedHandlers.contains(getHandlerName()); } - @TestVisible - private String getHandlerName() { + @TestVisible + private String getHandlerName() { if(tempHandlerName == null) { tempHandlerName = String.valueOf(this).substring(0, String.valueOf(this).indexOf(':')); } - return tempHandlerName; - } + return tempHandlerName; + } /*************************************** * context methods