diff --git a/README.md b/README.md index 7da18e5..0a43431 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,11 @@ In your trigger handler, to add logic to any of the trigger contexts, you only n ```java public class OpportunityTriggerHandler extends TriggerHandler { + + /* Optional Constructor - better performance */ + public OpportunityTriggerHandler(){ + super('OpportunityTriggerHandler'); + } public override void beforeUpdate() { for(Opportunity o : (List) Trigger.new) { @@ -49,7 +54,12 @@ public class OpportunityTriggerHandler extends TriggerHandler { ```java public class OpportunityTriggerHandler extends TriggerHandler { - + + /* Optional Constructor - better performance */ + public OpportunityTriggerHandler(){ + super('OpportunityTriggerHandler'); + } + private Map newOppMap; public OpportunityTriggerHandler() { @@ -79,7 +89,12 @@ To prevent recursion, you can set a max loop count for Trigger Handler. If this ```java public class OpportunityTriggerHandler extends TriggerHandler { - + + /* Optional Constructor - better performance */ + public OpportunityTriggerHandler(){ + super('OpportunityTriggerHandler'); + } + public OpportunityTriggerHandler() { this.setMaxLoopCount(1); } @@ -99,6 +114,11 @@ What if you want to tell other trigger handlers to halt execution? That's easy w ```java public class OpportunityTriggerHandler extends TriggerHandler { + /* Optional Constructor - better performance */ + public OpportunityTriggerHandler(){ + super('OpportunityTriggerHandler'); + } + public override void afterUpdate() { List opps = [SELECT Id, AccountId FROM Opportunity WHERE Id IN :Trigger.newMap.keySet()]; diff --git a/src/classes/TriggerHandler.cls b/src/classes/TriggerHandler.cls index 8fa9b4b..a4104de 100644 --- a/src/classes/TriggerHandler.cls +++ b/src/classes/TriggerHandler.cls @@ -22,7 +22,10 @@ public virtual class TriggerHandler { public TriggerHandler() { this.setTriggerContext(); } - + public TriggerHandler(String handlerName) { + this.handlerName = handlerName; + this.setTriggerContext(); + } /*************************************** * public instance methods ***************************************/ @@ -155,8 +158,12 @@ public virtual class TriggerHandler { @TestVisible private String getHandlerName() { - return String.valueOf(this).substring(0,String.valueOf(this).indexOf(':')); + if(String.isBlank(this.handlerName)) { + this.handlerName = String.valueOf(this).substring(0,String.valueOf(this).indexOf(':')); + } + return handlerName; } + private String handlerName {get; set;} /*************************************** * context methods