For example what is wrong in execute method so that I can't call methods identified in interface.
public class TriggerManager {
public interface ITriggerHandler {//TriggerManager.ITriggerHandler
void onBeforeInsert(List<sObject> newRecords);
void onBeforeUpdate(List<SObject> oldRecords, List<SObject> newRecords, Map<ID, SObject> oldRecordsMap, Map<ID, SObject> newRecordsMap);
void onBeforeDelete(List<sObject> oldRecords, Map<ID, sObject> oldRecordsMap);
void onAfterInsert(List<sObject> newRecords, Map<ID, sObject> newRecordsMap);
void onAfterUpdate(List<sObject> oldRecords, List<sObject> newRecords, Map<ID, sObject> oldRecordsMap, Map<ID, sObject> newRecordsMap);
void onAfterDelete(List<sObject> oldRecords, Map<ID, sObject> oldRecordsMap);
}
public abstract class TriggerHandler implements ITriggerHandler {
private void execute(Boolean isBefore, Boolean isAfter, Boolean isInsert, Boolean isUpdate, Boolean isDelete,
List<SObject> oldRecords, List<SObject> newRecords, Map<ID, SObject> oldRecordsMap, Map<ID, SObject> newRecordsMap) {
/*
if(isBefore) {
if (isInsert) onBeforeInsert(newRecords);
else if (isUpdate) onBeforeUpdate(oldRecords, newRecords, oldRecordsMap, newRecordsMap);
else if (isDelete) onBeforeDelete(oldRecords, oldRecordsMap);
}
else {
if (isInsert) onAfterInsert(newRecords, newRecordsMap);
else if (isUpdate) onAfterUpdate(oldRecords, newRecords, oldRecordsMap, newRecordsMap);
else if (isDelete) onAfterDelete(oldRecords, oldRecordsMap);
}
*/
}
}
public static void handle(TriggerHandler handler) {
handler.execute(
Trigger.isBefore,
Trigger.isAfter,
Trigger.isInsert,
Trigger.isUpdate,
Trigger.isDelete,
Trigger.old,
Trigger.new,
Trigger.oldMap,
Trigger.newMap);
}
}
What other items did I miss in this architecture?