You need to sign in to do that
Don't have an account?
Jyosi jyosi
Attempt to de-reference a null object in trigger
Hello Everyone,
I am getting this error
Class.ProductTrainingTriggerHandler.DuplicateCheck: line 45, column 1 Trigger.Repproducttraining: line 6, column 1 18:18:43.109 (109971433)|FATAL_ERROR|System.NullPointerException: Attempt to de-reference a null object
Below Is the Handler Class
public class ProductTrainingTriggerHandler
{
public void DuplicateCheck(List<Rep_Product_Training__c> ListProductTrainingValues, Map<Id,Rep_Product_Training__c> oldMap)
{
List<String> RepIds = new List<String>();
for(Rep_Product_Training__c ListRegistrationValue : ListProductTrainingValues)
{
RepIds.add(ListRegistrationValue.Contact__c);
RepIds.add(ListRegistrationValue.Name);
}
Map<String,Set<String>> RepProductTrainingSetMap = new Map<String,Set<String>>();
List<Rep_Product_Training__c> RepProductTraining = [SELECT Contact__c,Name,Training_Completion_Date__c
FROM Rep_Product_Training__c WHERE Contact__c IN :RepIds AND Name IN:RepIds];
system.debug('Error Values @@@@@@@@@@'+RepProductTraining);
if(RepProductTraining.size()>0)
{
system.debug('RepProductTrainingSize------------------->'+RepProductTraining.size());
for(Rep_Product_Training__c ProductTrainings:RepProductTraining)
{
if(RepProductTrainingSetMap.get(ProductTrainings.Contact__c)!=null)
{
system.debug('ProdcutTrainingName-------------->'+ProductTrainings.Contact__c);
system.debug('Rep Product Training Value'+RepProductTrainingSetMap.get(ProductTrainings.Contact__c));
if(ProductTrainings.Name!= null)
RepProductTrainingSetMap.get(ProductTrainings.Contact__c).add(ProductTrainings.Name);
system.debug('Values=================>'+RepProductTrainingSetMap.get(ProductTrainings.Contact__c).add(ProductTrainings.Name));
}
else{
if(ProductTrainings.Name != null)
RepProductTrainingSetMap.put(ProductTrainings.Name,new Set<String>{ProductTrainings.Name});
}
}
for(Rep_Product_Training__c ListRegistrationValue : ListProductTrainingValues)
{
if(ListRegistrationValue.Name != null){
if(RepProductTrainingSetMap.get(ListRegistrationValue.Contact__c).contains(ListRegistrationValue.Name))
ListRegistrationValue.Name.addError('Duplicate value entered!');
}
}
}
}
}
Trigger Class
trigger Repproducttraining on Rep_Product_Training__c (after insert,after update,before Update,before insert)
{
ProductTrainingTriggerHandler ProductTriggerHandler = new ProductTrainingTriggerHandler();
if(Trigger.isBefore || Trigger.isUpdate)
{
ProductTriggerHandler.DuplicateCheck(Trigger.New, Trigger.newMap);
}
if(Trigger.isInsert || Trigger.isBefore)
{
ProductTriggerHandler.DuplicateCheck(Trigger.New, Trigger.newMap);
}
}
Can you please help me tp fix
Thanks
Regards,
Jyo
I am getting this error
Class.ProductTrainingTriggerHandler.DuplicateCheck: line 45, column 1 Trigger.Repproducttraining: line 6, column 1 18:18:43.109 (109971433)|FATAL_ERROR|System.NullPointerException: Attempt to de-reference a null object
Below Is the Handler Class
public class ProductTrainingTriggerHandler
{
public void DuplicateCheck(List<Rep_Product_Training__c> ListProductTrainingValues, Map<Id,Rep_Product_Training__c> oldMap)
{
List<String> RepIds = new List<String>();
for(Rep_Product_Training__c ListRegistrationValue : ListProductTrainingValues)
{
RepIds.add(ListRegistrationValue.Contact__c);
RepIds.add(ListRegistrationValue.Name);
}
Map<String,Set<String>> RepProductTrainingSetMap = new Map<String,Set<String>>();
List<Rep_Product_Training__c> RepProductTraining = [SELECT Contact__c,Name,Training_Completion_Date__c
FROM Rep_Product_Training__c WHERE Contact__c IN :RepIds AND Name IN:RepIds];
system.debug('Error Values @@@@@@@@@@'+RepProductTraining);
if(RepProductTraining.size()>0)
{
system.debug('RepProductTrainingSize------------------->'+RepProductTraining.size());
for(Rep_Product_Training__c ProductTrainings:RepProductTraining)
{
if(RepProductTrainingSetMap.get(ProductTrainings.Contact__c)!=null)
{
system.debug('ProdcutTrainingName-------------->'+ProductTrainings.Contact__c);
system.debug('Rep Product Training Value'+RepProductTrainingSetMap.get(ProductTrainings.Contact__c));
if(ProductTrainings.Name!= null)
RepProductTrainingSetMap.get(ProductTrainings.Contact__c).add(ProductTrainings.Name);
system.debug('Values=================>'+RepProductTrainingSetMap.get(ProductTrainings.Contact__c).add(ProductTrainings.Name));
}
else{
if(ProductTrainings.Name != null)
RepProductTrainingSetMap.put(ProductTrainings.Name,new Set<String>{ProductTrainings.Name});
}
}
for(Rep_Product_Training__c ListRegistrationValue : ListProductTrainingValues)
{
if(ListRegistrationValue.Name != null){
if(RepProductTrainingSetMap.get(ListRegistrationValue.Contact__c).contains(ListRegistrationValue.Name))
ListRegistrationValue.Name.addError('Duplicate value entered!');
}
}
}
}
}
Trigger Class
trigger Repproducttraining on Rep_Product_Training__c (after insert,after update,before Update,before insert)
{
ProductTrainingTriggerHandler ProductTriggerHandler = new ProductTrainingTriggerHandler();
if(Trigger.isBefore || Trigger.isUpdate)
{
ProductTriggerHandler.DuplicateCheck(Trigger.New, Trigger.newMap);
}
if(Trigger.isInsert || Trigger.isBefore)
{
ProductTriggerHandler.DuplicateCheck(Trigger.New, Trigger.newMap);
}
}
Can you please help me tp fix
Thanks
Regards,
Jyo
What is on line 45 in your ProductTriggerHandler class? Most likely the property you are setting has not been initialized.
Tyler
if(RepProductTrainingSetMap.get(ProductTrainings.Contact__c)!=null)
{
system.debug('ProdcutTrainingName-------------->'+ProductTrainings.Contact__c);
system.debug('Rep Product Training Value'+RepProductTrainingSetMap.get(ProductTrainings.Contact__c));
if(ProductTrainings.Name!= null)
RepProductTrainingSetMap.get(ProductTrainings.Contact__c).add(ProductTrainings.Name);
Change
RepProductTrainingSetMap.get(ProductTrainings.Contact__c) != NULL
to
RepProductTrainingSetMap.containsKey(ProductTrainings.Contact__c)