trigger WS_MilestoneChange on pse__Milestone__c(before insert, before update, after update, after insert) {
Map<Id, pse__Milestone__c> updateMilestones = new Map<Id, pse__Milestone__c>();
WS_MilestoneChangeHandler handler = new WS_MilestoneChangeHandler();
handler.totalCount = Trigger.new.size();
handler.currItem = 1;
Map<Id, pse__Milestone__c> productMilestones = new Map<Id, pse__Milestone__c>();
for (pse__Milestone__c milestone : Trigger.new) {
productMilestones.put(milestone.WSC_Parent_Milestone__c, milestone);
}
productMilestones.keySet().remove(null);
handler.productMilestonesIds = productMilestones;
for (pse__Milestone__c milestone : Trigger.new) {
// ====================================================
// = ALL MILESTONE UPDATES
// ====================================================
handler.milestone = milestone;
handler.oldMilestone = Trigger.oldMap?.get(milestone.Id);
handler.operation = Trigger.operationType;
handler.handle();
milestone = handler.milestone;
updateMilestones.putAll(handler.updateMilestonesMap);
handler.currItem = handler.currItem + 1;
}
update updateMilestones.values();
}
Here is my Trigger code. I am receiving the PMD warning of Avoid logic in triggers (rule: Best Practices-AvoidLogicInTrigger)
. I have done everything I can to handle logic in the handler, however, the only remaining potential logic would be the safe navigator. However, even when I remove the line with the safe navigator the issue persists. Is the analyzer going through my handler? What is causing the warning?