You need to sign in to do that
Don't have an account?
Walter@Adicio
where is this causing "attempt to de-reference null object" ?
i need helping finding why i am getting that error. and also is there a way i can identify the actual record causing it instead of the output just saying that error ?
public void doPhoneComparison(){ try{ // sf contact phone numbers map<string,string> map1 = new map<string,string>(); // phone numbers obj phone numbers map<string,string> map2 = new map<string,string>(); // get all contact phone numbers, there is going to be over 7000 integer i=0; ApexPages.addMessage( new ApexPages.Message( ApexPages.Severity.INFO , datetime.now() +' checking phone number field...')); ApexPages.addMessage( new ApexPages.Message( ApexPages.Severity.INFO , datetime.now() +' checking external phone numbers...')); // get all 'phone number' obj phone numbers for(Phone_Numbers__c p : [select phone_number__c from Phone_Numbers__c]){ p.phone_number__c = p.phone_number__c.replaceAll('-',''); p.phone_number__c = p.phone_number__c.replaceAll('\\(',''); p.phone_number__c = p.phone_number__c.replaceAll('\\)',''); p.phone_number__c = p.phone_number__c.replaceAll(' ',''); map2.put(p.phone_number__c,p.phone_number__c); } ApexPages.addMessage( new ApexPages.Message( ApexPages.Severity.INFO , datetime.now() +' comparing phone numbers...')); // compare the two numbers for(Contact c : [select id,phone from Contact where id != null AND phone != null]){ if(c!=null && c.phone!=null && c.phone.length()>0){ if(c.phone.contains('-')==true){ c.phone = c.phone.replaceAll('-',''); } if(c.phone.contains('(')==true){ c.phone = c.phone.replaceAll('\\(',''); } if(c.phone.contains(')')==true){ c.phone = c.phone.replaceAll('\\)',''); } if(c.phone.contains(' ')==true){ c.phone = c.phone.replaceAll(' ',''); } } // if (map1.get(map2.get(c.phone)) == c.phone ) if (map2!=null && map2.get(c.phone) == c.phone ) { // output matches ApexPages.addMessage( new ApexPages.Message( ApexPages.Severity.INFO ,'found match: contact phone ' +c.phone +' , external phone ' +map2.get(c.phone) +' ')); i++; } } // output count of records processed ApexPages.addMessage( new ApexPages.Message( ApexPages.Severity.INFO ,'matches ' +i )); } catch(NullPointerException e){ ApexPages.addMessages(e); } }
thank you JA-Dev i will try your suggestion about looking at the debug log.
i got rid of the error by making a string equal the phone number and then if the string is null i add '000000000' before working with the string. i.e.
string s = c.phone;
if (s==null){
s = '0000000';
}
then i work on 's'
All Answers
Doesn't it give you a line number? Anyway, try to output data by using System.debug('data you want to see goes here').
If I were to guess, I would say your first query is returning null values :
But again, since I can't see your data, I have no idea. Try to exclude null values in that query or see if there are records with null phone_number__c values.
thank you JA-Dev i will try your suggestion about looking at the debug log.
i got rid of the error by making a string equal the phone number and then if the string is null i add '000000000' before working with the string. i.e.
string s = c.phone;
if (s==null){
s = '0000000';
}
then i work on 's'